LCA07 talk on UQDS Abstract

(What follows is my Abstract I'm submitting to LCA07 on UQDS)

Contributing to open source projects is hard. If you've found a bug, you have to go to the effort of fixing it, testing that your fix works, making a diff against the upstream repository, and submitting your patch. Once you submit your patch, you don't know if it's going to even be accepted.

In the Twisted project we now enforce strict rules, such as usage of a task tracker, branch based development using subversion, mandatory unit tests and absolutely no commits to trunk without an independent code review. This process was pioneered at Divmod.org, and brought into the Twisted project later.

Branch based development allows us to remain agile, committers can work on what they want to without fear of it clashing with anyone else's code. Once they're finished, and an independent review has passed the code, the code then may be committed to trunk. Casual committers are treated just the same as everyone else. A casual contributor may submit a patch, and get it accepted or rejected based on the same strict rules that apply to the project leader and the top committers.

Initially, we feared that enforcing these strict rules for an Open Source project would drive casual contributors away. Our finding is that our changes resulted in an engaging experience for contributors and core developers. The community as a whole was motivated to produce code of a high standard. Contributors stay around longer, and care about the resulting code far more than we have previously seen.

Contributing to an Open Source project is hard and requires a lot of motivation. By putting a strict development cycle in place, the twisted project has found that the quality has improved and, contrary to common wisdom, the rate at which contributions occur has increased.

The Twisted project lives at http://twistedmatrix.com and #twisted on irc.freenode.net

Tools we use are:
  • http://svn.tigris.org/ Subversion for source control
  • http://www.divmod.org/trac/wiki/DivmodCombinator Combinator is a tool we use for managing our branch based development
  • http://buildbot.sf.net/ BuildBot for automated builds
  • http://trac.edgewall.org/ Trac for bug tracking

More information about the Ultimate Quality Development System can be found at
  • http://divmod.org/trac/wiki/UltimateQualityDevelopmentSystem
  • http://twistedmatrix.com/trac/wiki/ReviewProcess

No comments: