I have been learning and using Python for the last several months and I am interested in getting involved in open source projects using Python so as to be exposed to good implementations of Python in the real world.
What are some that folks recommend?
(If at all possible please try to provide just one project per answer.)
Twisted [1].
And of course, being an open source project we're always looking for more contributors, so we will be happy to have any help you would be inclined to give.
[1] http://twistedmatrix.com/More important than any specific project is that you should contribute to a project that you personally want to use.
I recently stumbled across the OpenHatch [1] site which is specifically built to index bug trackers and list "bitesize" issues:
Bite-size [ˈbaɪtˌsaɪz], adj. Good for newcomers; relatively easy and rewarding to fix.
It lists quite a few Python projects [2].
The mentor system [3], while I havent used it, seems quite super as well. People add themselves to a list, specifying which languages and/or projects they are willing to mentor as well as a location (optional).
[1] https://openhatch.org/Use whichever makes sense to you. You won't be much help to the project if it's not one that you personally care about.
As others have said, pick something that you're interested in and is implemented in Python.
Python [1] itself is a good open-source project. You might think it's too difficult to start with, but you don't have to dive right into the C code - there are lots of places you can start that involve looking at the library modules, for example. Reviewing patches [2] and adding documentation where it is missing is a great start.
[1] http://python.orgAnother directory of Python open source projects [1]. Can be sorted by freshness, popularity, etc. Also has project metrics and historical overview.
[1] http://www.ohloh.net/p?sort=users&q=language%3ApythonNow that Django has hit 1.0, I'm sure they're getting more help, but they always will need help with tickets, and extending the system with plugins and whatnot. Some info here [1].
[1] http://code.djangoproject.com/#GettinginvolvedZope [1] has all the benefits of working on Twisted (per another excellent post) but a wider set of problems to choose from. You'll also get exposure to i18n [2] issues and other aspects of large scale, broadly used software.
It has the added benefit of quite a bit of paid work available in the community once you've proven yourself.
[1] http://www.zope.org/Pythoscope [1]
[1] http://pythoscope.org/To create an easily customizable and extensible open source tool that will automatically, or semi-automatically, generate unit tests for legacy systems written in Python.
There are also a couple of projects being advertised on stackoverflow [1].
[1] http://meta.stackoverflow.com/questions/31913/open-source-advertising-sidebar-1h-2010Mercurial [1] or its GUI frontend TortoiseHg [2]. (Yes, I know that is two projects, but they are pretty tightly coupled together.) Seems Mercurial has gathered some momentum now. These are two projects I have been thinking about contributing to myself.
They are both mostly written in Python (some core things and windows shell extension in C/C++).
[1] http://mercurial.selenic.comPick a project that coincides with your personal interests. You'll be immensely more productive, and more likely to help long term, if you're personally invested in the project's target audience.
http://stackoverflow.com/questions/1933329/good-python-open-source-to-learn/1933352#1933352
If you're coming from a functional programming background, pysistence [1] may be a good place to look.
Full disclosure: I wrote it.
[1] http://packages.python.org/pysistence/A quick search on a popular search engine starting with 'G' and rhyming with "schmoogle" revealed a handy list at http://pythonsource.com/ .
As already commented it depends on your personal tastes. However, there are a number of tools that use Python as an extension mechanism and these may start you off in the right direction and to see whether you want to participate around a particular project.
As an example Inkscape [1] and Blender [2] both have python extension API's
M
[1] http://inkscape.orgTwisted [1] is a popular networking engine that's used in a number of other open source projects (Zenoss, Zope, etc). If you're at all interested in networking then you should check it out.
[1] http://twistedmatrix.com/trac/The Fedora Project uses Python in a number of projects located at their Fedora Hosted site.
If you want to get involved in game design with an relatively easy learning curve, try OpenRPG [1]. It's built with wxPython so you get standard GUI design practice along with networking and other areas that will benefit you later on.
[1] http://www.openrpg.com/wxPython [1] is one of the best way to create GUI using python. I guess all you need to do is subscribe to their mailing lists [2].
[1] http://wxpython.org/SpamBayes [1] is looking for people interested in helping. If you're interested in mathematics/statistics, or email, or developing/testing Windows applications, those are all areas that could use help.
[1] http://spambayes.orgWikidPad [1] is a pretty cool PC-based, personal Wiki written in Python.
[1] http://groups.google.com/group/wikidpad/web/homePythoncard [1] -- they seem to have slowed in terms of active development and would probably welcome some help. Their code base uses various design patters, so it is a good way to get exposure to those.
[1] http://pythoncard.sourceforge.net/