Why keep a singular BDFL? I think it’s clear that no one can completely
replace Guido, and neither should we try, nor do we need to. The discussion to
date has explored refactoring many of the roles that the BDFL has, and that’s
all excellent, especially to reduce the burden and burnout factor of the NBDFL.
But I think having a singular BDFL making the tough decisions, with the
support and help of the community, is in the best interests of Python over the
long term.
A singular BDFL provides clear leadership. With a council of elders, it will
be more difficult to communicate both to the Python community, and to the
larger, more peripheral user base, that any particular individual has the
authority to make decisions. Regardless of size, there would ultimately be
some one person communicating any council decision. There will inevitably be
ambiguity as to the authority of said decision. How will folks, especially on
the periphery, know that Alice Jones or Bob Smith are members of the council
and can speak authoritatively on decisions for the language? “Bob Smith, on
Behalf of the GUIDO” is IMHO less obviously and unquestionably authoritative
than “Alice Jones, BDFL”.
This also comes into play for shutting down discussions early. With a
committee, it’s possible that you’ll have some disagreement among the members
as to whether a discussion is fruitful or not, whether it rehashes settled
questions, or whether the change fits into the overall direction for Python’s
evolution. Alice Jones may say “No, that’s not gonna happen” only to be
overruled or undermined by Bob Smith’s “That’s a good idea”.
Taken together, these fall under the umbrella of having one voice for the
decision making process. It may be possible for consensus within the council
to come across as a single voice, but I think it will generally be harder. A
council also opens the door for more back-channel lobbying of a sympathetic
member. Yes, such lobbying is possible with a BDFL, but at least there should
be less contention.
I also think a council will be much more risk adverse than a singular BDFL, and
that’s not necessarily a good thing. While moratoriums and a more conservative
approach to change may be appropriate at times, I would prefer those to be
deliberate decisions for a specific purpose, rather than the unintended outcome
of groupthink or lack of consensus. A singular BDFL with support from the
community will have more authority to make decisions which probably will never
be universally accepted, and much less prone to vapor lock due to lack of
consensus or internal bickering.
I hope Guido won’t mind me relating a comment of his that has really resonated
with me over the last few days, and for which I think a singular BDFL will be
much more adept at communicating and shepherding. The question for any new
leader is:
What is your vision for Python?
This question keeps coming to mind as I think about how the evolution of the
language will be governed over the next few years or decades. Yes, Python is a
mature language, but it’s far from stagnant. Guido always had a very clear
vision of what Python should be, where it should go, and how new proposed
features (or other changes to the Python ecosystem) fit into that vision, even
if he didn’t or couldn’t always clearly articulate them. The NBDFL will
necessarily have a different vision than Guido, and I think even he would agree
that that’s okay! A strong vision is better than no vision. Python must
continue to grow and evolve if it is to stay relevant in a rapidly change
technology environment. As an almost 30 year old language, Python is already
facing challenges; how will that vision address those challenges, even if to
explicitly choose the status quo?
Will a council be able to articular, express, communicate, adapt, and follow
through on that vision? Will a council be able to evaluate a proposed change
as it supports or detracts from that vision? Will a council be able to break
out of a primarily maintenance position, to actually move the language and its
primary implementation forward? I’m not so sure.
For these reasons I propose that we retain a singular BDFL.
The formation of a formal Council is still a good idea! I just think that it
shouldn’t be the ultimate arbiter of decisions for Python. So what would the
Council do?
- It would serve as a check on the BDFL. If Bob Smith were one day employed by
Evil Corp. and started making decisions that were directly detrimental to
Python, the council should be able to effectively impeach. There should be
checks and balances on this power, the BDFL shouldn’t continuously fear a coup,
and impeachment will hopefully never be invoked, but the council can serve as
the voice of the community for when the BDFL is abusing their power.
- The council would select the next BDFL if and when that time comes. No one
will serve forever, so a clear succession plan should be in place. To avoid
the tyranny of the majority, the council would serve similarly to a board of
directors. They’d search for candidates, match them against well defined
criteria, conduct interviews, serve as the voice of the community, and
eventually select the N+1BDFL.
- The council would serve as trusted advisors to the NBDFL. The BDFL won’t be
out there all alone! The council will provide advice when requested, and back
up the BDFL when needed. The council helps legitimize the BDFL and their
decisions.
We can debate how the initial council is selected, its make up, number of
members, term limits, etc. I think much of the current discussion about a
BDFL-like council would satisfy the requirements for a Council of Advisors.
It’s just that the roles and responsibilities would differ. The COA wouldn’t
make the decisions, but it would help the BDFL make the best decisions
possible, and have their back against any detractors.
I definitely have my own thoughts on an initial make-up of said council, but
I’ll reserve that for later.
If you’ve read this far - thank you! Now for the big reveal. I think the Next
BDFL should be… (drum roll)…
Brett Cannon
I’ve long said — somewhat in jest, since I never expected Guido to actually
ever retire! — that Brett would be my choice for the next BDFL. I think he’s
the perfect candidate, and he’s already demonstrated qualities that I think
make him a fantastic leader. He’s smart, compassionate, passionate,
respectful, young, tall, and has the right mix of technical excellence and
social skills. He believes deeply in diversity and community. As he’s shown
with the decisions to move first to Mercurial, then to git/GitLab, he isn't
afraid to make difficult decisions that he knows not everyone will agree with
(and I say that having advocated the losing choice more than once :). He’s not
afraid to say what’s on his mind. I think he can clearly articulate a Vision.
He shares many of these same qualities with Guido, while being a different
person with different sensibilities. And that is not only fine, but IMHO a
*good* thing. We can trust his stewardship, and he already has legitimacy as a
senior decision maker in the Python ecosystem. He has a wide technical
knowledge of Python and its C implementation, and yet he knows what he doesn’t
know. He has good relationships with most core devs, and is a well-known voice
within the wider community. He’ll be able to delegate where appropriate, and
make definitive pronouncements where needed.
Before you ask, yes I did check with Brett before making this proposal and he
didn’t shoot it down. He may have specific requirements for accepting the
position, but I’ll let him articulate those. I’m confident they would come
across as completely reasonable. :)
To summarize:
* We retain a singular BDFL to lead Python
* A Council is selected to serve as advisors to the BDFL, a selection committee
for succession, and a check against the BDFL.
That’s it in a nutshell. Thanks for listening.
Cheers,
-Barry
_______________________________________________
python-committers mailing list
python-committers@python.org
https://mail.python.org/mailman/listinfo/python-committers
Code of Conduct: https://www.python.org/psf/codeofconduct/