The Auto-Update Problem

December 11th, 2007

If it’s a good idea, go ahead and do it. It is much easier to apologize than it is to get permission.

- Admiral Grace Hopper

Auto-updating software is neat. It saves the customer from painful manual updates, and it helps the vendor by keeping people up-to-date with their software.

Unfortunately, the auto-update feature got off to a bad start in UI. Due to mindless follow-the-leader mentality, it’s had a hard time recovering ever since.

Case in point:

While this is an extreme case, it also illustrates a problem that we’ve all had with auto updates, namely how they manage to interrupt at the most inopportune times.

The problem boils down to 2 factors: a) permission, and b) timing. A little forethought solves both problems fairly easily, but bad precedent of previous implementations casts a long shadow.

Programmers often get snagged on the concept of permission. The (non-conscious) line of thought is: we wouldn’t want to disappoint someone, so let’s make sure it’s OK before we proceed. What’s missing is opportunity cost: people like having their chores done for them. By thinking that doing-without-consent is risky, we miss the opportunity to make the customer to be pleased as punch that someone is quietly getting-things-done for them.

Early on in the history of software auto-updates, someone decided that it was very important to interrupt the customer to make sure that they don’t object to having their software updated. Early versions of auto-updates went something like this:

  • start the app
  • app says, “Updates to your software may be available. Would you like me to go check?”

First off, how lazy! This comes straight from the playbook of how to ruin your career: when a simple but helpful task needs doing, check with your manager before doing anything. He or she will be impressed with the amount of reassurance and micro-management you require.

At some point someone realized, “hey, that’s kind of annoying.” And thus the auto-update question was no longer asked on startup, but instead asked at some random time on some random interval — but the same time and interval each time, so as not to be confusing.

Did you see the bait-and-switch? The problem was with asking too much permission. But “fix” was to change the timing. I quoted the word “fix” because the solution didn’t improve things much. We went from an annoying every-time-I-start-the-app question to an annoying randomly-interrupt-me-in-the-middle-of-my-workday question.

After a while, someone made the startling realization, “hey, we could check for updates automatically!” No doubt someone objected that permission should be asked first, but thankfully the objections were overridden. So now we have: randomly-interrupt-me-when-updates-are-available. Which is better. And this is pretty much state-of-the-art for auto-updates these days.

But we’re not quite there yet, are we?

So what to do?

  1. Just grab the update already! Beg forgiveness rather than ask permission.
  2. Don’t interrupt me while I’m working! Wait until the next time the app is started, then perform the update and let your customer know what you’ve changed.

So now we’re at: annoying-interruption-on-startup-only-when-updates-have-been-made. But how annoying is the interruption, really? Presumably you’ve got great new features for your customer that they’ll be happy to hear about. Perhaps rather than being annoyed, your customers will feel pleasantly surprised by the gift of new features they’ve received this morning. Your software just made their lives easier, on multiple levels.

Still sound too aggressive, too risky? Consider this: there’s already strong precedent for the auto-update process I described, just not on the desktop. It’s on the web. Websites don’t ask permission before updating the software. (They can’t, really.) In some cases, when the updates are really big, they might let you know about the changes your first time in. (And occasionally they may provide a graceful “downgrade” to the old version if you protest.)

But most of us never really noticed this subtle distinction between desktop and web auto-updates. That’s because we’re too sympathetic to the underlying technology. But when we wipe the technical details away (as we should when designing our UIs), the truly-auto-update isn’t so scary after all, now is it?

2 Responses to “The Auto-Update Problem”

  1. Jonathan Field Says:

    As always Dr. Mix, a nuanced understanding of UI issues.

    I did just have a bad experience with an “auto” update whereby I installed Quicktime 7.3 only to find that it broke several plug-ins and basically caused a lot of needless trouble. So of course, this proves that your proposal is wrong, and true auto updates would be bad!

    Except it _wasn’t_ a true auto update. It was the kind you described that popped up randomly and asked for my permission before installing. And of course I gave permission because I generally don’t have any knowledge if an update will be bad. The fact is, I’m unqualified to make the determination, so asking me doesn’t provide any protection: I approved the lousy Quicktime 7.3 update. It just helps place the blame for such trouble on me, the user.

    The only time I ever refuse to update when I get a permission popup is when I don’t feel like waiting for the update to install. Of course if it just did it in the background, as you suggest, that problem would be solved too.

    My only suggestion for improvement over what you suggest is a rollback option, so that if the update does introduce problems (rare, but it happens) I can roll back to the previous version.

    I agree that the current setup, where it bugs the user to approve something they probably have no way to judge, and then provides no “undo”, is pretty ridiculous.

    Keep fighting the good UI fight :)

    And hey: Merry Christmas!

  2. Neil Says:

    Great point! Rollback is a definite must. (Even better — don’t write bugs! Yeah right.)

Leave a Reply