Thoughts about version numbers

Posted on April 13, 2009, under Programming

I’ve wanted to talk about this for a while now; I don’t understand why so many open source projects don’t give their programs a “1.0” moniker. Are they afraid of it? A program isn’t done when it reaches that! I think that that specific version number just means that it is the first version that you consider usable and stable for the general public. Every program gains new features after its 1.0 release.

A great example of this is digiKam. I’ve been using it for years to manage my photos and never once had it crash or lose data, and yet they just made a 0.10 release for KDE4. Why isn’t that program well past 1.0? I give all of my programs a 1.0.0 version number when I consider it ready for general consumption, not when I consider it “done”. There may be a big feature you want to add to it, sure. But that’s why you have releases after 1.0.

On the other end of the extreme, there are projects who seem determined to pad their numbers as much as they can. For example, Ubuntu uses a date based approach—they use the last two digits of the year followed by the month to make it look like a regular version number. So you go from a starting version of 4.10 to the current release of 8.10. Why not just go with the full date like so many other distros? Then it wouldn’t look so much like version number padding.

A logical and simple alternative to the date format is simply counting the releases. An example of this is Fedora. The first release was in the tail end of 2003 and the current release is version 10. There have been 10 releases, and 10 bumps in the version number. It seems fair: if you don’t want to try and figure out if the features require a version bump, and you don’t simply want to follow the date, just increment the version number with each release.

When I put CuteMaze online I hadn’t thought that much about version numbers. If I was to do it now, I would have worked on it a bit longer and made a 1.0 release. I just think that the first “release” should be 1.0, not 0.1; if it’s stable enough to release, it’s stable enough for “1.0”. This is, of course, assuming that you are not releasing it from the very beginning of the project for testing purposes.

3 comments

scaryreasoner says:

April 14, 2009 at 1:29 am

Version numbers are stupid.

I kind of liked Sun’s system of encoding the date as a version number, though it kind of breaks down when you have multiple version numbers. It’s been too long for me to remember the specifics, but they’d have version numbers like 19970607143706 meaning the build was done 1997, Jun 7, at 14;37:06 GMT.

I’ve thought of using the MD5 sum of the source for a version number.

What’s so great about 1.0? Why have you attached so much meaning to it? The problem exists in your head, man.

scaryreasoner says:

April 14, 2009 at 1:30 am

I wrote “it kind of breaks down when you have multiple version numbers.”

I meant, “it kind of breaks down when you have multiple branches.”

Graeme says:

April 14, 2009 at 1:41 am

I agree that 1.0 isn’t special. Too many projects are obsessed with hitting perfection before tagging something as 1.0, when I think if you are going to use version numbers instead of dates that it should simply be the first release you make. I’ve encountered users who avoid software that has a version number lower than 1.0 because they think it means the software must be unsafe for general use, which is what got me thinking about it in the first place.

Categories