How I Became a CPython Core Developer at 19

On September 20, 2024, at age 19, I became a member of the CPython core development team — the people who can merge pull requests into the CPython repository. Here is how that journey unfolded over roughly two years.

On September 20, 2024, I became a member of the CPython development team.

What Does "CPython Core Developer" Mean?

A CPython Core Developer is someone with the official authority to make changes to the source code of the CPython interpreter — the most widely used implementation of Python. In short, these are the people who can merge pull requests into the CPython repository.

My First Steps in CPython

My very first pull request was a documentation fix. That might sound strange, but such changes actually make a lot of sense.

Small contributions like these let you get familiar with the project's workflow: how to format commits properly, how the CI system works, how the review process goes, how to add entries to the "What's New" section, and — more broadly — how collaboration with other contributors is structured.

This first step is especially important because it lowers the barrier to entry and helps you understand not just the technical side but also the social aspects of participating in the project: how the community treats newcomers, how open it is to dialogue, and how the culture of collaborative work is shaped. In the case of CPython, everything turned out wonderfully — the core developers were friendly, patient, and genuinely willing to help.

Looking back, I understand that if the community had been less welcoming, I probably would have abandoned this path entirely.

Pull request reviews are mostly done by triagers (more on them later) and core developers. That said, absolutely anyone can leave comments and participate in reviews — this is encouraged. However, for a pull request to be accepted and merged into the main branch, it needs at least one approval from a core developer.

Choosing a Direction

After I got comfortable with the project's processes, the next question arose: what exactly did I want to work on? CPython is a massive codebase. It's simply impossible to understand all of it. Even among core developers, there is no one who has a thorough grasp of every single part.

Two topics drew me in — reference leaks and segmentation faults. I devoted all my subsequent time to exactly those: finding, analyzing, and fixing them. This work is not only interesting but critically important. A reference leak almost always means a memory leak, and seeing a segfault while running your own Python code is something nobody wants.

I won't pretend: sometimes these bugs drive you mad. They are complex, sneaky, and require dozens of hours just to understand what is going on. But every time I managed to fix one, the feeling was stronger than any fatigue. I knew this was genuinely helping someone. And that sense of making a difference kept pushing me forward.

Becoming a Member of the Triage Team

By mid-2023 I already felt at home in the project and started thinking about the next step — joining the Triage Team. But who are triagers? It is an intermediate role between a regular contributor and a core developer.

A triager has a number of privileges that distinguish them from an ordinary contributor:

  • The ability to edit the title of a PR or issue
  • The ability to close a PR or issue
  • The ability to add labels to a PR or issue

In addition, triagers are added to the Python organization on GitHub and invited to a private Discord channel where other triagers and core developers communicate. These two things become a kind of recognition of your activity and involvement in the CPython community.

After mentally compiling all this information, I decided to reach out to one of the core developers about joining the triage team. By that point I already had a thorough understanding of the workflow and was ready to help new contributors.

And I got lucky! My proposal was approved and I was added to the triage team.

For me, this was an important step, confirming that the CPython community sees and values my efforts.

The next seven months passed at an intense pace. Every day I tried to set aside at least an hour to work on CPython, aware of how important consistent progress is. In March 2024, after many small fixes, improvements, and interactions with the community, I received a long-awaited letter. It came from Victor Stinner himself — one of the most well-known CPython developers.

Mentorship

The letter contained an offer of mentorship. By that point I had already worked quite a lot on CPython alongside Victor, and based on that experience he decided to take me under his wing.

Of course I could not turn down such an offer. After I agreed, Victor began reviewing every pull request I submitted and giving me advice on how to improve them.

Honestly, I had expected the mentorship to be more formal, but it turned out to be far more friendly than I had imagined. You can discuss any topic with a mentor, not only CPython, which definitely eases the tension.

Days flew by, and I increasingly understood my area of responsibility and what the other core developers expected of me.

CPython development statistics

One Fine Day…

In early September 2024 Victor wrote to me with a proposal that I become one of the core developers. I have to admit, it was incredibly inspiring. I had always understood that this would happen someday, but in that moment everything felt somehow unattainable. There was not a single scenario in my head where I could say "no" to his offer.

On September 10, 2024, after I gave my consent, Victor created a special poll regarding my becoming a core developer. Only current core developers may vote in it, and to become an official member of the team one needed to receive two-thirds of the positive votes.

The vote itself lasted a full week, and during that time the results were not visible. This added a certain intrigue and drama — every statistics update could bring either joy or disappointment. That period became a real test of patience.

Exactly a week later the voting ended, and… yes! It concluded with a result of 31 in favor and 1 against. I had actually expected this outcome, since I had never entered into conflicts with any core developers. Unfortunately the vote is anonymous, so there is no way to find out who voted against.

A couple of days later I was granted all the necessary privileges, and in this way I became a full-fledged core developer.

Takeaways

Roughly two years after my first commit to CPython I became part of the team that has the right to merge changes into the project's main branch, and I now have more than a hundred commits to my name.

Was it worth it? Absolutely yes. During this time I met many outstanding people: Guido van Rossum (yes, the creator of Python himself!), Victor Stinner, Nikita Sobolev, and many others.

Now, as a Python core developer, I can apply for grants to attend core sprints around the world, as well as other privileges that previously seemed out of reach. One of the most amusing was the ability to get an email address on the python.org domain, which I naturally could not pass up: eclips4@python.org.

All those hours I spent on CPython have definitely paid off. Of course, sometimes it is exhausting. There are moments when you feel burnout — it is inevitable. Such moments happen, and honestly they are not always easy to deal with. But every time I see how my contribution helps the community, and realize that I have become part of something large and meaningful, those efforts feel completely justified.

FAQ

What is this article about in one sentence?

This article explains the core idea in practical terms and focuses on what you can apply in real work.

Who is this article for?

It is written for engineers, technical leaders, and curious readers who want a clear, implementation-focused explanation.

What should I read next?

Use the related articles below to continue with closely connected topics and concrete examples.