Why Work on Python?

Why would you want to work on the Python core interpreter?

  • You might be a Python user who wants to make Python more useful for your purposes.
  • You enjoy hacking on sizable software systems in general, or perhaps language interpreters in particular.
  • You want to gain experience as a developer on an open source project.

From time to time you can see postings in various online forums from programmers who want to get experience developing a free software project. Many programmers seem to go off and start their own new project by beginning a new IRC client, mail program, or some similar application. However, the chances of making a useful contribution are better if you join an existing sizable project that's already successful. It'll also be more educational because a well-established project will teach you skills that aren't called into play for a smaller project.

Python would be an excellent project choice for these reasons:

  • Because Python is a large project, there are lots of available tasks suitable for different temperaments and skill levels. If you enjoy writing prose and explaining things, you can write documentation. If you can program in Python (and it isn't difficult to learn), you can work on the library modules, tools, and demo programs that are included with the Python distribution. If you can program in C, you can write extension modules or hack on the interpreter itself. If you'd rather inspect someone else's code than write your own, you can examine submitted patches or fix bugs.

You may think you have to be a highly skilled wizard who can rewrite the entire interpreter at the drop of a hat in order to contribute, but that's certainly not true; there are many things you can do, ranging from simple tasks to complex ones.

  • Python is over 10 years old, and its development process is quite mature at this point. At this point the project has acquired a public Subversion repository, a coding standard for both C and Python code, a framework for writing test suites, and infrastructure for tracking bug reports and submitted patches. A newborn project will have to grow for some time before it needs such ancillary tools, and many projects don't survive that long. Working on a large project such as Python will show you how to use these tools effectively in order to work with the 40 or so other developers.
  • The most important skill Python can teach is the delicate skill of working in a diverse group. There's a core group of around 40 developers, roughly 10 of whom are very active and make the bulk of actual check-ins, and the rest of whom make occasional checkins and provide opinions and advice. Lots of people outside this core group contribute significantly, too; bug reports and patches come from core developers, well-known Python users, and complete strangers. The list of active members is always shifting because developers have differing free time, availability, and interests.

To work with this large and dispersed group, you'll have to learn who's the right person to answer a question, how to convince the other developers of the usefulness of a patch, how to offer helpful criticism, and how to take criticism.

  • C programmers will find that the C source code for the Python interpreter is clearly written and easy to dive into. It's relatively easy to familiarize yourself with the code, and to begin writing extensions, making changes, or porting it to a new platform.

Note that it's possible to do a lot even if you don't know C at all. Working on the portions of the standard library that are written in Python is just as valuable for the project and is equally educational for you. Plus, programming in Python is much more pleasant than programming in C, because you get nicely formatted tracebacks instead of nasty core dumps and protection faults.

Most of the Python core developers seem to be on Unix, but there are a number of Windows and MacOS programmers. There's always room for more developers, no matter what platform, so don't hesitate to jump in.