Bil Kleb mentioned on the ruby-talk maillist a post by Martin Fowler where Martin shares his belief that build tools must be powerful, and that certain build tools that use a declarative xml syntax as a Makefile language (like Ant) sometimes come short of that goal, or are just not flexible enough.
Of the tools you will find in my purse (toolset for geekettes) the build system is among the most important ones. You have to be picky with whatever you carry in your toolset.
For example, I never totally favored GNU autotools, and even some of its proponents concede that some things have become not as pretty as they should be, which ends up getting in your way. ( I mean, there’s a book for every little gear autotools has to offer, easy it is not)
As a result I only use the GNU build system when:
1) I have no choice but using it (too often, when building free software someone else wrote)
2) There’s no 2, I only use it when I am hard pressed to use it, I love free software really, but autotools is more like a free nightmare.
And in contrast this is the beautiful thing about Rake (ranked high in my purse-ware) it does everything it has to do in a well-defined, simple language, it’s powerful and easy to learn and it’s built on top of Ruby as a DSL. Applause for Mr. Weirich. (Rake’s author). All true rubyists use Rake for a reason.
So I think Mr. Fowler is right, and so is Matt Foemmel in his quest for a better build system, using JRuby plus a Rake port that runs on top of JRuby, what he calls “JRake”. (was “Jake” already taken ? :-)
Which approach is to be favored ? Still too early to say, but the confluence of Java and Ruby is probably one of the most interesting things to watch in the near future. (hopefully, a whole lot more of practical purse-ware for me to use, as a result of this cross-pollination)
Update: Some colleagues are blogging and tracking build tools closely: Aslak Hellesøy reviews Raven, JRake and Antbuilder, Rob Thornton at InfoQ analyzes JRake in more detail. They forgot to mention the Groovy approach though, even if Groovy it’s not strictly Ruby some may find it a good match for their current work environment.