Software Version Anti-Patterns
Keeping Up With the Joneses
Competitive version numbers as marketing. Bigger is better, after all, and if our competitors are on version 7 then we should be too!The Firefox release history is an interesting one. Firefox released 4 major versions from 2005 to 2010, at an approximate annual rate of 1. Then, apparently feeling the heat from Chrome's version-happy release schedule and perhaps feeling left behind IE 9.0, decided to release 3 major versions — 5.0, 6.0 and 7.0 — between June and September 2011, yielding an insane annual rate of 9. This confused everyone, to the point of becoming a source of amusement.
When I Feel Like It
Projects run by a Benevolent Dictator for Life are particularly subject to this, after all, they are the creator and releases aren't just code, they're a form of creative personal expression. Besides, the BDFL's favorite number is 8 and with Mercury in retrograde it just doesn't seem like a good decade to change minor versions.The Linux kernel release history, on a minor version odd/even unstable/stable cycle for years, got stuck breaking interfaces and developing major features within 2.6.x point releases for 7 years before inexplicably jumping from 2.6.39 to 3.0 to 3.1 in a period of weeks with little explanation. Indications of arbitrariness at high levels of an organization suggest dysfunctionality elsewhere.
Version? What Version?
Firefox has announced plans for a Zen-like lack of version numbers, and they are making a huge mistake.
Version numbers are actionable data which provides users with a choice. The magnitude of change between the current and new version communicates approximate risk/reward. I know that if I install a new major version that it could potentially break stuff, but it's my decision to make and since I am involved in the change I can schedule it to minimize risk to myself and my customers and I know to be on the lookout for problems.
Removing this option means my software might break at any time and I can do nothing to stop it. Furthermore, if something does go wrong, what can I do about it? I won't even know whether the problem was actually caused by an update or not since I won't know if an update has happened at all. And if an update does cause a problem, what can I say or do about it? "Today Firefox started acting strangely." I don't know what version it's on or how to get updates so I can't roll back and I can't schedule upgrades to minimize risk, so my browser might crash or freeze in the middle of a product demo for all I know.
Painted Into a Corner
A victim of our own success! We never gave developers a proper feature-detection API, so they relied on hardcoded version numbers and arcane side-effect-measurements and huge swaths of applications break if we update the version number(!)This tends to happen whenever a system supports that supports a lot of external code such as hardware and operating systems, but can bite libraries and plugin-supporting applications as well. Just such a problem has bitten Intel's x86 chip and Microsoft Windows NT, resulting, eventually in the x86's CPUID instruction.
