Bootstrapping Quick Releases

07/21/2011

I just released a new build/release harness1 I’ve been working on for about a year now called QuickRelease.

How does this relate to the Mozilla community, you might ask?


Some bootstraps are clearly more…
ornate & complex than others…

Well, some of the core ideas behind QuickRelease actually come from an automation project Rob Helmer and I worked on back in the day called Bootstrap; you can still find it if you know where to look.

Bootstrap had a lot of good ideas2, but it failed for a few reasons: its core design was based on some object-oriented patterns, and since the implementation language was Perl, that was all sorts of pain3.

Additionally, Mozilla, like many organizations at the time, was moving to Python for much of its infrastructure tools; Perl was considered gauche. Combine this with the “omg new hotness”-push in 2007 to use the buildbot-hammer to smash every problem4, and Bootstrap’s demise was pretty much assured.

I never thought hitching everything release engineering-related to the buildbot wagon was a particularly well and thoroughly conceived idea. In the ensuing time, it looks others have discovered the precise point I was making back then. There’s been some work on adding a layer in between buildbot and the build system… which is exactly what Bootstrap was.

And what QuickRelease is.

It’s worth noting QuickRelease is in production use, shipping others’ software, including some Mozilla-based projects.

Go give it a gander; let us know what you think.

_______________
1 I didn’t push the initial announcement to Planet
2 And in fact, one of QuickRelease’s best ideas—unit testable steps—was rhelmer’s…
3 You have to be pretty blessed in the head to do any hardcore OO-Perl…
4 Using unwieldy master.cfgs