So I picked up a copy of Mirror’s Edge the other day, and I’ll have a full post about how much I enjoyed that game some time in the future (probably after I get back from MIGS), but right now I just want to talk about something that really bothers me about modern applications:Auto Updaters.
Honestly, I have no problem with auto updaters as a concept. If my application needs updating, by all means, update it when it needs updating.My problem is with the auto updaters that run as a background process, constantly, without my approval (usually), and really without any need. Here’s the list of auto updaters currently running on my system as background processes:
- Google Update x2 at 2.6 megs each
- The HP scheduler x2 at 956k each
- The Install Shield Updater x2 at 1.1 meg each
- Antivirus update at 1.5 meg
In addition, if I hadn’t disabled it, I could have the Apple auto update service running as well.Who knows how much memory that would take up (and for each user I’m sure).
In my opinion, there are only two systems that are allowed to constantly check for updates: your operating system, and stay resident protection programs like virus scanners and anti-spyware. All other programs should only EVER query for an update when you run them. All lot of applications I have do this, though even they’re not perfect. Here’s how I see a good auto update system working.
- Never have a stay resident program for updating. If that requires that you compile the same system into multiple programs to check for updates, so be it.
- Never have an auto updater suggest that I download new software. I’m looking at you Apple. I don’t want Safari… got it?
- Check for updates only when the application boots.
- Inform me when an upgrade is available, and ask for on of these three options: “Always Upgrade Automatically”, “Upgrade Now”, “Never Upgrade”. If I select “Always Upgrade Automatically”, all upgrades should be silent. Unless you change something visually, I shouldn’t even know an upgrade occurred.
- If you absolutely must have a stay resident program checking for updates, it MUST understand multiple users. Thankfully, Avast! actually did this right.
In actuality, the best solution here is to have a central system that checks for programs that need to be updated, and where to get information about that. This is where package Linux package management is actually far and away better than most everything else out there. That said, although it’s ridiculously simple to use, I don’t see it being ridiculously simple to develop for, especially if you’re developing an application outside of the bounds of the central repositories. At least there are no upgrade daemons in Linux (that I know of anyway…).

no comment