On Mon, Aug 11, 2014 at 3:15 PM, 13813962782 <13813962...@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 -- https://mail.python.org/mailman/listinfo/python-list