I’ve been following the progress of a continuous integration build manager called DamageControl for over two years now. DamageControl is a Ruby on Rails based framework for triggering builds of software, whenever there is a check-in to the source control system. Essentially it fulfils the same job as CruiseControl and Mozilla Tinderbox - detecting when a build has been broken by a bad check-in, but with an attractive web-front end and some nice configuration features. DamageControl interfaces very nicely to a variety of source control systems through the RSCM (Ruby Source Code Management) library.

I’ve ‘lurked’ on the DamageControl developers and user mailing lists long enough to get a feel for how the project is progessing. However, I’ve been disappointed that although DamageControl has gone through many version increments - I came in at DC 0.3, we’re currently around 0.6 there has never been anything approximating a stable release.

Now I know as much as the next open-source contributor how difficult it is to remain committed to a project, but lack of committment doesn’t seem to be the problem here. If DamageControl were a commercial offering, it condition would be diagnosed as ‘inability to ship’. DamageControl is perpetually undergoing, the next big refactoring, which it is promised will lead to a ’stable version’. As any experienced developer knows, software is never ‘finished’ and it is nearly always beneficial to re-write or refactor. However, every project has to break out of this loop at some point, if only temporality, to stabilize the code and benefit user feedback and bug reports from a specific version.

However today, after checking back at the DC site after six months I have given up hope, DamageControl has the following message on its site:

DAMAGECONTROL HAS HIBERNATED

It’s currently not under active development.

It’s not completely abandoned - development may pick up again once I …. get more time to work on it.

The first lesson is that not everything created atop Ruby on Rails will be rip-roaring success. The second lesson I take from this, for my own projects, is that there is enormous value in creating something that works and that is incrementally useful, even if it is merely the Simplest Thing That Could Possibly Work. The third lesson is that providing something that is easy to install and start actually using, hugely increases the probability of a project being successful; having to extract specific revisions from Subversion, and run them against very stringent Ruby, Rails and other package versions is a severe hindrance. Creating a community of motivated users around the product is fundamental to success. Rather this, than a sense of unrequited expectation amongst a group of potential users who find it difficult to get involved because the code train is never moving slowly enough to leap aboard.

By default Windows iTunes stores the music metadata, although not necessarily the music itself, in the current user’s My Music folder. For user Alice, this will be located in,

C:\Documents and Settings\alice\My Music\iTunes\

and for Bob in

C:\Documents and Settings\bob\My Music\iTunes\

which means that the two users can’t share settings, playlists and the like easily.

On a Unix-a-like system we could solve this with symbolic links by linking the two iTunes directories to a common location. Of course, everybodys know that symbolic links do not feature in Windows filing systems.

Or do they?

In fact NTFS supports a feature various known as Junction Points or Reparse Points which can be used to ‘mount’ other directories or even volumes onto the location of existing directories. The facility to create junction points is not exposed through the standard Windows user interface, presumably because of the havoc you can wreak if you don’t know what you’re doing. However, for those of us who know exactly what we’re doing, they’re just what the doctor ordered.

In order to create junction points you can use the free tool Junction Link Magic from Rekenwonder Software. We’ll use it to make iTunes multi-user!

The following procedure is documented prior to installation of iTunes. It is possible to retrofit this to an existing iTunes installation, but you need to take care to not lose your existing iTunes settings, and its not clear how to merge the settings of existing iTunes users.

First we need to create the common location that different Windows iTunes users will share. So whilst logged in as an Administrator, create the directory

C:\Documents and Settings\All Users\Documents\My Music\iTunes\

Before we can create the junction points themselves, we need to create ‘host’ folders in the correct locations, so create the following two directories:

C:\Documents and Settings\alice\My Music\iTunes\
C:\Documents and Settings\bob\My Music\iTunes\

Now, having installed Junction Link Magic, use it to create a Junction Points from each users iTunes directory to the common location. When you first launch Junction Link Magic it will spend a few minutes searching your file system for existing junction points. When this process is complete you will most likely see an empty list of junction points,

Junction Link Magic

First we will create the junction point for Alice. Click the ‘Create’ button and select both Alice’s host iTunes folder, and the All Users iTunes< folder. Note under Windows XP the browser may show different directory 'user friendly' names such as All Users\Shared Documents\Shared Music\ instead of the true directory name All Users\Documents\My Music\ show in the label below the browser.

Junction Link Magic Create

Junction Link Magic will confirm that the operation has been successful, and show you the created junction point in the table in the main window.

Do the equivalent operation as required for other users on your system. Depending on how permissions are configured on your system, you may be required to switch to their user in order to create the junction points from their host iTunes folder.

You can test that the junction points are working correctly by creating an empty text file in the user’s iTunes directories and seeing if it ‘appears’ in the All Users iTunes directory. Once you’re sure everything is working, proceed to install iTunes where all your settings will be shared.

Once iTunes is installed, for good measure I then modify the `iTunes Music folder location` under Edit->Preferences…->Advanced to be in the,

C:\Documents and Settings\All Users\Documents\My Music\iTunes\iTunes Music

directory.

Liz and I have just finished watching Aardvark’d: 12 Weeks With Geeks- the documentary about the Copilot project which Joel Spolsky’s clutch of interns completed over the summer of 2005 for Fog Creek software.

The film is certainly entertaining, and had us laughing out loud on more than one occasion. Nevertheless, I can’t help feeling that the readers of Joel’s blog, who probably comprise the majority of his customers will eject the DVD having enjoyed the film, but feeling a little disappointed in retrospect. Joel is known for his expositions, not on the details of coding, but on the wider development process in which coding activity is an albeit major part, including the business and economic aspects of software projects. We found the film light on any detail of the actual development process - we saw the first demo and the release party - but I don’t feel we learnt much about what actually happened between these events. There was no real explanation of how software design was done, how developers work together, or how quality was assured. Did they do code reviews or unit testing? Did Joel do any project management, or did they just hack away at the code? We simply don’t find out.

The second disappointing aspect of the film is its production quality. The camera-work is of poor quality with unnecessary disorienting pans and movement, which although it may be intended to convey a sense ‘reality’, in actual fact it severely detracts from the overall sense of quality of the product. Furthermore, the transfer to DVD video is definitely amatuerish, resulting in jerky motion of slow pans and moving vehicles.

In spite of these shortcomings, Aardvark’d gives you an excellent sense for the kind of people Joel hires and the personalities of the interns shine through. The end result is less likely to be useful to Software Developers themselves, than to ‘Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity’. Its doubtful that the former will learn anything new from this film, although managers and marketers may get a better sense of the kind of people software geeks really are. The most interesting part for many ambitious developers will be the digression with Paul Graham disussing the motivation and funding for software start-ups.

Our industry needs more films with the same objectives as Aardvark’d, but with deeper content on the planning and execution aspects, and a bigger budget to carry off the production successfully. Joel is to be commended for having the imagination to commission such a film.

« Previous PageNext Page »