Version Numbering

Geert Janssens geert.gnucash at kobaltwit.be
Mon Mar 30 10:32:10 EDT 2015


David,

Thank you for your input. It more or less summarizes what I believe is a 
pretty common versioning strategy in many free software projects. And 
since we are a free software project ourselves we"d need good reasons to 
follow a different route as doing so reduces the common knowledge 
advantage.

As to the choice of names for the version components I already stated 
I'm having major (no pun intended) issues with the "major.minor.x" 
scheme. Those may make sense for release managers, but not for users or 
developers.

Releases which bump the "minor" component in that scheme have often seen 
major new features in the eyes of developers who have spent countless 
hours of work on them or users who have been waiting for a long time for 
these. If anything, calling such a release a "minor" release is very bad 
marketing wise.

That's probably one reason you rarely see such a scheme on commercial 
projects. Many projects use years to version their products (Office 
2013, Ubuntu 14.04) or rapidly increasing first numbers (Fedora 21, 
Windows 7, Firefox 36, Chrome 41,...) and only add rarely add extra 
detail (like Windows 8.1 which could be considered as a bugfix release 
for Windows 8). OS X is an exception, although Apple is careful to use 
zippy names for each release.

Herbert already noted as well that the kernel project no longer really 
uses the "major" component. It's just arbitrarily updated.

So there are signs that the traditional meaning of the left-most 
component is slowly changing.

As are the times. Many projects are on higher frequency release 
schedules, and more and more the distinction between releases for 
bugfixes or for new features is being dropped or at least seriously 
watered down. For such projects the distinction between 
major/minor/bugfix is hard to make.

To be clear gnucash is still very traditional in that respect. Slow 
release cycles, stable releases (mostly) bugfix only. That may need some 
revision at some point to catch up with the rest of the world. But 
that's a totally different discussion.

I'm bringing all of this up to get us the think further than what has 
always been, not necessarily because it should change. It all depends on 
how much information one wants to code into the version number.

I'm fine with the 3-component versioning scheme. It works for our 
purposes and we can indeed decide with each release whether it has 
sufficient changes to warant a bump in the left-most component.

On the other hand I also like a year.month-based versioning scheme. 
Particularly for users this conveys a lot of information (which may bite 
as well if you are on a slow release cycle). I suspect our release model 
doesn't fit this versioning scheme though.

I'm also curious how the more rapidly changing first component release 
scheme would work for gnucash (which would validate "minor" for the 
second component again).

Both of these two releases go for a simplified versioning scheme at the 
expense of the amount of information that can be encoded in it. And 
personally I don't think gnucash is ready for either if you consider the 
compatibility component.

I do prefer the name shift from
major.minor.something
to
fundamental.major.bugfix
though. The first component change happens far too rarely to be called 
major. Or more importantly I think minor doesn't do honor to the work 
that goes into the big releases we do every 3-4 years.
I'm well aware this goes against the naming conventions usually adhered 
to by release managers.

Whew, lots of text again... Congrats if you made it this far.

Geert


More information about the gnucash-devel mailing list