=================== Why Develop 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 go off and start their own 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 is an excellent project choice for the following reasons: * Because Python is a large project, there are many 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 certainly do not have to be a highly skilled wizard who can rewrite the entire interpreter at the drop of a hat in order to contribute. There are many things you can do on the spectrum of tasks ranging from simple to complex ones. * First released in 1991, Python's development process is quite mature at this point. The project has 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 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 over 100 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 115 developers. Roughly 10 of them are very active, making the majority of commits to the source tree, and the rest make occasional commits and provide opinions and advice. Many 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 varying 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 straightforward 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 crashes and segmentation faults. Most of the Python core developers develop on Unix (primarily Linux), 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.