
Python post-Guido - johnramsden
https://lwn.net/SubscriberLink/759756/931b0f4617723184/
======
Alir3z4
Please no democracy, not a voting madness or anything like groups decision
making.

Just another BDFL, that's it.

~~~
jgraham
> Just another BDFL, that's it.

I think a lesson to take from this is that the concept of a "BDFL" doesn't
really stand up. Putting an individual in charge dramatically increases the
chances that they will suffer some kind of burn out compared to a situation
where there are more people to share the burden with. That means the "For
Life" part is more like "until they decide it's not worth the grief".

It's also clear that the "Dictator" part isn't really true; the stated reason
for Guido leaving the project was the difficulty he had in getting the wider
community to agree to a change he was in favour of.

The idea that having a single individual in charge produces a consistency of
design seems false over the long term. Each time you burn through one leader
you have to pick a new one who might have a relatively different aesthetic
sense or set of priorities. And individuals change. Someone who was
indifferent to functional programming, for example, in 1995 could be a huge
advocate of it 20 years later, making quite different design decisions as a
result.

Instead I would strongly encourage the Python community to look at what the
Rust community have been doing. Leadership there is group-based, and the core
team sets out an explicit vision for the project each year. This allows
feedback from the community on direction and enables changes to be assessed
against the explicit shared vision (vs assuming that vision exists in
someone's head in the BDFL model). Ther exists a process for making changes
that ensures that all (unique) feedback is considered before making a change,
so that when decisions are made they're made based on shared facts. There is
also emphasis on growing contributers into leadership positions, which togther
with the team-based approach provides continuity when people move on from the
project.

I'm not claiming it's a perfect system, but it seems to be working relatively
well in a language that is going through a much more active phase (in terms of
adding features) than Python.

~~~
dragonwriter
> That means the "For Life" part is more like "until they decide it's not
> worth the grief".

That is what “for life” means lots of the time outside of BDFL, too.

Federal judges retire, too. Monarchs and even regular, non-benevolent
dictators abdicate or otherwise step down.

------
metalliqaz
Interesting that Guido finally gave up dealing with the haters at roughly the
same time that Py2 is finally being replaced by Py3. It's almost as if there
is some kind of maturity milestone that has been crossed, and it's time for
things to change for good.

~~~
dduarte
[https://pythonclock.org/](https://pythonclock.org/)

------
bluecalm
I hope for another BDFL or at least a king. Democracy is going to be a mess.
Choose someone who wants to do it, agrees with Guido on as many as possible
fundamental things and isn't too much of a revulotionary please.

~~~
duckerude
This is speculative, but project dictators might be too risky for succession.
They can be good at managing the project, they can be bad at managing the
project, and there's no reliable way to tell in advance.

Guido was good. If he hadn't been good, Python wouldn't have caught on like it
did. If someone who starts a small project turns out to be bad at it, that's
no great loss - there are a lot of small projects. You don't see the ones that
fail.

But if you put someone in charge of a large project and they mess it up,
that's a large problem. It's better to go for a safe option with a reasonable
expected value than for the option with the highest best-case value.

~~~
d33
One can always fork.

~~~
jinpan
IMHO, it is too soon for Python 4.

------
vectorEQ
Dennis: What I object to is you automatically treatin' me like an inferior.
Arthur: Well, I am king. Dennis: Oh, king, eh? Very nice. And how'd you get
that, then? By exploiting the workers! By hanging on to outdated imperialist
dogma which perpetuates the economic and social differences in our society! If
there's ever going to be any progress-- Dennis: We're an anarcho-syndicalist
commune. We take it in turns to act as sort-of-executive officer for the
week-- Arthur: Yes. Dennis: But all the decisions of that officer have to be
ratified at a special biweekly meeting-- Arthur: Yes, I see. Dennis: By a
simple majority, in the case of purely internal affairs-- Arthur: [getting
bored] Be quiet. Dennis: But by a two thirds majority, in the case of more
major-- Arthur: Be quiet! I order you to be quiet! Dennis' Mother: Order, eh?
Who does he think he is? Arthur: I am your king! Dennis' Mother: Well I didn't
vote for you. Arthur: You don't vote for kings! Dennis' Mother: How'd you
become king, then? Arthur: The Lady of the Lake, [Angel chorus begins singing
in background] her arm clad in the purest shimmering samite, held aloft
Excalibur from the bosom of the water signifying by Divine Providence that I,
Arthur, was to carry Excalibur. [Angel chorus ends] That is why I am your
king! Dennis: Listen. Strange women lying in ponds distributing swords is no
basis for a system of government. Supreme executive power derives from a
mandate from the masses, not from some farcical aquatic ceremony. Arthur: Be
quiet! Dennis: You can't expect to wield supreme power just 'cause some watery
tart threw a sword at you! Arthur: Shut up! Dennis: I mean, if I went 'round
saying I was an emperor just because some moistened bint had lobbed a scimitar
at me, they'd put me away! Arthur: Shut up! Will you shut up?! [Grabs Dennis
and shakes him] Dennis: Ah, now we see the violence inherent in the system!
Arthur: Shut up! Dennis: Oh! Come and see the violence inherent in the system!
Help! Help! I'm being repressed!

------
LyndsySimon
OK, now that's cool. I wonder if Christian Heimes saw my post† on the HN topic
on the 12th, or if we both proposed the idea independently?

†:
[https://news.ycombinator.com/item?id=17516186](https://news.ycombinator.com/item?id=17516186)

------
syvex
Guido's leadership has really been what's kept Python so consistent during its
evolution. This is in contrast to languages governed by committee or
corporation.

Hopefully Python continues to be guided in this manner, and Guido can help
rally the Python community around a successor.

------
richiverse
Why not try a president of Python every 4 years with no term limits? Similar
to BDFL, except there are chances for change and a consistent voice throughout
a term. Voters would consist of core devs and PSF.

~~~
toyg
Basically the Debian model. It has some drawbacks.

------
jrs95
I'm just hoping this leads to a more multiparadigm Python that doesn't have a
seemingly irrational fear of FP

~~~
metalliqaz
This comment puzzles me. For one, I can't recall meeting a stong FP proponent
that accepts anything less than a language designed from the ground-up to be
true FP. Second, how is Python afraid of FP? This[1] document has been part of
the Python docs for as long as I can remember.

[1]
[https://docs.python.org/2/howto/functional.html](https://docs.python.org/2/howto/functional.html)

~~~
bunderbunder
There has been some pushback on the inclusion of common functional idioms in
Python, though. For example, GvR has expressed regret about allowing map,
filter, etc. into Python, on the grounds that comprehensions are a more
Pythonic way to accomplish most of the same stuff.

~~~
somenewacc
But comprehensions are also a functional idiom.

~~~
bad_user
FP means referential transparency. For-comprehensions operate on iterators and
iterators are not FP, being a very dirty and mutable protocol.

Do not confuse FP with declarative programming or with laziness. FP often
implies declarative APIs and laziness but not vice-versa.

~~~
duckerude
Python's comprehensions were lifted from Haskell, and its map and filter
functions also operate on iterables. They can't be purely functional because
of the surrounding language, but they do follow a functional style.

(expr for item in iterable if cond) is more or less another way to spell
map(lambda item: expr, filter(lambda item: cond, iterable)), except readable.

You could define "functional programming" to absolutely require referential
transparency, but that's not what the rest of the thread is doing.

~~~
kthielen
I don't mean to be pedantic but IIRC Python's comprehensions actually came
from the SETL language.

Obviously it's ultimately the same thing either way, but that's the lineage
(SETL -> ABC -> Python).

[https://en.wikipedia.org/wiki/SETL](https://en.wikipedia.org/wiki/SETL)

~~~
duckerude
I didn't know about SETL, that's interesting.

[https://docs.python.org/3/howto/functional.html#generator-
ex...](https://docs.python.org/3/howto/functional.html#generator-expressions-
and-list-comprehensions) claims Python borrowed them from Haskell, but the ABC
link seems more likely.

~~~
zephyrfalcon
ABC didn't have list comprehensions though, in spite of being influenced by
SETL.

As I recall, Python did get them from Haskell, which in turn got them from
Miranda, which got them from KRC. Before that it gets fuzzy, but it's likely
that SETL was eventually at the root of it.

------
spenrose
AFAICT, this article repeats the disaster of PEP572: it makes almost no effort
to discuss how Python is used. Specifically, it implicitly holds that the BDFL
+ core contributors model that served Python so beautifully from, say, 1992 to
2002 when Python had perhaps 2 orders of magnitude fewer users than it does
now and ran on—how can we know—3? 4? orders of magnitude fewer machines,
should be taken for granted as the default governance mechanism for Python in
2018, when it is a key part of the world's infrastructure. I have no idea how
to manage something as important as Python, but reading python-dev and seeing
the brilliant Tim Peters, who was indispensable to Python's early growth,
argue for a significant change in the language's semantics by using it to
refactor a few samples from his personal code base, strikes me as prima facie
evidence that neither do the core contributors. Millions. Of. People. Write.
Python. That. Affects. The. Lives. Of. Billions. Of. People. Start there.

~~~
whyever
> Millions. Of. People. Write. Python. That. Affects. The. Lives. Of.
> Billions. Of. People. Start there.

I don't think this is how open source development works. Probably most of the
core contributors are doing it for pleasure, not for satisfying the needs of
the users.

~~~
newen
This idea that are large and influential project like Python is just the same
as a hobby project I put on github and do in my spare time is ridculous. I am
pretty sure most of the core contributors of Python are doing it as part of
their 9-5 job.

Then there is the implication that because they are doing it for pleasure,
they don't owe anything to anyone. It's ridculous. This software affects
millions of people and it's not a dumb hobby project.

~~~
xj9
actually, by using Python you explicitly agree that PSF doesn't owe you
anything :)

[https://github.com/python/cpython/blob/master/LICENSE](https://github.com/python/cpython/blob/master/LICENSE)

4\. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES
NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT
NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF
MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF
PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.

5\. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY
INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF
MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF,
EVEN IF ADVISED OF THE POSSIBILITY THEREOF.

~~~
newen
I'm talking about social responsibilities. Not about legal liabilities.

If there is not implied social responsibility that PSF keeps python running,
then no one will be using it.

~~~
megaman22
Why? As long as python.exe runs code, people will use it. And there's too much
money invested in it for people that have done so to let it just die.

~~~
newen
Because PSF says they will support Python? What happens when there is a bug?
You fork Python? PSF gets 3 million in revenue per year. Where do you think
the money goes? Python is not a hobby project.

