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

Victor Stinner victor.stinner at gmail.com
Fri Sep 22 10:26:51 EDT 2017


Hi,

Recently, I asked their opinion to a few core developers about
promoting some active contributors to core developers.

It seems like we have no clear rules to decide if a contributor can be
promoted or not. The problem is that sometimes, I am explicitly asked:
What are the steps to become a core developer? Well, I'm not sure why
some people really want to become core developers, but that's not
question here :-)

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 ;-))

I also see that some core developers are more conservative, want to
reduce the risk of regressions, while some others are more on the
"forgiveness" trend ("it's better to ask forgiveness than
permission"). I think that it's perfectly normal and expected to have
people on the two sides. The question is how to find a compromise in
the middle.

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 ;-)

* 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.

* 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.

* 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? ;-)

* 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.

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

* Something else?

I don't expect this list to be complete. A vote for a promotion is
always done on a case by case basis, mostly because it's really hard
to be ready on *all* expected points. The discussion is more to
estimate how far is the contributor in its learning, if it's enough,
if more learning is needed, or if mentoring is needed.

Maybe we should also formalize the mentoring for contributors
identified as potential core developers. It can be an explicit step in
the promotion process. Each last core developers who get promoted last
year get a mentor if I recall correctly. What do you think?

I started to write an article "What is a CPython core developer?"
which describes even more things:

https://cpython-core-tutorial.readthedocs.io/en/latest/what_is_a_cpython_core_developer.html

Victor


More information about the python-committers mailing list