Filed in: Writing.VersioningSchemes · Modified on : Fri, 01 Jun 12
The seemingly simple task of giving a particular iteration of a piece of software a version string is actually far more complicated, and there are an appropriate number of methods for doing so. There's actually often a fair amount of information encoded in a version string. Herein, I attempt to catalogue and analyze them.
The simplest purpose of a version string is to be able to tell "Is this version newer than this version?", usually with the assumption that newer is better and that better means more important features, less bugs, less security holes, etc. ("Better" equals "more desireable".) Each time the author adds anything to the software and releases, the version number is incremented by 1. (For LaTex, Knuth uses version numbers starting at 3 and adding a digit of pi with each release. One can think of this as just a unary version number with an arbitrary character for each unit. The true, decimal version number is therefore the length of the unary one.)
In most software this simple (and in the FOSS/hobby world especially), releases are timed essentially whenever the developer cares to do so. She has no formal obligations for a release schedule, so the version number really has no relation to time at all, except that they both increase positively.