Version numbering (was: Enum class with ToString functionality)

Ben Finney bignose+hates-spam at benfinney.id.au
Tue Sep 11 01:21:45 EDT 2007


TheFlyingDutchman <zzbbaadd at aol.com> writes:

> On Sep 10, 7:55 pm, "J. Cliff Dyer" <j... at sdf.lonestar.org> wrote:
> > Uh... The 1.0 version is vaporware?
> 
> I think not. 42% of it is alive and kicking as we speak.

That's odd. Do you think some similar matchematical relationship
exists between Python version 2.4.4 and 3.0?

You've made the common error of reading a package version as though it
were a single number on a number line. That's not the customary
semantic, though: versions are interpreted as a tuple of distinct
integers.

> When you were developing your Enum module, how did you determine you
> were at the 0.4.2 version as opposed to the 0.7.1 version or the
> 0.9.2 version?

I initially developed at version 0.0, meaning "major level 0, minor
level 0" — i.e., no releases at all.

Then, when the first "alpha" release was ready, I called it version
0.1, meaning "major level 0, minor level 1" — i.e. no major releases
yet, but the first minor release.

Then, a small patch needed to be made, and the resulting release was
version 0.1.1, meaning "major level 0, minor level 1, patch level 1" —
i.e. the first patch to version 0.1.

Eventually some extra features warranted a release of version 0.2,
meaning "major level 0, minor level 2" — i.e. the second minor release
with still no major releases. Implicit in this is "patch level 0",
i.e. no patch-level versions yet; the version could be called 0.2.0
and have the same meaning.

Each dot-separated integer is interpreted as a distinct level,
subordinate to the preceding one:

  * Two versions with different major numbers can be expected to be
    incompatible.

  * If two versions have the same major number, one can expect only
    minor feature differences.

  * If two versions have the same major and minor number, one can
    expect that they differ only in bug fixes or the like.

  * Subsequent integers would imply even smaller differences at that
    same level if all preceding numbers were the same.

Within a level, subsequent integers imply subsequent release times:
version 0.4.1 can only be released before 0.4.2. However, this is not
true across levels: a hypothetical version 0.2.7 could be released
before *or* after 0.4.2, if the author decides a patch to the (equally
hypothetical) version 0.2.6 is warranted.

As for a putative version 1.0, that will not be released until I
determine the package is functionally complete and warrants a first
major release. Depending on how much changes between now and then, it
may have most, some, or none of the code you see presently in version
0.4.2.

-- 
 \          "That's all very good in practice, but how does it work in |
  `\                                             *theory*?" —Anonymous |
_o__)                                                                  |
Ben Finney



More information about the Python-list mailing list