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.
|