3 Jul 2002 mbp   » (Master)

virgin control

I spent most of today trying to wrap my head around ClearCase, which is the configuration management system for my work project. I'm going to try to avoid the standard temptation to bitch about expensive, proprietary, bloated software -- I'm enough of a SCM geek that I found it pretty interesting, even if there are some bad features.

A wise person (Joy?) said that in a good sofware system,

simple things should be simple, and complex things should be possible

As far as I can see, ClearCase fails on the first of them, and CVS fails on the second.

ClearCase is really quite different to most configuration management systems in two ways: rather than a version control system per se, it's a general database that can be programmed to do SCM; and secondly, it's normally used by kernel hooks that allow transparent filesystem operations.

So, for example, you can have a directory that always contains the most recent buildable version of the software; you can do hardlink-like tricks to combine different modules, and so on.

The down side is that this complexity generally seems to result in every team sacrificing one full-time programmer just to the care and feeding of ClearCase, and to writing Perl or sh wrappers to protect other developers from the rotating blades.

Putting version control into the kernel is one of those ideas that sounds immensely cool at first, but that anybody who's thought about it ought to realize is much more trouble than it's worth. Amongst other things:

  • Most of the time, you don't *want* files appearing and disappearing underneath you like silly putty!
  • Purely local (building, temporary saves, etc) greatly outnumber operations that need to interact with the version control system, so it's silly to pay a performance price for all of them.
  • Putting it in the kernel means there's "no escape" if ClearCase crashes or has a bug, or if somebody's configured it wrongly.

For some reason, the people doing the Linux implementation weren't satisfied with just doing a pluggable filesystem, but instead they hooked the syscalls directly. So, a bug we're experiencing prevents you from unlinking files in /tmp, even though of course ClearCase shouldn't have anything to do with it.

Leaving aside the crack-inspired kernel hooks, I guess the general idea of providing "mechanism not policy" for VC is pretty good, at least if the development organization is big enough to care about inventing and implementing their own rules.

One person thought that teams controlled by QA or methodology people like ClearCase, and teams controlled by programmers abhor it. I don't think this is entirely because programmers are cowboys/girls and dislike SCM, but rather that they're prepared to go along with the SCM tool's idea of process for the sake of getting work done.

The overall experience of reading manuals all day was rather like sitting in a university library trying to concentrate on reading textbooks. Very soporific.

Along the way I (re)discovered a few interesting papers on SCM. They're only short, and I think they're really highly worthwhile:

This evening I updated the distcc web site, partly based on the very pretty GNUpdate web site. HTML is kind of fiddly, but I'm happy with how this turned out.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!