Bootstrapping Quick Releases
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
This looks very good. I think your pedantic nature will fit much better in the python community Catchy name too.
IMHO bootstrap did not fail it’s initial goal (being an abstraction layer above tinderbox client, and eventually replacing it), but I do agree that buildbot is not enough of a DSL for doing general build/release work.
There is no shame in failure provided we learn from our mistakes.
@rhelmer,
Re pedantry: heh; I quite think that if you’re not fanatic about being pedantic about the details of release engineering, you should do something else. (Lots of release engineers aren’t; I often find those that aren’t tend not to be very happy in the role, too.)
To clarify: I don’t think bootstrap failed in its initial goal at all, actually.
I was more referring to “failure” in that it didn’t capture enough of the mindshare to continue to be part of Mozilla’s build/release infrastructure. (It is, of course, more complicated than that; it “failed” in this regard for more reasons than I’ve outlined here, some of them having nothing to do with the technical merits.)
I am, of course, biased, but I sort of think of QuickRelease as Bootstrap 2.0: built on top of the really good ideas in the original Bootstrap, but implemented in a language that more readily expresses them.