Why Python 4.0 won't be like Python 3.0

Steven D'Aprano steve+comp.lang.python at pearwood.info
Mon Aug 18 21:00:16 EDT 2014


Ben Finney wrote:

> Grant Edwards <invalid at invalid.invalid> writes:
> 
>> I agree with the comments that the appellation for "simply the next
>> version after 3.9" should be 3.10 and not 4.0. Everybody I know
>> considers SW versions numbers to be dot-separated tuples, not floating
>> point numbers.
> 
> This consensus is sometimes termed “semantic versioning”, that is,
> giving semantic meaning to the structural elements of a version string
> <URL:http://semver.org/>.
> 
> I'm glad someone has taken the time to codify that sensible and useful
> de-facto standard for version strings.
> 
>> I don't think one (or several) blog posts is going to change the
>> perceptions and expectations that have been coditioned into us by
>> decades of experience with x.0 versions of countless software
>> packages. If it's just another in a a series of incremental "bug fix
>> and minor enhancements without breaking backwards incompatibility"
>> releases, you simply do not call it vers x.0.
> 
> Agreed. The convention is well established 

Only if you ignore the vast majority of software which does not follow that
convention. Having *any* semantics to version numbers at all, apart
from "bump the version number when you feel like it", is the exception
rather than the rule. Probably the most common version numbering system
is "the date I last remembered to update the version number", or a simple
incrementing counter. (It's a version *number*, not a version tuple.)

It is amazing how well-established a convention can appear if you ignore the
exceptions to it and consider only a sufficiently narrow niche, like "some
of the FOSS software I'm familiar with".


> and rogues deviate from it at the peril of unnecessary confusion.

Rogues like Python, the Linux kernel, Oracle, Mozilla, Haskell, ...

Well, okay, Oracle are rogues. But not because of their version numbering.


I find it amusing that Haskell uses a versioning number scheme that uses two
dot-separated major versions specifically to combat the emotional reaction
to major-version changes exhibited in this thread by Grant. With Haskell,
changing from (say) 0.6.3.2 -> 0.7.0.0 is a major API-breaking upgrade, but
it avoids the emotional reaction of having to go from 6.3.2 -> 7.0.0.

http://www.haskell.org/haskellwiki/Package_versioning_policy

Haskell also explicitly prohibits the useful practice of including version
tags like "a", "b", "rc" *because some tools couldn't sort them correctly*.
(This reminds me of those who advocate spaces over tabs, because some tools
can't deal with tabs correctly.) Rather than fix the tools, the Haskell
community removed non-numeric tags from the specification.

On the other hand, Oracle and Sun before them take the attitude that a jump
in Java's version number from 5 to 6 to 7 are only minor release changes,
and the Java community is quite happy to agree.



-- 
Steven




More information about the Python-list mailing list