[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