Versionning
October 1st, 2005 by HenPondering a different scheme for choosing version numbers, I have never been very happy with the style where you slowly release 0.x versions until some special 1.0 day when things are considered to be good and great. It has the following problems:
- How do you know that you’ve reached 1.0 day? If you’re working to an initial plan or matching a spec, sure, but if you’re just improving and adding features as and when. For Jakarta Commons it means you’ve been released, but for OSJava waiting for 1.0 has never really worked.
- If you completely redesign the system, ie) change the meaning of 1.0 day, there is no way to reflect that in the version.
My planned version scheme (unsurprisingly) is:
major.minor.bugfix
- major relates to the design of a product and begins at 1
- minor relates to the latest stage of that design and begins at 0
- bugfix relates to any bugfixes made after a release of a minor version, it starts at 0
The important difference is that
- you start at 1.0.0
- a major redesign sees you moving from 1.x.x to 2.0.0.
Not hugely interesting I guess, but I figured there might be some good strong negative views out there.

October 1st, 2005 at 3:41 pm
Here are some versioning documents on that scheme that are helpful:
http://apr.apache.org/versioning.html
http://xstream.codehaus.org/versioning.html
You might also be interested in Maven’s default versioning scheme:
http://docs.codehaus.org/display/MAVEN/Dependency+Mediation+and+Conflict+Resolution
October 3rd, 2005 at 5:07 pm
Oooh, so close. You are almost there. A convention I have been privvy to is major.minor.bugfix.buildnumber
It’s worked well for years.