Creating Habitable Code: Lessons in Longevity from CruiseControl

Level: Practicing

A major challenge for software organizations is creating software that can continue to adapt and change over time, a code base the team can live with. This session reviews the lessons learned from CruiseControl, a popular tool for continuous integration. CruiseControl is an open source success story not only because it has had over 400,000 downloads but also because it has successfully contributed to by over 200 different people. For practitioners who are tired of brittle code that must be discarded and rewritten CruiseControl provides valuable lessons.

Process/Mechanics

This is a talk that we presented at Software Development Best Practices that was (largely) well received. The talk is a pair presentation with audience interaction — lots of raising of hands in response to our questions, lots of opportunities to ask questions.

The story of our talk is that the CruiseControl projects had many elements that you would expect to lead to trouble in a typical project:

  • Long lived code base
  • Distributed team
  • Large team
  • People coming and going from project
  • Technology changes

But CruiseControl has managed to survive factors and we thing the reasons why (see learning outcomes) would be useful for enterprise projects as well.

Paul (me@pauljulius.com) is one of the CruiseControl project originators. Jeffrey (jtf@jeffreyfredrick.com) was an early user of the project and has been a long time committer.

Learning outcomes
  • design elements: inversion of control, dependency injection, separation of concerns, open/closed principle
  • role of a project architect
  • high visibility commits
  • involving new developers
  • the advantages of ignoring technology hype
  • remediating inhospitable code
Featured participants
Primary target persona