What should I do if I'd like to get more involved with contributing to Python?

Hi Kira,

Asking questions in issues and PRs when they raise doubts for you is an interesting way to contribute (helps make the issue clearer for everybody) and learn IMHO. Trying to reproduce and diagnose issues also helps development and teaches you at the same time.

Testing open PRs (by applying them, running tests, trying to come up with cases it doesn’t handle, etc.) or even just assessing them and interacting with them (do they have new tests that cover the code change? can you see a simpler way of making the proposed change? do you see code or docs that you’d like to understand better?) can also be fruitful.

I understand there are topical CPython projects that are looking for contributors and ready to mentor you, for example the JIT effort seems very open in that regard.

One interesting thing I think could help you get familiarized with the wealth of issues of the CPython repository is, for any new issue you find interesting, try to find duplicates or related issues and comment about them in the new issue. Can be a great help and some issue reporters don’t properly do this when creating a new issue. And by some issue reporters I mean me, sorry about that.

You can also pick some side or related project that impacts CPython in some way and work on that, like the GitHub bots or improving the devguide with the feedback from your experience reading it.

To get a hang on the internals of CPython, reading code, PRs and the docs Mikhail mentions is a great start, but there’s also a book about that if you’d like to do it in a more structured way (it seems you can find it cheaper on other sellers).

There are also non-CPython related projects that can teach you about specific parts of CPython, like coverage.py, memray, etc.

And last, something that doesn’t fit the way I work but may be interesting for others, is to set a somewhat difficult goal (like adding a whole new feature to CPython or fixing an involved issue) and work through learning just the parts you need to achieve that. Great way to feel lost, great way to learn a lot by doing.

Sorry for the long message, I hope it helps you! And thank you for wanting to help to improve Python!