TinyBuilder: the best thing since make
TinyBuilder is a distributed build system that permits multiple developers to share the same build machine while building code stored on their own machine. The developer runs a TinyBuilder script that coordinates the execution of the build among one or more build machines; the build can generate the entire product or a single binary. Each job gets its own temporary space, so more than one developer can execute the same script without interaction. The job uses copies of the files, so the developer can edit files while a build is in progress.
TinyBuilder was created by Tiny Management because the existing build tools are inadequate for our development methodology. We're proud of the results, and we think you will find it useful.
TinyBuilder simply runs command lines on a list of machines; it will fit any process and will stay out of the developer's way. Within Tiny Management, we practice test driven development and TinyBuilder reflects that, but it can be used with any development methodology and will work with any scheduler or continuous integration tool that can execute a command line.
TinyBuilder is flexible enough to bring multiple build systems together. It can be used to initiate any build process that has a command line interface and bring the results together. Any manual steps to unify the results from multiple build machines could be automated using this tool.
One of the reasons we found current build tools inadequate were their scripting languages. Either they were programming languages in their own right, with a complicated, obscure syntax or contained boilerplate like XML structures that obscured rather than clarified the actions of the script.
The TinyBuilder scripting language was designed for simplicity, clarity and ease of maintenance after long periods of neglect. The command lines are generated using data substitution techniques that do not obscure or fragment the underlying command line. There are only a few keywords and no quoting rules. Build changes can be quickly done with this tool.