Monday, July 10, 2006

More on why we made Buildix

Chris already blogged about Buildix. I thought I'd share some more of the background, and my take on why it is such a good thing.

Shorter Iteration Zero: When you start an Agile project you need to have some tools in place: SCM, CI etc. While you may not even have code if you're on a greenfield project, you still need to have some basic build system in place to compile, test and possibly deploy your code. This all takes time to do, and it generally involves some trial and error to get all the tools plumbed in together. So: Buildix helps you deliver code faster. You could be able to check in code in minutes. We demonstrated this at the TW London away day by interactively breaking and fixing the demo build during the presentation.

Easier upgrades: One pattern that comes up time and time again is checking all of the tools used into the source control system used on the project. So if you need to set up a new CI Server, you check out the tools from SCM. Fine. But upgrading them always seemed clumsy; especially when it's easy to fork a tool and check it back into SCM. So having a Debian based Linux distribution as the basis for Buildix was key - we can distribute tools as a Debian package, and leverage the APT system in Debian to take care of the mechanics of distributing upgrades and calculating dependencies.

Doing the right thing: We wanted some way of promoting good build and deploy practise in TW without trying to enforce anything or standardise on tools. Buildix is the container for those ideas, although we have a long way to go before we have a good sample of the lessons learned and techniques from all the projects worked on. I hope that we'll address some of this in the next Buildix release. I hope we can also improve on things like deployment to enterprise application servers. Stay tuned.

4 comments:

Vishal Sharma said...

Hi Julian,

I have been trying to download this ibuildx, but yr site (thoughtworks site - )its hosted on doesn't allow me to download it.

Also i would like to know if can install all these components one by one without much hassle, provided i'm using yr build scripts for integratiopn or is it too cumbersome to do this. I think taht will be very good if we can do that so that we know how its done and waht it needs for future work as well if required.

Vishal

Speigei said...

same here, site is down, can't event find the torrent somewhere

Josh Gough said...

This is a great idea. Thanks for this.

If I want to use this under VMWare on Windows, it seems like the only tool that won't be useful is Cruise Control. Is this correct, or is that still useful? Can it somehow coordinate NAnt builds running on a host server?

Thanks!
Josh

Julian said...

Josh,

I think the whole thing starts to fall over when you start with .NET. Buildix 1.0 included CC.Net and Mono, but I don't think anybody ever progressed that.

CruiseControl will support distributed builds soon (it already does, but I don't think the Buildix distribution carries that. Ideally it would evolve so that you could orchestrate remote builds running on any operating system, from the central node. [you can use the Java CruiseControl to kick off NAnt builds, etc. and the converse - you can use CCnet to build Java apps - only religion stands in your way :) ]

Anyway, since I left ThoughtWorks and Buildix I won't be progressing this. Unless someone wants to sponsor some work :)

In all seriousness, I think that Jay Flowers' CI Factory would be more useful for you.