Is there a way to autoupdate blender?

People working on a payed project nearing completion will certainly love to have a new Blender version forcibly installed beneath their asses.

It would be pretty interesting if Blender supported a build in one of those many auto-updating services, like Steam or Desura. For some reason games have been great about supporting integrated, unobtrusive auto-updates. Other software not so much. I’m sure there’s a good technical explanation but hopefully things will change.

@Luftmensch, because updates sometimes drop support for features you might be using in a project, or api changes might break an addon you have installed.

  • Typically its not a great idea to update while your in the middle of a project.

Wouldn’t it be more sensible to have a little RSS reader that reads an RSS on blender.org(like this one: http://feeds.feedburner.com/Blender3d ) and then shows the last item-headline on that feed in the opening screen? Then the end user reads that headline every day(or two days for those night-renderers) and will inevitably see when the foundation announces the release of a new version, then they can choose to click on that and update or ignore it because they are in the middle of an important project.

Considering the success of auto-updates for software on Steam and even more so on iOS/Android, I highly doubt it’s simply common courtesy. Also considering how half the personal computers in the world seem to have a dozen separate update clients running at all times and cluttering the taskbar, I think it’s a feature that more people want but there’s just no good universal solution.

Of course there’s always the cranks who shun updates, you have to accommodate them, but for the rest of us we’ve managed to build an earned trust with developers over updates.

bpy.app.build_platform can be used to determine what kind of blender binary is installed. An auto-downloader should pick the setup for same os and bitness.

But the it’s getting complicated:

  • How to find out which is the latest stable version? (searching the release folder would work, but also needs to check for e.g. testbuilds inside a version folder)
  • How to not lock blender until query finished or timed out? (is writing to an object or property from another thread save?)
  • Which mirror should be used? (Tough one, could always use official NL server)
  • How to download the file? (python got curl or similar for sure, but using such would mean to freeze blender ui until transfer is completed)
  • How to verify if it’s authentic? (There are only hash values for the source code bundle afaik)
  • How to install the new version? (a bpy script would need to create a new process and terminate blender (saving???), then that process would have to run the setup - sort of intrusive and might fail for A/V)

There could just be a button to open the download page when there’s a new version, but scrolling to the relevant build will not work, see:


It’s actually the Windows 32bit build, link has bad id.

A lot of software just makes updating optional in this case. You would simply have a menu item labeled ‘Check for updates’ and it will check the blender.org site to see if you would like to download and apply any new update that is available. Jpb06 does have a point in not forcing any potentially breaking updates in the middle of a big project when you open Blender, that is why it would need to be an option.

CoDEmanX & friends:

For non-blocking processing, threads should be ok, unless Blender doesn’t allow threading from Python. One can also create a nonblocking subprocess if threading is an issue. Downloading is actually easy from Python, urllib and urllib2 are your friends. And to get the latest availablle, you can have a symlink on the server named “latest” (possibly suffixed with platform info, unless that is encoded in the directory layout) that always points to the latest binary.

The tough issues IMHO are the signature/validation of the downloads and mirrors. Users really wouldn’t appreciate malware being installed instead of Blender. Checksumming the packages isn’t enough if you verify the checksum against the value provided by the server. You must also verify the server. Can HTTPS be our friend? I don’t have a clue!

By the way, the update script probably must also be verified! This might be part of a larger script-signing project.

On the user-side, the script should never install anything without user approval. This means that if there is a new version, the user gets notified and proposed to update. If the user accepts the update it might be preferable to fork into a dedicated process to avoid problems with open file handles. We can then update shared libs and blender.exe with no problem. The main drawback is that there is no way to give graphical feedback to the user, stuck to text. If instead of forking the update is performed in a thread, then the GUI is available for feedback. However, the user might kill blender during an update, etc… Open file handles can certainly be handled somehow.

My few thoughts.
Daniel

Too complex to check from time to time Blender.org? Bet you need an app to be reminded when to go to the bathroom…

Actually, it doesn’t:
http://www.blender.org/documentation/blender_python_api_2_68_5/info_gotcha.html#strange-errors-using-threading-module

@jpb06: So what if he indeed uses an app to be reminded such tasks? How does that bother you? If you don’t need the app, just tick the checkbox “don’t bother me again, I know when I need to go there”.

I disable most updaters in windows but I find it rather pratical when the apps I want at least tell me there is something available. In linux (my main OS) I’m mostly on the edge because there are the performance/efficiency/functionnality improvements.

Daniel

Yup. In 2013 I don’t like to excuse software for expecting me to do something that has no reason not to be automated, and I don’t have the time to manually check a hundred different developer webpages for updates on every single program I use. My time is actually more valuable than that.

But I guess that goes with the old saying about Linux: It’s free if your time is worthless!

@Luftmensch, Id consider this out-of-scope for Blender, if your on Ubuntu you can use a PPA, on Arch-Linux I get new releases as they are made, OSX FreeBSD and MS-Windows have package managers you can install though Im not sure how good they are.

If someone wants to do an addon for this, its quite possible - just launch blender as a subprocess and have it report back when done, no need for tricky threading. But I would guess this is a hassle to get working well for all platforms and I don’t expect anyone to take up the challenge of doing this kind of project.

Yeah but a remider in the splash screen isn’t that big deal. With some info of wath’s new. Something like this “a new release of blender is out! Check it’s new features. You can download it here link”. It’s realy nothing fancy and nothing harmful. It’s such a small thing that probably it would take faster to code than this disscusion took time. I would do the coding if I could but I’m can’t. Don’t think it needs making a survey or a promo video in Andrew Price style (btw thanks Andrew for that, wonder if google alert will let him know about that :slight_smile:
Btw the splash screen could have a bit more things but thats a diferent topic.

I’m intrigued how updates are out-of-scope for blender while being in-scope for Creative Cloud, Firefox, video games, &c. Dealing with a package manager is probably something I should be doing anyway but the fact one has to go out of his way even just to be notified of updates is silly.

For casual users who open blender and start a new/small projects or just follow tutorials, or users who stick to basic polygon modeling, your probably right.

For larger projects… this comes down to blend files being much more closely tied to the blender version then any of the examples you give.

If a website renders a little differently one day - you probably wont notice, even a small glitch likely wont make the web browser useless, the same for a game — as long as you can load the save games, changes to the shaders or even models - wont really impact you negatively.
Games and web pages aren’t so much content creation tools you interact and view mainly.

As for creative-cloud, I would argue that most of their tools are less complicated then Blender in the way they interact with their fileformats (feel free to correct me here).

With complex 3D applications with changing API’s, tools, new features, rewritten features - the risk that an updated version will break a file increases. And the definition of what a break may be depends on the use case, having read over bug reports for some years now - even seemingly harmless changes may break a users workflow (even bugfixes).

Say there is a bug fixed in Cycles SSS, Now any frame which is rendered will look different from the previous,
if you work in animation (which is a common use for Blender), you can’t risk waking up the next day and having your render look different otherwise your animation flickers and you need to re-render those frames (with clients+deadlines this is a risk).

If you depend on a custom addon your company maintaines and some change in Blenders API (not necessarily a break - subtle change in behavior even) - may stop the addon from working, so you can’t get work done.

Further, sometimes features in Blender are removed, Imagine you work on a project some years back that used the old particle system, wake up, start editing your models, resave… then a day later switch to the Scene in that blend where all the particles where stored - and its totally different, the data you had is now lost because you saved over it.
Same goes for compositor rewrite, bmesh… we may get another particle system rewrite that uses nodes in the future so this kind of problem isnt likely to stop.

Most Linux distro’s have these, and modern commercial OS’s are integrating app-stores which can handle updates AFAIK.

edit:
@masluch - agree, opt-in-updates could work.

It’s kind of a sad state of affairs that applications have to provide their own ways of updating.
A centralized way of doing it for all applications provided by the OS is the proper way imo.
As mentioned here before linux has package managers and others have some sort of app store, but both aren’t really ideal.
In the case of linux we don’t have control over the updates and app stores usually have silly problems like license issues.

Anybody that has been around here long enough knows already about the need to test the Official builds because if enough hasn’t been tested in RC, the Official release ends up having a few bugs that require an ‘a’ or even ‘b’ release. Even something simple like Ideasman42 mentioned can cripple you if you don’t have the knowledge of that problem and you use it on work files. For that purpose, I keep a few different builds from zip files installed in a directory so I can test the new stuff while I continue work in the stable build, not taking chances on double working a project.