Friday, December 21, 2007

On Version Numbering

I recently found an article on the blog of a IT magazine that brought up the issue version numbering on open source software projects.

The magazine: Tietokone Lehti
The blog post: Versionumeroinnin Vaatimattomuudesta

Both are only in finnish, so I will summarize here. As the title clearly tells "On the Modesty of Version Numbering" the author has a low regard for the tried and true way of handling version numbering in open source projects. He brings up the idea that if software producers were not so shy about increasing the version number it might lead to the adoption of more open source software or at the very least reflect more positively on non-technical people.

While I recognize the point and agree with the author on a fundamental level, in practice I really do not see why this should be.

What Is Version Numbering
It seems to me that the author, along with a great load of other people, have either forgotten or never even knew what version numbering actually is. It is a strictly technical term that refers to the precise version of the software. The reason why it often is a sequence of digits and dots is because just starting from 1 and moving up from there isn't very efficient. Mind you that there are some horrific version numbering systems out there. However the dominant version seems to be the one started by the Linux kernel: N1.N2.N3, where the purpose of the numbers goes Major, Minor, Bugfix respectively. A major release is considered the largest and is most likely to break backwards compatibility. Minor changes include new features and additions to the API, but is often considered to be backward compatible. The last is simply a new update that features bug fixes. Often you can also download a nightly build version which is experimental and unstable.

1.0 is often viewed as a point where you have successfully implemented every feature on your roadmap, without any serious bugs.Sometimes even this is redundant since programmers are a practical bunch upgrading the version number from e.g. 0.4.9 to 1.0 just for the same upgrading sounds quite strange to us.

Product/Brand Names
I think the primary reason for confusing in the matter is that people are looking for version numbers to also serve a purpose as brand or product names. They have come to expect this from proprietary softwtare vendors where names look really sexy, like Windows Vista or Adobe Indesign CS3. But that is all that they are; cool looking names that have almost no relationship to the actual version of the software. Looking deeper into your program, usually in the About window, you will find the true software version. For my Adobe Acrobat this is 8.1.1, instead of just 8 like it says on the product name.

Behind the Scenes
The reason why proprietary software are eager to get to number 1 is two fold. First of all, they understand that 1 is sexier than 0.1. Secondly, they often do not publish programs until they have completed their entire roadmaps. Hence they reach 1 first, while open source programs go by the mantra, "release early, release often". Thus it does not matter to us that the program is not fully finished. In fact, if it was, people could not collaborate nearly as much on any one project, which is of course what open source is all about.

Unfortunately this has been traditionally interpreted as a sign that open source software is inferior or lower quality than proprietary software. This is not the case. There is always a clear distinction between an unstable and stable release. Unstable releases are development versions that are used primarily by the actual developers and experimentalists. You should expect them to fail and crash often. Stable releases are just that, stable. They are meant for the larger audience and should crash rarely or never.

No comments: