[Python-Dev] PEP 3003 - Python Language Moratorium
Steven D'Aprano
steve at pearwood.info
Sun Nov 8 01:14:59 CET 2009
On Fri, 6 Nov 2009 09:05:17 am Guido van Rossum wrote:
> On Tue, Nov 3, 2009 at 9:35 AM, Guido van Rossum <guido at python.org>
wrote:
> > I've checked draft (!) PEP 3003, "Python Language Moratorium", into
> > SVN. As authors I've listed Jesse, Brett and myself.
>
> I haven't seen substantial opposition against the PEP -- in fact I
> can't recall any, and many people have explicitly posted in support
> of it. So unless opposition suddenly appears in the next few days,
> I'll move it to the Accepted state next Monday.
I'm not a core developer, but I have made some objections on the
python-ideas list. For what it is worth, I don't think a moratorium is
needed, and it is not cost free. Whether the cost is worth it is a
matter of opinion, but I've read posts suggesting that there's no
downside to a moratorium. I think that's naive.
Firstly, the core developers are very conservative in the features they
add to the language. Nobody suggests that will change -- there are (as
far as I know) a grand total of *one* proposed language changes under
consideration for 3.2, namely "yield from". It isn't like the
moratorium is needed to stem a flood of vast numbers of incompatible
language changes, and this is not likely to change.
The given reason for the moratorium is to give the developers of other
Python implementations a chance to catch up. But as far as I know --
and I welcome correction -- only one such developer has spoken up, and
he says that new language features generally aren't a problem for
IronPython, but some standard library features are:
http://mail.python.org/pipermail/python-ideas/2009-October/006328.html
(In fairness, I should point out that Dino did not vote against the
moratorium, he gave a conditional "in favour" vote but asked for some
wiggle-room. A moratorium with wiggle-room is not a moratorium.)
A moratorium isn't cost-free. With the back-end free to change, patches
will go stale over 2+ years. People will lose interest or otherwise
move on. Those with good ideas but little patience will be discouraged.
I fully expect that, human nature being as it is, those proposing a
change, good or bad, will be told not to bother wasting their time,
there's a moratorium on at least as often as they'll be encouraged to
bide their time while the moratorium is on.
A moratorium turns Python's conservativeness up to 11. If Python already
has a reputation for being conservative in the features it accepts --
and I think it does -- then a moratorium risks giving the impression
that Python has become the language of choice for old guys sitting on
their porch yelling at the damn kids to get off the lawn. That's a plus
for Cobol. I don't think it is a plus for Python.
What one person sees as "stable", another may see as "moribund".
Perception does matter. Nick Coglan spoke of Jython having "fell by the
wayside" when CPython introduced new style classes:
http://mail.python.org/pipermail/python-ideas/2009-October/006431.html
I think that speaks to the opposite conclusion that Nick intended. If
developers craved stability, and were put off by the pace of changes to
CPython, why weren't they migrating to Jython, which had one new
production release in six years?
http://www.jython.org/archive/22/news.html
Nick also described C as changing much more slowly over its life that
Python has. This is misleading: it is true that the C standard has been
stable, but that doesn't mean that C compilers have been. Changes to
the standard were driven by changes introduced by the implementations,
not visa versa. Likewise for Cobol, where the first implementation to
introduce OOP was released in 1997, but the standard wasn't updated
until 2002.
Python is nothing like that. Python doesn't have an official standard,
and Guido has dismissed the need for an ISO standard. The other
implementations have historically let CPython lead as far as language
evolution goes. If CPython stops, likely Python stops. Who is going to
risk adding language features that break compatibility with the most
popular implementation? It won't be Python anymore.
The PEP says the moratorium will last "at least" two years from the
release of 3.1. Given the normal slow pace of new language features,
two years isn't bad -- that's effectively just 3.2. But Guido has
suggested it could last to 3.3. Could it last beyond that? 3.4? Until
some distant future Python-4000?
At the very least, I believe, any moratorium should have a clear end
date. A clear end date will be a powerful counter to the impression
that Python the language is moribund. It says, this is an exceptional
pause, not a permanent halt.
--
Steven D'Aprano
More information about the Python-Dev
mailing list