Software build systems are broken. Way broken. I want them fixed. I have been thinking about that for many years now. I still haven’t figured out how to go about fixing it all (yes, I really do mean all). Like so many other people, I’d love to.
Background
I have been annoyed and intrigued with the process of compiling, building and installing software ever since first being told to “just type ./configure && make && sudo make install
“. I asked “if its always the same, why isn’t it just install
?”.
I have the same experience with build systems that average Joe Programmer has, and then a little more.
- I’ve fixed (and of course, also broken at times) build systems for just about every apache project I’ve ever worked on.
- I’ve built my own linux from scratch at some point before there was linux from scratch.
- When I wrote huge and ugly javascript libraries, I wrote an rpm-like system to manage them.
- It seems I tend to drift toward the position of build/release/integration manager (“slave” is a better word actually) for the projects I get involved in.
- the most core of core technologies on which maven 2 is built is based on a design and an architecture I helped a little to dream up.
- I have been one of the most active developers for one of the most misunderstood continuous integration servers for a long time now.
Research
I’ve been watching the way all the java projects at apache manage their builds since before Ant ever became anything close to a standard. I’ve been watching the development of Ant and Maven and then Maven 2 for the longest time. I’ve read most of their codebases.
For the last year or so, I’ve been learning more and more about all the non-java build systems, integration systems, packaging systems, deployment systems. Well, not really all of them, just the open source stuff.
- I’ve read all the documentation I’ve been able to find on make, autoconf, automake, xmake, qmake, cons, scons, jam, gcc, yacc, lex, rpm, apt, yum, FreeBSD ports, and many similar tools and systems. Xcode, too.
- I’ve used all of those tools (or tried to use them) on different projects, and encountered and fixed (or usually, worked around) many of the common problems one finds with these kinds of tools.
- I’ve read large parts of the GNU make and autoconf source code.
- I’ve read all of the core scons codebase at least twice.
Money, Business, Open source
Since I’m now actually trying (succeeding too, so far, fortunately) to make a living by writing software (and stuff), I’ve also been thinking about how I might make a living working on this itch of mine that I have. I want to fix all those frigging broken build systems out there, and fix them properly. I want to help all those brilliant (and the not so brilliant too) software developers out there be a little less frustrated when their stuff just won’t build. I want to help all those CTOs out there to be able to reduce the “overhead of the build”.
So, I’ve been looking at how others make a living working on build systems. It seems most of these things are actually built mainly on the free time of its developers, out of passion, or more likely, frustration. Companies that try and focus on solving these problems are either giants like IBM, Microsoft or Red Hat, or don’t seem to last very long, or don’t seem to succeed at helping define a new sort of standard. Open source is probably (and hopefully) a key factor to success.
I’m sort-of interested in what’s going on with Mergere, a startup funded by Simula Labs, which employs a few of the Maven 2 people. I have a hunch I wouldn’t enjoy working there (or at a similar company) very much. And so far it seems they’re all about java, which is just too boring.
I’m less interested in how most other “open sourcy” players in this space go about their business. Eg CollabNet, SourceLabs, Canonical. It seems they have rather obvious business models and a rather solid evolutionary plan that helps to gradually improve the software market place. I imagine this is great stuff if you’re building a solid long-term company with employees who have kids with mouths to feed, but I’m not looking to build a company, I don’t have kids, and I’m not too hungry either.
Hack the planet
Heh. I’d like to do something a little more disruptive, something a little revolutionary.
I know there’s a lot of people out there who share largely the same itch. I wonder, I wonder, what would get those people together with their noses in the right direction to produce a single absolutely stunning and brilliant solution which will still be in use many many years from now…