“I’ll have a build with barbacoa, guacamole, and no sour cream, please.”


A new Chipotle that just happens to be equidistant between my house and work recently opened. This is extremely dangerous, because I love Chipotle.
If you’ve never been to one, it’s much like a Subway or ToGo’s in that they have a few “base items” you can order and then you talk directly to the person making your food and watch as they adorn your meal with sour cream, cheese, guacamole, or whatever.
While waiting in line last week, watching them make my burrito, I begin thinking about a blog I read1 relating Starbucks’ operations to asynchronous message handling patterns.
As I asked for guacamole, I thought to myself “Chipotle is kinda like open source.” No, seriously!
At a “regular” restaurant, your don’t get to see your food being made, and you don’t get to talk to the chef. So, you have no real clue of what your options are. Maybe you’d have more of the salsa that plainly has those delicious habaneros you love.
Or maybe you you’d take less of the garlic pesto, because you can’t stand garlic. Maybe you want extra cheese. There are a hundred little customizations that you can confirm get done while you watch the person make your food. It’s opportunity to correct “issues” before they occur and help guide a successful outcome.
This is much better than pulling to the side of the drive thru, ripping out that burger you expressly said “No mayonnaise” four times for, taking off the bun, and cursing the fact that, yup, it has mayonnaise. Again.2
The analogy is particularly timely, because Coop just finished work on bug 337362: “Tracking bug to move tinderbox configurations into the public repo.”
One of the first things I worked on was getting all of the mozconfigs and tinder-config.pls under version control. Many of the Tinderboxen had mozconfig.20051120 and mozconfig.pre-coop in them. Not only was this a mess to keep track of, it made it difficult to figure out what the settings had been for builds we shipped even a single release ago.
I originally put them into private CVS because I was in a hurry. That turned out to not be the best solution, since people (quite reasonable) wanting information about what might have changed between two releases had to ask one of us for the information. Coop has fixed that now.
They won’t be entirely useful immediately, since the release configs for previous releases weren’t moved out of the private repo, but as we march forward, people will be able to diff the options used between various releases, find out what changed, and re-produce their own versions of what we shipped.3
Coop also did a tremendous amount of work getting the Build:Farm page up to date, to include which tags to pull from mozilla/tools/tinderbox-configs/, if you’re interested.4
The next steps I’d like to work on is standardizing the format of all the various configs, and working through how we manage making it easier for developers to commit nightly build config changes directly to the build system.
1 (Yes, this was one of the entries in The Best Software Writing.
2 I do not mean to imply that open source software analogizes particular accurately with only fast-food. The same analogy could, I suppose, be made for a sushi restaurant, at the bar, vs. some four-star hotel restaurant.
3 Ahhhh… reproducibility. As Martha says, it’s a good thing.
4 The tags may initially seem confusing. But there is a structure to them. Note to self: write up a wiki page, explaining the structure.