I Hereby Agree to Every Future iTunes Update

All software should work like Chrome and install fixes silently.

In April, two programmers reported that iPhones appeared to be constantly tracking their owners’ physical location. Wherever you went, your phone seemed to jot down your latitude and longitude and store that data indefinitely. Apple quickly issued a clarification: Actually, the iPhone is logging the location of Wi-Fi routers and cell towers that are nearby its users in order to help the device quickly find itself on a map. The company knew this wasn’t a very comforting message, and it promised to issue a software update that would encrypt this information and reduce the length of time that your phone saved it.

The software update for iPhones and 3G iPads, which also recorded locations, went out to customers on May 4. I was eager to install it until I saw the size of the file that Apple wanted me to download: 662 megabytes. The fix in question probably involved changing no more than a few dozen lines of code, and yet Apple wanted me to download and reinstall the iPhone’s entire operating system—a file the size of a full-length movie. With the average American broadband speed of 5 Mbps, it would take more than 20 minutes to download the iPhone fix and another five or 10 to install it. Was it worth it? I decided to give in, but I bet many people didn’t bother. When you consider the time, effort, and broadband space you’d need for such a simple fix, it almost seems preferable to just let your phone invade your privacy.

The iPhone’s humungous update wasn’t an anomaly. We’re drowning in updates. Every time I go to use my computer, phone, or tablet, something wants to freshen up. Adobe has discovered yet another critical error in Flash and Java is promising fabulous new features just behind the download button. OK, I’ll do that. But hold on, now Windows needs attention. Turns out there are five “important” updates and 40 “optional” waiting to be installed. OK, I guess I’ll cancel my morning meetings. Or wait, let’s cancel the whole day, because now my MacBook Air wants me to download half a gigabyte of fixes, and then there are about two dozen iPhone apps that need refreshing. Oh damn, let me just take the whole month off, because it looks like iTunes is ready for another update, too. It’s only the fourth one this year.

In theory, this is a good thing. I’ve gone on record praising our era of Internet-updatable devices. Updates breathe new life into old stuff. Thanks to periodic downloads, the phone you bought three years ago keeps getting better. When a hacker locates a chink in Windows’ armor, Microsoft can plug that hole reasonably quickly. But the update wagon has gotten extremely overcrowded. Software companies are sending out too many updates, these updates are getting ever-larger, and the payoff is usually unspectacular. Twice over the last year, I’ve turned on my TV to discover that it, too, was in the process of updating itself. True, no single update is especially onerous by itself—10 minutes to get the new iPhone OS isn’t going to ruin your day—but with every app on every device prompting you for an update on a regular basis, you start to expect to have to wait 20 minutes every time you turn something on.

We need a new way to update our stuff. Fortunately, there’s a great model for how every app should handle updates—Google’s Chrome Web browser, which has made updates completely invisible and totally painless.

Chrome updates itself automatically, constantly, without asking for permission. Google calls this “silent updating,” because Chrome applies the new code in the background, where you won’t notice (unlike the way many programs, including Firefox, ask you to hold on while it refreshes and then demands to be restarted). As a result, every time you start Chrome, you’re running the latest “stable” version available. (You can choose to get even newer versions by signing up for Chrome’s beta track.) Chrome’s painless update process is the product of a lot of sophisticated software engineering. Rather than reinstalling the whole program, Chrome’s designers have figured out a way to update the ones and zeroes in the program on your computer just where it has changed. This approach dramatically reduces the size of the files they send to your computer during an update. “It is an anathema to us to push out a whole new 10MB update to give you a ten-line security fix,” Stephen Adams, a Chrome software engineer, wrote in 2009. Instead, the update system compares the version of Chrome you have on your computer to the new one sitting on Google’s server, and then it sends you only the key differences in code. A 10-megabyte update can be reduced to a tiny, 78K download. In a recent post praising Chrome’s update system, Coding Horror’s Jeff Atwood argued that Chrome had “transcended” the very notion of “software versioning.” Chrome updates so quickly that its version number might as well be infinity.

Why don’t all updates work like this? Blame manners and lawyers. Asking permission has always been good policy in software. If a program is going to download lots of code and make huge changes to your computer, it’s considered a good idea to ask for permission first, especially if that update is going to inconvenience you while it installs itself. (And some platforms enforce this: Apple screens every update for iPhone and iPad apps, and updates can’t be installed without a user consenting through the App Store.) Sure, the idea of software dialing home to get updates without asking seems shady, the kind of thing you’d expect from malware. The legal aspect is also important: As any piece of software balloons with new features, company lawyers inevitably come up with new provisions over that software—so you’ve got to pause to sign a new agreement. *

There are some people who are bothered by Chrome’s silent updates—there are several threads on the Chrome’s support discussion forum in which people demand that Chrome allow them to opt-out of updating. I’ll join that call; you should be able to turn off auto updates if you want.

But I’m not troubled by Chrome’s system. In fact, I’d be much happier if all software copied Chrome’s method. If I could, I’d allow iTunes, Windows, my Mac, my iPhone, Flash, and probably everything else on my machine to keep themselves up to date. It’s not as though I’m doing anything other than clicking “OK” right now—I’m not carefully auditing the new code for errors. Ideally, all designers would steal Chrome’s method of reducing download sizes, and they’d install fixes without ever interrupting me. Even better, software should wait until it detects that I’m not doing something important and then apply the fix. When that Utopian future arrives, I’ll be sure to update this article.

Correction, May 31, 2011: This article originally stated that the iTunes license agreement is 79 pages. The sentence has been removed. ( Return to the corrected sentence.)