Context Navigation

Google Summer of Code 2012

Getting in Touch

If you're interested in participating, please email itamar at itamarst dot org. (If you don't get a timely response, try the mailing list, my spam filter can be aggressive sometimes).

Project Ideas

These are just ideas, we're open to other ideas as well.

IPv6

IPv6: IPv6 is the new networking standard for the Internet; World IPv6 Day is happening soon (​http://www.worldipv6day.org/). We are still missing SSL, UDP, and multicast IPv6 support, not to mention IPv6 DNS lookups. Add IPv6 support for these transports with a full API and test coverage for these additions. Add relevant examples and documentation.

Requirements: In addition to Python, a decent understanding of networking and socket APIs.

Debugging UI

Build a user interface (a GUI, or maybe even Web-based). The idea is to have a debugging user interface for running a Twisted process that shows existing listening ports and open connections, and allows you to view bytes flowing over the transports. This would look you look at a running Twisted program and see what was going on inside and what data was flowing through it. (Twisted currently includes a half-broken "gladereactor" that is a gtk-based half-finished implementation of this). You'll learn about Twisted's internals, and get to build an interesting user interface and present information in a useful way.

Requirements: In addition to Python, some knowledge of either GUI programming or Web programming.

Sphinx documentation

Finish converting our documentation from a custom format and set of tools that we maintain (Lore) to the Python community standard - RestructuredText (ReST) as used by ​http://sphinx.pocoo.org/. In particular, resolve all tickets in the Lore to Sphinx milestone and then help transition the release process and twistedmatrix.com to Sphinx by participating in a release. You'll learn about releasing software, documentation tools, and maybe some data transformation (from HTML to RestructuredText).

Requirements: In addition to knowledge of Python, knowledge of HTML and perhaps ReST would be useful.

Don't break in other locales

Twisted currently has some bugs when used in certain non-English-configuration ("locales"), e.g. French. For example, date formatting might be wrong, or uppercase/lowercase conversion might work unexpectedly. As a first step you'd want to create a custom locale for Linux that was malicious about everything (e.g. lower-casing returns random unexpected bytes, dates are funky, etc.). This would be used to find places where Twisted is making US-centric assumptions, but would actually be a useful project for the Linux community in general. Then, fix resulting bugs in Twisted. Some relevant background material: ​http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html

Requirements: This is probably easier to do on Linux than on Windows, so some basic familiarity with Linux, and a computer configured to use it, in addition to knowledge of Python.

Other Tasks, Some of which Google may not like, but some of which may be workable

Finish half-done documentation: Merge existing documentation from elsewhere, e.g. Conch in 60 seconds, or half-finished documentation that is in the tracker (there's the start of an IMAP howto, for example.)

For a particular subproject, review and improve existing examples and howtos and add missing documentation. Every example needs a description, e.g. ​http://twistedmatrix.com/documents/current/web/examples/index.html has descriptions but ​http://twistedmatrix.com/documents/current/names/examples/index.html doesn't. Every example should document its purpose, how it is run, and what it should do. Examples should use current coding and documentation standards and shouldn't use deprecated code. Documentation should use current coding and documentation standards in code snippets, and should use the preferred APIs. Some subprojects have very little documentation or examples and simply need more. Audit and update relevant man pages.

Finish half-written code, documentation, bug fixes, etc.: We have >200 tickets that at some point had code written and received at least one code review, but for various reasons never made it in. This is a great way to learn because you don't have to start from scratch, and there's a variety of tasks (from minor fixes to documentation to new features) most of which have code reviews as a starting point. See ​http://twistedmatrix.com/trac/report/16 for a list.

PyPy: Have ​PyPy be a fully supported platform, with all tests passing.

If you have any questions while going through this material, don't hesitate to get in touch. You can email me, and you can also find me as itamar on the Freenode IRC network; jesstess on Freenode can also be of help if I'm not around.

Once you've gone through this material, the next steps will be to:

Meet up on IRC (stop by the #twisted channel)

Check out and explore the Twisted source code

Read a few parts of the Twisted core documentation and run some example Twisted scripts

Run the Twisted test suite - cd into the checkout folder and run "bin/trial twisted".

And then you'll be in great shape to start working on your first Twisted ticket. We'll suggest a first ticket when you get in touch over email; you'd want to fix it in your Twisted svn checkout, run svn diff, upload the resulting patch to the ticket and then add the "review" keyword to the ticket. This process is described in detail here: ​http://twistedmatrix.com/trac/wiki/TwistedDevelopment#SubmittingaPatch