One feature that I really want to see in Overgrowth is an auto-update system.
Each week we release a new Overgrowth alpha. Since there is no incremental update system in place, those ~500 megabyte zip files really add up. We use a content distribution network, so the download speeds are always super fast around the world, but still, this is not ideal. Namely, it's inconvenient for people, it costs us a lot of money to host these files, and some people have aggressive download caps or slower internet connections.
So, we need some kind of solution! Enter the auto-updater. Ideally, Overgrowth would be smart enough to figure out when it's out of date, figure out which files it needs, and then automatically and efficiently download these files and update itself.
Writing a good auto-updater is non-trivial, but I think we're up for the task! The first step is to define a solid UI, so we know what we need to build. On Mac OS X, Sparkle is the canonical way for Cocoa applications to update themselves. Over the years, I think that Andy Matuschak and contributors to the project have ironed out all of the best practices for a non-evil self-updating system. Therefore, we've been heavily inspired by Sparkle's UI for Overgrowth.
As usual, this UI was created with graphic design help from the awesome Iiro Jäppinen.
The first step is to check to see if your copy is up to date. This window will only be shown on manual update checks, otherwise it happens in the background. The "barber" progress bar looks really cool when it animates. If an update is found, the window animates into the next step:
This is the meat of the UI. It tells you what's new in the various updates and asks you what to do (assuming you haven't set it to automatically install updates). You can't tell from the screenshot, but the "Install Update" button pulses like in Mac OS X to indicate that it's the default.
If "Install Update" is chosen, our server will calculate which files you need based on your version and send them to you. When the download is finished, they are extracted and ready to install!
I've uploaded the source of the UI in the secret preorder forum for people who want to mess around with it. That will better show off the cool animations and transitions and let you see how it works. Feedback is appreciated!
The next step is to write the server backend and the Overgrowth client code.(permalink)