[python-committers] What is a CPython core developer?

Antoine Pitrou antoine at python.org
Fri Sep 22 12:48:31 EDT 2017


Hi Victor,

Thank you, this is a useful write-up!

Le 22/09/2017 à 16:26, Victor Stinner a écrit :
> 
> I started to list "responsabilities" (is it the correct word?) of a
> core developer.
> 
> First of all, I like how Mariatta summarized a promotion (in an oral
> discussion that we had). Becoming a core developer doesn't give
> *power*, but *responsabilities*. (Sorry, I'm not sure about the exact
> wording, maybe Mariatta can correct me here ;-))

Well, it gives both, which is the only way things can work sanely.
If you give power without responsabilities, you are creating a jungle;
if you give responsabilities without the power to exert them properly,
you are creating frustration and a dysfunctional environment.

> I identified the following CPython core developers responsabilities:
> 
> * Long term commitement. We someone lands a big chunk of code, we need
> someone to maintain it for at least the next 2 years. Maybe for the
> next 10 years. I think that some people sign with their blood to
> maintain crappy code for their own life, but it's better to not
> elaborate this part ;-)

Unfortunately we can't evaluate that in advance.  Even the person being
promoted often does not known whether they'll still be there in 5 or 10
years.  Hopefully that's on their horizon, but many factors can interfere.

I, personally, can only think of a couple of cases where a person being
promoted core developer vanished a few months after that.  It's not a
big deal in the grand scheme of things, though it *is* frustrating to
spend your time mentoring and promoting someone (which also engages your
own responsability, since you're the one vouching that they'll be up to
the task) only to see that person produce little to no work as a core
developer.

> * Review patches and pull requests. While we don't require not expect
> newcomers to review, we expect that core developers dedicate a part of
> their time on reviews.

Yes, I believe this is the most important part of being a core
developer.  What it means is that core developers care about the quality
of the whole code base (and also the non-code parts), not only their own
contributions to it.

> * Know the CPython workflow. Be aware of the pre-commit and
> post-commits CIs. How ideas are discussed. It's not only about writing
> and pushing patches.

This part is also required from regular contributors, at least the
experienced ones.

> * For C developer: know CPython specific issues like reference leaks
> and the garbage collector. We expect that a core developer write code
> with no reference leak, right? ;-)

This is no different from regular contributors posting patches with C
code in them.

> * Good quality patches: proposed changes are good (or almost good) at
> the first iteration. I'm not sure about this point, but I know a few
> other developers have this requiurement to promote someone.

Or, if the code isn't good at the first iteration, the author is able to
figure it out by themselves and doesn't rush merge it.  Of course,
nobody is perfect, which is why non-trivial code written by core
developers ideally goes through a review phase anyway.  But a general
sense of what is "in good state for review/merging" vs. "just a draft
I'm working on" is indeed, IMHO, preferrable.

> * Pushing core means becoming responsible for this code. For
> regressions, backward compatibility, security, etc.

Yes, this is the whole "know the project's lifecycle" thing.  It also
includes knowing what to backport or not.

> * Something else?

Two things I would add:

- Know to be nice and respectful to the others, at least to the extent
they're nice and respectful to yourself :-)  We don't have a rock-star
(or "bro", "wizard", "ninja", whatever the hyperbole of the day is)
culture here.

- Show a bit of humility towards existing work and try to understand the
decisions behind something before deciding to change it all.  That said,
given Python's current position on the technical evolution and adoption
curve, we get less and less proposals for sweeping changes (perhaps not
enough, actually, since even when rejected, they help challenge the
statu quo).

Regards

Antoine.


More information about the python-committers mailing list