Ten commandments of update services

I’m getting increasingly annoyed with update services shipped with popular applications. It’s looks like it’s getting worse and worse, and I think someone should stand up and say enough is enough.

Let me start by showing when updates go wrong:

Adobe Update

I start Adobe Fireworks because I want to resize an image I have. After it has started and the image has loaded the update service prompts me that there are new updates available. For what? It doesn’t say, so I click more info and get a list of things. Strange: None of them seem related to Fireworks.

The update starts, and tells me I have to close Fireworks to complete it. Bah, I just started it! I’m trying to resize an image here, remember? But Ok, this time. Next it tells me to close Firefox. What?! All my precious tabs I’ve saved for later reading! Bitches.

The download begins, and the progress window takes focus over the other stuff I’m doing while not looking at the progress bar. *Repeated clicking to hide the window*. Then when it’s done it takes focus again, and asks me to click the only button available. GAH?!

Ok, done. Why was I starting Fireworks again? And hey, what’s those new PDF icons doing in my Links toolbar in Internet Explorer?

Google Update

Oh, a new web browser: Google Chrome, I surely want to try it out. *Couple of hours of fiddling*. Nah, I still like Firefox more, I’ll go back to using that one. Wait, what’s that GoogleUpdate.exe process doing there? I’ll try closing Chrome. Nope, still there. Ok, I’ll force it to close. Hmm, it restarts after a while. Ok, must be some kind of process that starts with Windows. Ah, registry setting, lets remove that one. *Reboot*. Still there?! Ah, they also installed it as a service. Lets remove that too. Finally!

What’s that? A new version of Google Gears! *Installing*. Hmm… What’s that GoogleUpdate.exe process doing there? GAH! What were you thinking Google?!

Microsoft update

I really should make sure my OS is up to date. Lets go to the windowsupdate website. What? I need to run IE5 or later? Ah, no Firefox support, damn it. Lets switch browser. Ok. Install validation thingie? Ehm… I guess I have no choice. *Waiting*. Ok, now let’s see if there’s some updates, Express or Custom? Custom, of course. *Waiting quite a long time*. Why are you making me look at a progress bar? Ok, no OS upgrades, but there’s some update to Windows Media player. Yeye, I guess it couldn’t do any harm (not that I use that one). Trust ActiveX thingie? Yeye, I know what I’m doing. *Waiting some more, with focus stealing*. “Please restart your computer to complete the installation”. Sigh.

So why don’t I just use Windows Update program instead? Well, there’s a window that pops up every 5 minutes that remind you that you have to restart the computer. Do you know how annoying that one is? No, it’s MORE annoying than that.

Ten Commandments of Update Services

So I hope that’s enough evidence that big companies have no idea how do conduct a decent update of their own program. So let me offer some (free of charge) advise:

  1. If your update is web based, let me use any modern browser I want. Don’t start by getting me annoyed.
  2. Check for updates right before the program starts. I know that you want me to close the app while it’s being updated, but why on earth do you let me start it then? Lets keep it simple, update before the program starts, and resume starting the app when you’re done.
  3. Don’t leave processes running in the background when I close the program. When I close your program, I don’t care about you, or any updates to your program.
  4. Only update the current program, not bundled ones. I know you want me to have the latest versions of all your programs, but odds are I don’t even use them. Update those programs when I start them, not now.
  5. Show me what gets updated, and if possible link to a change log. If you want me to download 70 Mb you need to first talk me into why I need it. You may want to hide detailed info for inexperienced users, but could you please then remember that I’m not one of those?
  6. If it’s a tiny update (less than 1 Mb), you can just go ahead and install right away. You don’t even have to prompt me.
  7. Download and install in the background, without stealing my focus. If you’re shipping a big pile of fixes (ie. the version I bought was not done), you have to let me do other stuff while you update. Like surfing the web. It’s not Ok it require that I close unrelated programs, sorry.
  8. Never ever touch my browser bookmarks. Never add things to the quicklaunch bar. Never make things start automatically unless I’ve told you that’s what I want (why do most people have a Quicktime icon in their systray?). The only way of getting into my bookmarks or my quicklaunch bar is writing a really good application. You can’t force me to like you. The opposite works well though.
  9. Never require me to restart the computer. There’s only one exception for when you may: when I’m updating the operating system. No excuses.
  10. When you’re done, just start the program. I don’t want to confirm anything, I want to get to work using your app.

