Thoughts about version numbers
April 13, 2009 3 Comments
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 incremenent 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.