Latest Version Doesn't Mean Best Version June 13th, 2015
I don't like automatic updates. There's this weird idea that an update is always better than what came before. And that if you don't want the update, you're some kind of crazy heretic. Surely you want the latest patches? You should update to the latest version! A̧ ̕new v̡e̸r͞sio͘n̨ ̀i̶s͘ r̢e̛l͠eas͠ed!̧ ̸You should͡ ͘ upda͘te͝ ͜yo̕u҉ M̨͎͔̱̼̞U͏͓͉̹S̱͈̻T̴͕̮̗ ̙̮̀h̸̫̪a̵̺V̻̭̹͎E͔̘̝̩̤̲ ́T̼h̲̖͉̩̳̩̟E̝̤͎̻̱ͅ ̬͔̣̪̙̱̝Ṷ͖̹̝́p̹̺̝̭͖͓ͅz̛̗̟d̶A̷Te̗͇!͡!̴ ͔̣̙U͈̣̝P̨̖̺̩̦͓̠̭D̹͉̱̪͇̼̯A͍͇̪̦̟̥͚T͏̼͕͖E̠͇̲͖̪͓͡
But are updates always better? You only have to look at what happened to uTorrent to know that's not true. For years uTorrent was one of the most popular BitTorrent clients, due to its elegance, simplicity and general no-bullshit attitude. The one day the software's author sold it to another company, and ever since it got a little bit worse with every version. In-program adverts were added, and most hilariously it even started using your computer for a while to mine Bitcoins on.
This isn't necessarily the end of the world though - after all, if you don't like it, you can just re-install the older version instead, right? What worries me about the current trend of automatic drip-feed updates is that it's becoming more common not to support the idea of picking what version you want to run.
Newer has become implicitly better.
I think the biggest problem here is one of names. The world works better when things have a name. If you've ever read Design Patterns, one of the things they talk about is the importance of giving something a name:
Gamma, Helm, Johnson, Vlissides - Design Patterns
"The pattern name is a handle we can use to describe a design problem, its solutions, and consequences in a word or two. Naming a pattern immediately increases our design vocabulary. It lets us design at a higher level of abstraction. Having a vocabulary for patterns lets us talk about them with our colleagues, in our documentation, and even to ourselves. It makes it easier to think about designs and to communicate them and their trade-offs to others. Finding good names has been one of the hardest parts of developing our catalog."
Naming something gives you power over it - this is a fairly common superstition historically, but there's a ring of truth to it, and it applies here. If you ask "should I install KB234762784", it doesn't mean much. But if you ask "should I upgrade to Service Pack 2", it gives you a term to work with; something you can share with others and use as a handle to grasp the subject.
Things need names, so you can assign praise and blame. Upgrading to "Build 9926" doesn't mean much, but upgrading to "Windows 10" suddenly does.
With a name, the intangible becomes tangible.
But why, you cry, would you ever want to not install the latest version? Surely if there's something that broke in the latest version, the developer will fix it and issue an even newer version?
No, they won't always. At least, not without pressure.
The best pressure we can apply is the free-market economy. A way to stand up and say no, I'm not upgrading to your new version because it sucks. Without that pressure, companies will sail onwards with their broken new version. But if people refuse to upgrade, they're forced to rethink.
Here's a case study for you. Everyone likes WinAmp, right? It's probably one of the most downloaded programs of all time. The 2.95 release was for many the gold-standard of MP3 players.
In 2002 they rewrote large portions of the program and released a shiny new version, WinAmp 3. Everyone hated it. The lean, thin program everyone was used to suddenly found itself slow, bloated, with some previously working features removed entirely.
The backlash was strong, and users complained vocally. But complaining does no good. Instead they voted with their feet, as it were. Many people stayed on WinAmp 2.95, refusing to "upgrade" to the new version.
And it worked. A year later, NullSoft released WinAmp 5 - by going back to the 2.95 codebase and finding ways to merge the newer 3.0 features in, creating the best of both worlds. If it hadn't been for the power of the users to choose, this may never have happened. And yet the result created a better product.
Then there's our old friend, Windows 8. I'm not going to bitch about Windows 8 here, because it's been done to death, so let's just summarize with "a lot of people don't like it". So much so that many people, myself included, just decided to stick with Windows 7 instead until something better came along.
Microsoft even realized how much they messed up by needing to offer a free upgrade to Windows 10. I wonder how much of this was due to people voting with their wallet?
The power to choose which version of a program you run is just as important as choosing the program itself.
I'm not entirely sure revertability is a word, but screw it, it is now. Even if the latest version is generally an all-round improvement, are there reasons you might want to take a look at older versions? Steam is one of the worst offenders for updates. Once an update gets on your system, there's no way back.
Remember Portal? Voted Game Of The Year 2008? Widely praised for its compelling storyline? 1up.com voted it "Best Narrative 2007. Everyone liked the ending.
Except now, if you play it on Steam, you'll find you get a different ending than you did originally. Wait, what? Yep that's right, Valve issued an update that replaced the old ending with a slightly different one to tie into Portal 2.
Now I'm not saying the new ending is bad, but if you want to play the version with the original ending, you can't. That's gone forever; there's no way to select which build you want to play on Steam.
Now there's a strong argument that hot-fix updates are essential for security, and I agree with that. Of course, while that's true for someone running a server, for the user at home it may not be as important, but let's skip over that for now.
So it makes sense that security fixes or critical bugfixes should maybe drip-feed directly. But it does assume you trust your provider to not abuse that privilege. Surely no-one would ever use the automatic update system to push non-critical fixes to you? Hah, right.
I can't help notice as I write this the little "Get Windows 10" icon that greets me every morning. It just popped up on my desktop one day. I haven't figured out how to get rid of it yet, I can try and hide it but it just comes back the next day.
I'm not saying we should get rid of the idea of drip-feed, always-latest updates, but we sure as hell shouldn't be trying to use that model for everything. And yet that is where most distribution platforms are going.
- Updates need to be named.
You need to provide accountability, and give the user the power of discussion. Consider batching smaller improvements together into larger packs to get a better name for them.
- Latest is not the same as best.
If your users can't go back to old versions, then you don't allow them to vote. The best way to understand what your users really want is to let them show you, not tell you.
It can be scary to give users power to show you what they want, but if you let them do it you may end up with a better product as a result.
Written by Richard Mitton,
software engineer and travelling wizard.
Follow me on twitter: http://twitter.com/grumpygiant