At the C4 conference, I ran into David Teare, who publishes the 1Passwd utility, and I complimented him on how smoothly 1Passwd updates itself. Although it does have to interact with the user to quit open browsers (since 1Passwd is a browser plug-in), the rest of the process is nearly seamless. When you launch the 1Passwd application and an update is available, it displays a window showing release notes for the latest version, nicely color-coding the headings for new features, changed features, and fixed bugs. You’re given the choice of being reminded of the update again later, if you’re too busy to think about it, skipping the update entirely, or installing it. If you choose to install the update, 1Passwd automatically downloads the new version, copies it over the old one, and relaunches itself to load the new code. It’s ever so easy.
When I expressed my admiration for his update process, David looked a little embarrassed and said, “Oh, that’s the open source Sparkle. We just added it to 1Passwd.” Not being a developer, I’d simply never run across Sparkle before, so I went spelunking for it on the Web. It turns out that Sparkle is used in a large number of applications, including SubEthaEdit, iStumbler, MarsEdit, and nearly 200 other Macintosh programs.
From what developers at C4 told me, and from what I see on the Sparkle Web site, it’s a well-thought-out implementation of self-updating. Most important, the user doesn’t have to do anything at all, although it’s more common (and generally more respectful) to give the user the option of updating at a later time. Sparkle displays release notes in a detailed update status window via WebKit, supports DSA signatures for secure updates, and can extract updates from a number of different archive formats. Also key is the fact that Sparkle integrates into applications seamlessly and can be added to an application without any code whatsoever (it’s all done via Interface Builder and plists). Although Sparkle itself works only in Cocoa applications, a separate version has been created for use in Carbon applications.
I of course realize that most people reading TidBITS are not developers with applications that need self-updating capabilities, but I’ll bet that almost all of you have had to deal with the usual upgrade rigamarole: learn about an update (perhaps from the application, perhaps elsewhere), go to its Web site, find the right page, download and expand the file, copy the new version of the application over the old one (quitting first, if the old application was active), launching the new version, and then cleaning up all the downloaded files.
It’s not rocket science, but it is tedious and time-consuming. The only good part about it is that you remain in control the entire time and can decide when to install the update, whether to keep the old version of the application around, and if it’s worth keeping the downloaded archive as well. Realistically, the main downside of self-updating, whether done through Sparkle or any home-brewed mechanism, is that you would have a hard time reverting to the previous version if the update suffered from some unexpected problem.
So, if you’d like the applications you use on a regular basis to update themselves with a minimum of fuss or interaction from you, much as happens with Mac OS X and Apple’s applications via Software Update, tell the developers to check out Sparkle. It’s free, it’s easy, and it’s a boon to users everywhere.