(Bonus point from James Socol in the comments: 11. Use incremental downloads, so I don’t have to download stuff I already have installed.)

If you are a software company, and can’t manage the above, just do it the old fashion way: let me manually download a file from your website. That will annoy me much less than a bad automatic process. Or if you want things to be really convenient: write a web application instead.

Now get to work. I’ve had it.

20 responses to “Ten commandments of update services

  1. The probelem is, of course, that there isn’t an update service in windows that apps can hook in to. And the reason for that is that, as far as I can see, there is no package system in windows!

    You install a program, it just leaves its files all over your disk, and if you are lucky there is a specific program to uninstall the program — and if you are really lucky, there might even be a specific program for updating related software.

    And here you are complaining about the fact that those updating systems, in the rare and good case where they exists, sucks …

  2. I agree with most of your commandments, but some might be problematic:

    #2 – If the app has to wait for the update check, the entire startup process is slowed down. My suggestion is to check on startup (and then periodically), but include “Remind me when I close the app” and/or “Remind me in x minutes” options. Then again, some security issues should be fixed ASAP (browsers, Flash, MS Office, etc.). This is why I can understand Microsoft’s restart nagging.

    #7 – There has to be a reason for having to close Firefox. Perhaps it was updating a Flash component and Firefox was using it? Still, with some effort they could probably create a method to tell browsers to stop using Flash while it’s updating. or something. Similar story with #9.

    BTW, about losing your tabs in Firefox, you can always restore the browsing session (I guess you need yet another extension to do it “the Mozilla way”).

  3. You write like you’re ready to switch to an OS with apt. (or any other OS with a modern package manager).

  4. Like Rotem said, the startup check would slow it down. Maybe a choice “Check for updates before starting” or “Check for updates before closing” or “neither.”

    But one other thing: 11. Roll sequential updates so I only need to download one. If I have version 1.0.0, and the current is 1.0.3, I shouldn’t need to download 1.0.1 and 1.0.2 separately. Hell, even if I have v1 and the current version is v3, there should be a single download.

  5. @Rasmus Kaj: I see what you mean, but apt-get isn’t much better than the ones I describe. An update service shouldn’t update stuff I don’t care about, most linux based update systems does that. So here I am, wanting to make stuff better :)

    @Rotem: #2: If you limit that to a single HTTP request to a certain URL, that shouldn’t take more than a second. If you only make that request once a week, few will even notice.

    #7: If there is a good reason, then I agree, please restart my browser. I fear that most often there isn’t a good reason. Lets say someone finds that closing Firefox prevents stopping some extension working properly. Is that I reason to require a restart? I think not, but update services seems to always assume that as soon as some tiny problem gets solved by restarting, lets do it.

  6. @Chris: Well, does apt get any of the ten points right?

    @James Socol: About startup time, see my previous answer. Point number 11, great addition, added to the list!

  7. Slow it down? It takes some part of a second for Firefox to check for updates for both itself and every extension installed… They should be able to trump that, shouldn’t they? They could also limit it to once a day if you’re afraid of having issues with startup time.

    Windows and boxes that regularly pop-up and get in the way just trains the user to close any similar things without giving it a second thought.

  8. Woah, I write too slowly…

    About apt-get/aptitude/Synaptic (GUI “version”)
    1. Not web based.
    2. N/A checks whenever you set it to check, or manually if you prefer that.
    3, 4. N/A
    5. Depends on the package but most often there’s a lot of info and there usually are a list of buglinks.
    6. You can set it to install security updates, all updates or no updates automatically.
    7. Downloads and/or installs in the background, depending on your settings. (It does it in the background, but you can chose if you want to manually install what id downloads)
    8. I’ve only ever seen commercial apps do this without having a checkbox that is unchecked by default.
    9. From my experience only kernel updates and some driver updates (graphics card) require a restart. It also tells you when a specific program need to be restarted, after the installation is made.
    10. Well, it restarts the applications, so yeah…
    11. Afaik, it does that.

    This is based on experience and not knowledge so there might be a few misconceptions of mine in there.

  9. @exec: The problem with your list above is that many of the options contain a “manually”, “you choose”, “your settings”. I know this is the foundation of linux, letting people choose, but I don’t think you should have to choose how you update your program. I know I don’t want to. I want to use the damn program.

    Also, from my experience of Ubuntu, it does not update by program, rather a large batch of updates for all your programs, with an icon in the taskbar which (naturally) says there’s updates all the time (since there are, I just don’t use telnet-SSL-config-kerbal-widget-gadget ever).

    The Linux way is far from perfect (not saying that’s what you where implying).

  10. @Emil:
    huh … let’s try:
    1. n/a
    2. n/a (update check is independent from program)
    3. yup.
    4. n/a (update check checks everything)
    5. yup.
    6. nope.
    7. yup.
    8. yup.
    9. yup. Only Kernel updates require restarts.
    10. n/a

    By the way. One of the biggest annoyances at all are programs that steal focus. I really hate it (it’s great typing credentials in chat windows because chat client just finished starting. haha)

  11. It annoys me that some programs install updaters that now have to load at boot time, but as long as they’re slow I can live with it. I understand there’s no standard API they can hook into. But don’t you dare slow down my boot time!

    Next, how bout you check for updates when the screensaver is running! I leave my work and home computer running 24 hours a day most of the time (not weekends). It runs BOINC and other jobs during that time. For the hours I’m using it, I want its undivided attention. When I’m not using it, by all means go ahead and download and install (if I preauthorize it) the updates.

    Don’t check when I’m starting my computer. Don’t check when I’m starting the app. Don’t check when I’m shutting things down. Those are 3 times when I am guaranteed to be at my computer and am waiting for it to do something for me. Don’t interrupt it!

    Last point for me, if you’re going to check for updates, ask me if I want to be notified every time. I don’t need an application to start up to say, “Checking for Updates”, and then “No updates found”. If you didn’t do anything, I don’t care.

  12. The worst part is that they don’t have to! It’s just they were designed as an afterthought by the programmers and not by the people who actually use it. I guess I’d have to ask, how many software companies do focus groups on their updating software, eh?

  13. @Adam Z: Hehe, good point. They could really make updating programs transparent if they wanted. But hey, then your boss won’t see what you’re doing! Better make it in-your-face.

    The problem with doing things when you’re not at the computer is that you get updates you don’t want. You get trapped in the “update everything” mentality that linux is in too. If you’re not using a program, there’s no need to update it. That’s why I think searching for updates once a week on startup wouldn’t be such a bad idea.

  14. @Emil Hesslow: Sorry for not replying until now, your comment stuck in the spam box, sorry! Yes, I forgot about Apple completely, they are annoying to the point that I’m starting to think I can live without quicktime altogether.

  15. Updating everyting, when the updater is part of the OS and actually can update everything is way better than updating a single program.

    The ubuntu updater checks once a day for updates of anything, rather than checking for updates of one specific program each time you start a program (I really wouldn’t want anything to take half a second extra each time I run grep). And id checks silently in the background, showing a non-intrusive icon if it finds anything to update.

    For me, it finds something to update maybe one or two times a week. I click “update it” when I’m not to busy with anything else. Maybe once a month it tells me I must restart an app, but then I can keep using the app until it is convenient for me to restart (or close) it. Same with reboots, only at an even lower frequency.

    Actually, I find it hard to even imagine a better way to handle updates, apart from the enigmatic “don’t put the bugs there to start with, so you won’t have to fix them” … :-)

Comments are closed.