Popular, Fast, or Usable: Pick One
This post originally appeared on the Software Carpentry website.
One of the core skills in any software developer's toolbox is automating repetitive tasks. We've been teaching this in Software Carpentry with Make for 13 years, and for 13 years, we've been looking for something better: something that has a less user-hostile syntax, requires less arcane knowledge of the shell, and at least pretends to do the same thing on different platforms. We briefly considered Ant (where "briefly" means "as long as it took to find the post by Ant's creator saying he would do it all differently next time"), but it's clear that tools like Rake and SCons, that embed build commands in a full-blown scripting language, are the future of build systems. Rake is based on Ruby, but SCons is based on Python (and actually has its roots in the original Software Carpentry project), so it should be a no-brainer, right?
Well, not when you look at its performance, or rather, lack of performance. According to Eric Melski's numbers, SCons's runtime seems to grow as the square of the number of things being built, which is much worse than the behavior of other systems. We could teach it anyway, and tell students to switch to something else for real-world problems, but we really want to avoid that.
Scimatic's Jim Graham pointed me at Vellum, another Python-based build tool. It looks interesting, but it also looks moribund: the last release was April 2008, the last bug report was July 2009, and the last check-in was a month ago.
It therefore looks like whatever I choose is going to be hard to learn, slow to run, or have such a small user and developer base that it might well disappear during the lifetime of this course. On the bright side... Um... Err... OK, I don't know how to finish that sentence.