= So, you want to contribute to Twisted? = First, a few recommendations: * Hang out on IRC and ask questions * [irc://irc.freenode.net/twisted #twisted] * [irc://irc.freenode.net/twisted.web #twisted.web] * Search trac for tickets with the [/query?status=new&status=assigned&status=reopened&keywords=%7Eeasy&order=priority 'Easy' keyword]. These are low-hanging fruit and are good for first-time contributors (avoid easy tickets with the "review" keyword! another developer has already started working on these). What you'll need: * [http://subversion.apache.org/ Subversion (SVN)] client[[BR]][[BR]] '''What about Git/Bazaar/Mercurial?'''[[BR]] Twisted development takes place in a Subversion repository, but you're welcome to use another VCS for local development.[[BR]] You'll still need to be able to checkout from the svn repository and keep your local development in-sync with Twisted trunk.[[BR]][[BR]] See [wiki:VcsWorkflows DVCS Workflows] for tips on using your favorite DVCS and keeping up-to-date with trunk. * [/register Register] with the site and create an account * A decent grasp of Twisted and what you intend to accomplish == Just the Basics == This assumes you will be working on an existing open [/report/ ticket]. === Checkout Source === Checkout a fresh copy of Twisted trunk. This is going to be your development branch.[[BR]] {{{ svn co svn://svn.twistedmatrix.com/svn/Twisted/trunk twisted-trunk }}} === Hack and Test === 1. Tests are '''required''' 1. Docstrings are '''required''' Hack away and then run the '''''full''''' Twisted test suite and make sure your new tests pass along with entire suite:[[BR]] {{{ trial twisted }}} === Submit a Patch === Create a patch from the root of your checkout and attach it to the trac ticket:[[BR]] {{{ svn diff -u > my-twisted-patch.patch }}} If the above doesn't work for you, your svn client may instead require the following syntax:[[BR]] {{{ svn diff -x -u > my-twisted-patch.patch }}} === Review Process === 1. Begin the [wiki:ReviewProcess Review process]. A core developer will review your changes and give you feedback. 1. You respond to the feedback using the ticket, attaching further patches as necessary. 1. Once your patch is in good shape and approved, it will be accepted. 1. A core developer will create a new branch for your ticket: {{{description-1234}}}, where ''description'' is a summary and ''1234'' is the ticket # 1. The new branch will be merged to trunk and your contribution will be forever remembered. == Next Steps == Twisted has a rigorous development process. Now that you have a basic idea of the overall process, you can continue reading about [wiki:ContributingToTwistedLabs#Prepare Contributing to Twisted]