What's the future of perfect Python?

Chris Angelico rosuav at gmail.com
Mon Aug 11 01:41:24 EDT 2014


On Mon, Aug 11, 2014 at 3:15 PM, 13813962782 <13813962782 at 139.com> wrote:
> Just like MANY people, I was one of guys who do very like Python. But
> there's one thing always puzzled me, could you kindly help give some words
> about it:
> "Java is belonging to Oracle, C++ is defined by ISO; Python is designed by
> great Guido van Rossum; then what is the future of Python( Guido van Rossum,
> GREAT man, but STILL just one person)? "

There are several things going on here.

Firstly, Python isn't developed solely by Guido, by any means. If you
poke around on python-dev and see who's talking, it's mainly not
Guido, but other people. And if you look at the commit history in
Mercurial, similar. There are lots of contributors. Guido's job is not
to *write* Python, but to *guide* it. If someone wants to add a new
operator to Python, s/he may well end up writing the code - but Guido
decides whether or not it's accepted. (Or, as the case may be,
delegates to someone else the authority and job of making that
decision.) Effectively, it's not so much that "nothing is added to
Python unless Guido does it" as it is "nothing can be added to Python
that Guido is specifically against".

Secondly, the state of a project that's commanded by a single person
is far better than one that's governed by a committee. Ever heard the
expression "designed by committee"? [1] It's not a compliment. PHP is
a language that seems to grow features without a huge amount of
guidance. It has not benefited from that status. Python, on the other
hand, has a transparent procedure for raising
potentially-controversial suggestions, which culminates in a BDFL
pronouncement. (Usually something like this: discussion on the
python-ideas mailing list, then someone writes a Python Enhancement
Proposal or PEP, which then gets bikeshedded to kingdom come and back,
and finally the PEP gets pronounced on - accepted or rejected.)

One person cannot, by definition, be in disagreement with himself.
(Conflicted, maybe, as Flynn Rider observed of his golden-haired
companion, but not in disagreement.) A committee can be; and then
what? Do you declare that no changes are made without 100% consensus?
Do you do whatever a majority of the committee wants? And how do you
decide who comprises this decision-making body? With organizations
(Oracle, ISO, Microsoft, and everyone else who owns a language),
there's either going to be ultimately one person in charge (in which
case it's not materially different from Python with the python-dev
community and Guido), or some means of resolving these kinds of
conflicts; and either way, chances are you won't know how it's dealt
with. I can surmise, for instance, that Microsoft will have someone
who has the ultimate say as to what goes into the next version of C#;
but I can't hazard a guess as to _who_ that might be. With the open
source world, there's a general principle that whoever starts a
project is its head, and that headship is transferred by explicit
action as the "final duty" [2], or can be claimed for an inactive
project by effectively forking it and becoming the head of a new
project (if the old one really is dead, its users will generally be
happy to follow you to the new project - especially if it has the same
name).

So there's a very good future. If something should happen to Guido,
the Python Steering Union will no doubt find someone else to take over
- which may result in a change of direction for the project, but I
suspect not a dramatic one. And in the meantime, we have a
well-defined hierarchy - the very best form of governance.

ChrisA

[1] https://en.wikipedia.org/wiki/Design_by_committee
[2] "When you lose interest in a program, your last duty to it is to
hand it off to a competent successor." -
https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar



More information about the Python-list mailing list