Important

This is part of a Draft of the Python Contributor’s Guide. Text in square brackets are notes about content to fill in. Currently, the devguide and this new Contributor’s Guide co-exist in the repo. We are using Sphinx include directives to demonstrate the re-organization. The final Contributor’s Guide will replace the devguide with content in only one place. We welcome help with this!

The [Plan for the Contributor’s Guide] page has more details about the current state of this draft and how you can help. See more info about the Contributor Guide in the discussion forum: Refactoring the DevGuide.

[This is the existing core developers How to become a core developer page from the devguide with the title changed. We’ll adjust “core developer” to “core team” where appropriate.]

How to join the core team

What it takes

When you have consistently made contributions which meet quality standards without requiring extensive rewrites prior to being committed, you may qualify for commit privileges and become a core developer of Python. You must also work well with other core developers (and people in general) as you become an ambassador for the Python project.

Typically a core developer will offer you the chance to gain commit privilege. The person making the offer will become your mentor and watch your commits for a while to make sure you understand the development process. If other core developers agree that you should gain commit privileges you are then extended an official offer. How core developers come to that agreement are outlined in PEP 13.

Gaining commit privileges

After a candidate has demonstrated consistent contributions, commit privileges are granted through these steps:

  1. A core developer (submitter, usually the mentor) starts a poll (see the template below) in the Committers category on the Python Discourse.

    • open for 7 days

    • results shown only upon closing

  2. If the candidate receives at least two-thirds positive votes when the poll closes (as per PEP 13), the submitter emails the steering council with the candidate’s email address requesting that the council either accept or reject the proposed membership.

  3. Assuming the steering council does not object, a member of the council or delegate (approver) will email the candidate:

  4. Once the candidate has provided the pertinent details, the approver will:

    • Enable the various new privileges.

    • Remove the new committer from the triage team, if applicable.

    • Add their details to 🔒 python/voters.

    • Update the devguide to publicly list their team membership at Developer log.

    • Post an announcement in the Committers Discourse category. The past few announcements were in the form of a separate post on the already open topic with the poll.

Poll template

While Discourse uses Markdown for formatting, the poll functionality is custom and somewhat resembles BBcode. There’s a creator for polls in the UI (click the cog icon in the edit box toolbar and choose “Build Poll”). Here’s what it outputs, you can copy and paste it for your poll:

[poll type=regular results=on_close public=false chartType=bar groups=committers close=2024-07-15T21:15:00.000Z]
* Promote Basil Fawlty
* Do not promote
[/poll]
The important options in the poll builder set to get this result:
  • Show who voted: disabled (public=false)

  • Limit voting to these groups: committers (groups=committers)

  • Automatically close poll: in 7 days (close=...)

  • Show results: When poll is closed (results=on_close)