Ivan Pozdeev via Python-Dev writes:

 > Possessive and obstructive behavior like Victor describes below is
 > incompatible with the bazaar model of development (=a model where
 > the dev team accepts contributions from a wide range of people).

True, but Python *modules* have frequently followed a not-exactly-
benevolent dictator model.[1]  As mentioned by several contributors
(including some who have expressed adverse opinions on the behavior in
this case), the Decimal module is composed of extremely high-quality
code, which has also been revised to provide a huge performance
enhancement.  Purely obstructive behavior is IMO relatively easy to
identify, but it can be quite difficult to distinguish a very high
quality standard from possessiveness.  For the team members and
occasional contributors, it can be very satisfying to clear a high bar
after much effort.  (But then, I have a PhD so I may not be a good
person to testify on this.)

Within modules, I think there is plenty of room for a wide variety of
attitudes toward quality of code, especially given the branching
capability of our VCS: from "move fast and break things" (and fix them
even faster) to "every commit should be release-candidate-ready".  (In
some cases, such as the interpreter itself, the SC will want to
mandate a level of QA, and of course any such standard will vary by
branch and over the release cycle; that kind of situation is included,
just not project-wide.)

 > As a result, both sides lose: users don't get the features/bugfixes
 > that they want (since their contributions are being rejected for no
 > good reason), maintainers don't get contributions (since their
 > requirements are unreasonable or outright impossible to meet), both
 > sides waste a lot of time unproductively in the process.

Sure, but there are also cases where extremely high standards lead to
a small, tight-knit, and highly productive team.  As a general policy,
I hope the Steering Council will lean hard in the direction of
inclusiveness, but by the same token we can include a few teams that
choose to impose extremist standards on *themselves*.

Of course, giving the benefit of doubt to the Decimal maintainer,
sometimes extreme quality demands will conflict with project-wide
efforts such as Victor's refactorings.  I've dealt with such
refactorings in the past: they can be a real PITA to other developers
as the code they're working with changes out from under them.  As
Victor describes his work, it was worthwhile in terms of performance
improvement, of very high quality in terms of regression testing for
the particularly demanding Decimal module, and (I guess) not touching
on the internals of the Decimal module (ie, the changes seem to be in
boilerplate code for interfacing with the core code).  In such cases
it's not obvious where the burden of resolving the conflict *should*
fall: with the "outsider" mucking around in "everybody else's" code,
or with the individual maintainers, to keep their code up with best
practices in the project.  I don't see a general principle here.  I
think that when the parties involved don't negotiate a settlement
themselves, this decision needs to be made on a case by case basis.

 > For a testimony from someone with more experience at maintaining
 > than me, see e.g.
 > http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s03.html
 >  and 
r > 
http://www.catb.org/~esr/writings/cathedral-bazaar/homesteading/ar01s11.html .

I don't really trust Eric on these issues.  He has a very spotty
history, himself, and in personal interactions I've seen him to be
both quite open to personal criticism and rather hypocritical (in the
literal sense of not thinking much about it and just accepting the
natural human feeling that "I'm a good guy, I'm probably not wrong!")
And in fact, both of those selections expose internal contradictions
of the models ESR espouses.  I agree, those are seminal models, but as
the word "seminal" suggests, they needed a lot of development.

 > AFAICS, Python uses the bazaar model as its development
 > principle. As such, Stefan could be suspended even earlier, at one
 > of the instances that Victor described, -- for sabotaging the
 > project.

In this case, I tend to agree with you *in theory* based on what has
been stated (and mindful of the fact that Stefan has said very
little), but I could only advocate action if I knew *much* more of the
facts.  But I don't see how this could possibly be usefully enunciated
as policy.  It's too fact-dependent.

 > On 10.10.2020 16:46, Victor Stinner wrote:

 > > I was never comfortable with the fact that other contributors
 > > must also avoid Stefan (missing stair) and so don't attempt to
 > > touch the decimal module. I would prefer greater collaboration on
 > > a stdlib module, because we have to distribute the maintenance to
 > > make Python sustainable.

I think "comfortable" is an excellent word here.  I don't think that
the Steering Council can make sufficiently detailed rules to avoid all
case-by-case decisions, and sometimes difficult cases are going to be
decided by minimizing their discomfort.  As long as they recognize
that's what they're doing, and don't claim a provable decision from
first principles, I'm happy with that.  (Speaking for nobody but
myself.)

 > > The good news is that if core developers consider that the
 > > current Steering Council gone too far, there will be soon a new
 > > election for a new council! ;-)

I don't think that's good news, to be honest.  It's necessary, and I
hope that there is some turnover.[2]  But overall continuity is
necessary, even if some of it's bad.  In my opinion, the Steering
Council should aim to add a very few good practices and delete or
improve a few bad ones each cycle.[3]  We're starting from a pretty
good status quo ante -- don't mess with success!


Footnotes: 
[1]  AFAIK the maintainers involved are good people and well-liked,
but frequently they'd disappear for years and wouldn't appoint a
deputy, even temporarily.

[2]  Mostly because this can be emotionally distressing work for the
Council members.  Nobody should have to make decisions like this one
very often.

[3]  For people it's the opposite, of course.  Adding should be many
good ones, and suspending/banning as few as possible.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/Y7MKERB5ULTR56F7ZZCYBLCG3DQJHS2V/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to