Announcing XFD

What have you done? I wrote a Build Radiator, or eXtreme Feedback Device.

Not another one! Why?

A few weeks ago, someone quite innocently locked their Continuous Integration server.  They locked it so hard, it caused the threads that listen for incoming TCP connections to lock up.  This quietly removed their Build Radiator and Continuous Integration server UI from the network.   Such an event causes great hilarity, as it causes developers to think that there's a network issue, and ask the wrong people to help fix the Continuous Integration server.

What caused the problem was a slightly mangled version of a plugin that creates a Build Radiator.  The product in question is fine.  The outage did cause me to reflect on scaling Continuous Integration, however.  As we scale up development teams, when should we stop dicking about with the server?  How do you expose the state of the build if you keep your mitts off it?

So I set out to build an eXtreme Feedback Device that had no dependencies, and no need to deploy.  The first version is below. It supports Hudson right now, and I plan to add support for more Continuous Integration servers in the future..

http://xfd.build-doctor.com

How does it work? When you load the page, it tries to connect via the JSONP protocol to a Hudson server.  Unlike technologies like XmlHttpRequest, JSONP can connect to a server that isn't the origin of the current page, as it returns a callback function which the JavaScript client can sanitise before running.  The results are then built up from the array of JSON build results.  Hudson is one of the few Continuous Integration servers with a JSONP interface.  I'll support any Continuous Integration server that supports JSONP or any AJAX technique that doesn't run into Same Origin Policy issues.  I'm already working on support for the next server.

Who wrote it? I started it.  It was fun learning JavaScript, CSS and JQuery during this project. That's not the whole story, however. Without the tireless efforts of Kushal and the sage advice of Ahmed, it would still be very basic.

What's next? I'm going to add JSONP support to a Continuous Integration server.  We'd also like your feedback.  I'd like to add some more information to it: for example, it would be nice to be able to tell you there's a new version of this tool, or perhaps your CI server.

Are there others? Yes.

DevOps New Zealand