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 _______________________________________________ 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/