[Python-Dev] Re: Stability and change

Guido van Rossum guido@python.org
Sat, 06 Apr 2002 10:48:19 -0500


On c.p.py, Alex Martelli wrote:
> Linus Thorvalds seems to have done pretty well with picking TWO
> middle grounds -- two parallel tracks for Linux, "stable" and
> "experimental".

I'm moving the discussion to python-dev, since that's where I think it
belongs.

Personally, I hate the way Linux releases are numbered (I can never
tell which one is stable and which one isn't).  But I could get used
to it if we used the micro version number to indicate stability -- in
particular, 2.2 would be experimental, and 2.2.1 and following would
be stable; 2.3 would be experimental, and 2.3.1 stable.

This would require only a very slight change of policy: PEP 6 would
have to be renamed from "Bug Fix Releases" to "Stable Releases".  It
wouldn't even have to loosen up its prohibitions; quoting:

    """
    Prohibitions

    Patch releases are required to adhere to the following restrictions:

    1. There must be zero syntax changes.  All .pyc and .pyo files
       must work (no regeneration needed) with all patch releases
       forked off from a feature release.

    2. There must be zero pickle changes.

    3. There must be no incompatible C API changes.  All extensions
       must continue to work without recompiling in all patch releases
       in the same fork as a feature release.

    Breaking any of these prohibitions requires a BDFL proclamation
    (and a prominent warning in the release notes).
    """

This doesn't prevent us to evolve the standard library.  It doesn't
prohibit adding new built-in functions, although I'd be reluctant to
do so.

It would, however, require a big change in how we present new releases
to the world.  Currently, Once 2.x is out, anything running 2.(x-1) is
labeled obsolete, or at least oldfashioned.  That needs to change!
The website needs to present at least two options:

- Bleeding edge (e.g. 2.3 alpha, or 2.3 once it's out)

- Stable (e.g. 2.2.1)

There may be more options: Zope 2 currently requires 2.1.2 and will
require 2.1.3 as soon as it's out; other people still swear by 1.5.2.
(I don't think that the 1.6 and 2.0 lines are still popular.)

--Guido van Rossum (home page: http://www.python.org/~guido/)