Eras of Continuous Integration

November 3, 2008: updated to reflect some very good comments from some fine commentators.

Continuous Integration is a practice. You can do CI without any automation at all - the original Fowler paper says as much. James Shore wrote a good guide on this.

This post is about the eras automated Continuous Integration. The title wouldn't seem so snappy if I put all that in there.

The First Era of Continuous Integration (1999 - 2006) is of course characterised by the dominant CruiseControl product and it's variants. Although CruiseControl wasn't the first automated CI server (that honour seems to go to Tinderbox), it became very popular. Many projects were won for ThoughtWorks as companies would attempt to install CruiseControl, fail, and then get a friendly ThoughtWorker in to do the install. Who would get two friends in. And so on. Also notable in this era were CruiseControl.net, DamageControl, Gump, Continuum, and a few others.

I like to think of this era as the equivalent of the original .com boom. Everybody knew it was going to be interesting. Exactly how things were going to work out was another thing. Hence it made sense to have a framework for CI, rather than a fixed product.

Also, XML and XSL were briefly cool during this time, and these technologies left their mark.

The present era belongs to no single company or group. For me it began the day Team City was introduced. That product changed the game by bringing a very functional user interface and some clever build engineering and integration together. Hudson deserves a smaller mention for things like the weather metaphor. I really hate the butler; perhaps someone will come up with a bartender patch.

Ultimately I think this era will give us more usable tools and a shift towards systems integration and deployment: Ant Hill Pro has had a story about that for a while, and the Cruise team seem to be sashayingin that direction as well.

One thing that begins to matter in an enterprise context is authorisation. Can anybody drop in and change configuration? Once you do that, how do you maintain the list of users to map rights to? Active Directory/LDAP integration seems to be the trend here. Step forward Team City, Hudson, Parabuild, and Pulse and others.

(image taken from debaird's photostream)

DevOps New Zealand