If someone visits the node for version numbering, they're either bored or looking for advice on how to version their software application.

Version numbers indicate the maturity or release state of a software program. There appear to be 3 common practices for versioning.

  1. 3-digit
  2. 2-digit
  3. "Model Year"

3-Digit Versioning
The 3-digit methodology appears to be the best and most widely accepted versioning method in the software development community. It clearly designates major, minor and revision levels of the program. As explained by akf2000's node for Version Number, the major number is incremented for significant changes to the program. The minor number is for feature additions, improvements and service releases. The revision number is typically used to denote patches and bug fixes.

In some cases, people extend the 3-digit version with a 4th digit to indicate build numbers or build date. While build numbers are useful to the developer or techie, they don't mean a tremendous amount to the user in the long run. A build date can be informative, but still not necessary.

2-Digit Versioning
The typical 2-digit version number looks something like v1.0 or v1.03. While it has appeared commonly in amateur programs, it also makes appearances in the professional world or in programs that simply don't want to confuse people with revision numbers.

The 2-digit methodology, while clean, isn't exactly the best way to represent a constantly evolving software application. If the goal is to hide the revision number completely, then this system fails to indicate bug fixes. If it is also supposed to indicate revision numbers, this can get quite confusing.

The problem is that most developers who use the 2-digit system are really just ignoring the "dot" between the 2nd and 3rd numbers (i.e. 1.0.3 gets written as 1.03). While this isn't a problem most of the time, the whole system falls apart when the revision needs to go beyond 9 (i.e. v1.09). At this point, do we represent the version now as v1.10 or v1.010? The first case would now signify a bump in the minor version number. Did the bug fix that caused the version increment qualify as a feature improvement? That is how it appears now that the version is v1.10. On the other side, if they represented it as v1.010, isn't that numerically the same as v1.01 since mathematically the last 0 would be insignificant and stripped?

From this description, the benefits of using the 3-digit format should be much clearer. Of course, you're still entitled to personal preference.

"Model Year" Versioning
This method of versioning first made its appearance in the 1990's as a way of showing how "up to date" a program was compared to others that used "arcane and confusing" version numbers. A major adopter (and possibly the earliest) of this method is Microsoft, who released Windows v4.0 as Windows 95 for its 1995 release.

This method isn't truely a versioning system, as it is more geared towards marketing than anything else. Internally, these programs still maintain some sort of traditional 2-or-3 digit version. Would you have bought Windows 98 if you realized it was only Windows v4.1? That ".1" is hardly worth your $99, no? Now 1998 attached to it, HOTCHA!

Summary
In the end, software developers can do whatever the heck they want. As mentioned at the beginning of this node, you probably came here because you were either bored or curious. If the message wasn't clear enough, my recommendation is to use 3-digit versioning because it is the clearest of the ones listed here. 2-digit can bite you back and "model year" has no place outside of commercial marketing for software.

Version Number Node v1.0.1.20020508