Continuous Integration

Release Schedule

May 2020
S M T W T F S
« Nov    
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Branches

Twitter

Simply ship. Every time.

“American six-sixty-two, contact Departure…”

01/29/2007

Sometimes, you see a random photo whose composition and perspective all just click… and all you can think to yourself is “Yeah… that’s my life right now… that’s me.”1

It’s one of life’s better [surprise] pleasures.

_____________________
1 Photo courtesy of my friend Mid,2 who invited me to go plane watching today, but I declined. Maybe that was a bad call.
2 The official photographer on all my flights

From the I-can’t-believe-that-worked-department…

01/08/2007

Last week, the Firefox trunk build needed to be clobbered due to a checkin that broke depend builds.
dbaron emailed us, requesting the clobber, but then he must’ve remembered me mentioning adding CLOBBER file support to the Tinderbox client.
The idea was that developers shouldn’t have to find someone in #build to clobber builds for them; as long as the person requesting the clobber and reason can be tracked, developers should be able to clobber their own builds.
Implementation of the idea original stalled, though, because CLOBBER file support relies on a) all the configs being public and 2) all the Tinderboxen paying attention to those public configs. That’s been done for awhile now (thanks again Coop), but we never had a chance to finish testing the clobber file support, so I had never announced it.
Well, dbaron tried it out and—much to my surprise—it actually worked!
I also tested on the 1.8 branch later that day and it worked there, too.
So, if you need to clobber a build for a checkin, here’s how you do it:

  1. After your code goes in…
  2. Checkout mozilla/tools/tinderbox-configs; you probably want mozilla/tools/tinderbox-configs/[product]/[platform], i.e. mozilla/tools/tinderbox-configs/firefox/win32. If you want to clobber the 1.8 or 1.8.0 branch(es), check out those branches (-rMOZILLA_1_8_BRANCH).
  3. If there’s not a CLOBBER file in that directory (case matters), cvs add one. Edit the file with the reason (and hopefully a bug number?) for the clobber request.
  4. Check it back in; include the reason in the commit message (yes, this is duplicated from the step above…)
  5. Annotate the build on Tinderbox to let others know it will (should be ;-) a clobber build, and thus will take longer to complete.
  6. If you’re feeling benevolent, please stop by #build to let us know you requested a clobber, so we know to expect it
  7. Next build should be a clobber build; if it's not, please stop by #build to let us know, so we can track down why it didn't work

Obviously, clobber builds take longer than depend builds, so please only use this functionality only when necessary (there's a code change that requires it; nightlies are broken for some obvious reason). I'm pretty confident that we all know valid reasons for requesting clobbers. And please coordinate clobbering on IRC, if you can.
While it took us awhile to get here, this is the type of functionality I was talking about working more on this year to give developers the tools they need to be more productive/"agile," but in a framework that tracks the information we need to track.
I'm hoping this is just the beginning.

Status: RESOLVED; Resolution: FUTURE.

01/05/2007

Yesterday, I talked a bit about my 2007 thus far.
Schrep and I were discussing New Years Resolutions yesterday, and he said he didn’t believe in New Years resolutions: “It’s never too early or too late to make a change in your life.”
I’d never thought about resolutions that way, but that’s a really good point.
As I mentioned, I’m more a fan of birthday resolutions; birthdays are like our own personal New Years and I tend to be more introspective about my life around my birthday anyway. New Years is mostly arbitrary timing in relation to our individual lives, so it’s never really done it for me.
I guess the New Years resolution thing is helpful because it throws the possibilities of change to make our lives better right in our faces. New Year does provide a bit of synchronicity since many are simultaneously thinking about changes in their past tense and what the future tense could, and should be.
Whatever you think of resolutions, I spent some time thinking about what mine might be:
Mozilla-related goals

  1. By year’s end, the automated release harness will be able to basically perform an entire release, in one1 step. Extra points if signing is automated as well.
  2. Create a clear separation between the gloop that we call “Tinderbox”, which actually is a mess of Tinderbox interface code (which we may not care about in the long term), our build harness (which we probably care a lot about, but needs some serious love), and the build system, which I hear is in line for some serious love.)
  3. Work on improving the way I personally communicate regarding build projects we’re working on that could make everyone’s lives better. This is something that’s only recently come up because we’ve been so bogged down, we haven’t been able to focus on changes that are sweeping enough to make a difference; that’s starting to change, and so changing the way we communicate these developments is important (more on that later this weekend…)
  4. Work with an eye and a nod towards more self-service services for developers; there are lots of things that we, as build engineers, need to track to ensure a successful release. That doesn’t mean we have to perform or even be involved in everything to track it. It does mean we need to create systems were people can work within a framework that works for them, but captures the information we need.
  5. Participate in, and hold, more postmortems, where it makes sense to have them.
  6. In numerous forums, I’ve heard the sentiment that more could be happening in certain contexts if we had more build/release resources (not to be confused with build/release people); I’d like to work with an eye towards making it so I don’t hear that as often. 2
  7. Become larger than #bs and crazycapsguy.3

Personal goals

  1. Stay off thedailywtf.com.4
  2. Get my instrument rating this year.5
  3. Move. I’m still in my just-out-of-college apartment, and… it feels like a just-out-of-college apartment.6
  4. Average one “notable” (defined as requiring-at-least-two-weekdays-off) vacation per quarter.
  5. Take more pictures of myself. Or have more taken of me. Either way.7
  6. Execute—as pilot-in-command—a cross-country flight that’s actually across the country. I’ll loosely define this as across ARTCC boundaries (but Los Angeles Center doesn’t count), and likely involving another state; I’m thinking PDX or PHX.

In general, I think my resolutions boil down to having—not trying, but having—a better year than the last three8; I’m going to be my-favorite-number years old this year, so I think that means this year is basically required to not-suck.
Despite the first few days thus far of 2007, I have this weird feeling that it’s looking quite possible.
________________________
1 At least, from a build engineers’ perspective
2 This is, admittedly, a pretty fluffy goal; I’m not quite sure how this one will turn out.
3 Would this require SPEWING BS IN CAPS?
4 Which at first glance, might seem easy, but if we’re refactoring Tinderbox client code…
5 And I mean this year, not mumble-mumble years, like my private took.
6 Imagine that!
7 P.S. Flickrsphere!!!
8 Combined, if possible!

Come for the tulips and clogs, stay for the checkouts

01/05/2007

mrz caught me in the hallway today to let me know about a late Christmas present for those doing checkouts on the other side of the globe: cvs-mirror.nl.mozilla.com!
This CVS mirror is not in production yet, but he told me about it so that he could get some help testing the mirror integrity/process.
So, if you’ve got a few extra seconds, you can help by doing a checkout of either a) your favorite tag or b) a specific date spec (-D) from cvs.m.o (or cvs-mirror.m.o) in one directory, and then pointing your CVSROOT at cvs-mirror.nl.mozilla.com, and performing the same checkout into a different directory, and then diff -ring the contents. The process for logging into the mirror should be identical to the current process. (If it is, that’s a bug).
You should only see differences in the CVS/Root files.
You can even go hogwild and check out different branches and make sure they’re correct!
If you’re on this side of the planet, and feel like helping out, you can perform the same test using cvs-mirror.sj.mozilla.com, which will someday grow up to become cvs-mirror.mozilla.org.
I want to stress that neither of these mirrors are in production yet, but you can help make sure they’re production ready by helping mrz and I out.

2007: Already Going Gangbusters

01/04/2007

It’s not even the first week of 2007, and it’s already been a harrowing… journey:

  • Due to The BlizzardTM, Service Pack 2, I moved my flight from Friday the 29th to New Years Eve, arriving into SFO at 8 pm PST; this would’ve been fine, except…
  • The plane, out of LAX, was three hours delayed, due to a passenger freaking out while the plane was in line to take off, necessitating their deplaning.1 Don’t even get me started on that whole thing…2
  • Upon arriving in SFO and waiting for my luggage-which-never-came, someone saunters by and says “Oh yeah, check in that pile of luggage over there,” as I was filling out a lost baggage claim. Sure enough, in a stunning display over overcompetence, United had put my luggage on the earlier (on time) flight to SFO… the one the agent said I couldn’t get on because my luggage would never get transferred from the late flight to that one in time.
  • After the lateness and the luggage-waiting, I rang in the New Year while traveling down highway 101 at 80 mph. Welcome, 2007.
  • Arrive home. “Screw it, I’m going to bed.”
  • Next morning, I found that whenever I tried to do anything I/O intensive on my workstation at home, it either froze up or immediately rebooted. It was like a fun little “Let’s make a Deal!”-game… but that’s not all!
  • Upon rebooting, the ethernet card only sometimes honored me with its presence on the PCI bus. Replacing the card with a spare (of a different brand) I had lying around did not help.
  • Since my workstation had crashed once while I was away3 and I kinda care about the data on that machine, I decided to not screw around and replace the whole damn thing.
  • Got a barebones box from Fry’s; wasted a day finding out that its power supply and/or mobo was dead. “Your best buys… are always at…”
  • Finally got a machine up and running last night, and starting transferring everything over; didn’t notice that I hadn’t compiled the specific chipset support into the Linux kernel to handle IDE DMA… so my 140 gigabyte music collection was puttering along at a stab-me-in-the-face 3 megabyes per second, as opposed to a I-won’t-be-dead-before-it-finishes 170 megabyes per second.

On the upside, I took this opportunity to make my machine complete RAIDified, so crappy hard drives should no longer make me stabby-stabby, and I also used the opportunity to get all paranoid4 and encrypt my /home partition. I must admit, with the 2.6 kernel this was intriguingly easy to do on top of RAID. (Some people actually run encryption on top of LVM on top of RAID, but those layers are all in software, and… I just don’t know if I trust my read()s and write()s going through oh-so-many layers before hitting hard magnetic filings.)
I don’t really do New Years Resolutions5, but I’m throwing down the gauntlet now: 2007: Stop. Sucking. Now.6
I want this year to rock… and I actually think this one has quite the potential to do so.
More on that tomorrow, though.
_________________________
1 And, because “That’s how the terrorists would do it,” their luggage, too… which, since it’s not, ya know, organized in any particular way, means tearing the baggage compartment apart to find it.
2 This passenger freaking out caused about 20 people to miss their connection in SFO, including (I overhead) people going to Seattle, Honolulu, and Sydney. Man, I was pissed, but if I had been going any of those places, I would’ve lost it right there on the concourse in Denver.
3 And I had to have a non-Linux using friend reboot it; “Type Slash-eee-tee-see-slash-init… no, INIT… eye-enn-eye-tee… INIT… no, not slash, then a dot… dot-dee… slash…” But he was a good sport, and we got it rebooted.
4 Maybe I’ve just been watching a little too much Law and Order lately…
5 I much prefer Personal New Years, aka birthday resolutions…
6I don’t want any more BS during the year… from anyone… that includes me!

Compiling in a Winter Wonderland

12/20/2006

I’ve got a secret to confess: I’ve been working remotely from my childhood home in Colorado this week. I flew out last Sunday.
That whole plan turned out to be really fortuitous, considering this afternoon’s Doppler radar:


Me in the center, with all the badness heading in the wrong direction…

This storm, easily in the top ten Colorado blizzards in recorded history the local news networks tell me, has shut down I-25 statewide, shutdown I-70 up into the high country, and completely shutdown Denver International, the “all weather” airport:

07:07 <@preed> KDEN 201441Z 35025G36KT 1/4SM R35L/1800V2000FT +SN BLSN FZFG VV002

07:07 <@preed> that's awesome.

07:07 <@preed> winds 25 gusting 36 knots, one quarter mile visibility, heavy snow, freezing fog, vertical visibility of 200 feet.

07:07 <robcee> I'll take your word for it. I haven't progressed to the ability to parse METAR data in my head

07:08 <robcee> ah, thank you for the translation

07:08 <robcee> man, that's nasty

07:08 <@preed> I'd have to look up what BLSN is

07:08 <robcee> blowing snow?

07:08 <@preed> probably "bitch, loser there's friggen SNOW OUTSIDE!"

07:08 <@preed> or that.

Anyway, the release is done, the holidays are near, and I’m totally excited about the prospects of a snowed-in white Christmas, which I haven’t experienced in at least five years and certainly don’t get to see in California.
So here’s wishing you a happy holiday season—whatever that may mean to you—from OMGSOMUCHSNOW Colorado:


P.S. if you don’t hear from me for more than 48 hours on IRC, I’m either on vacation, or dead. Either way, call the Colorado National Guard. Or rhelmer.
One of the two.

You want a release? Well here’s your #@($! release!

12/20/2006

I’d just like to state for the record that the 1.5.0.9/2.0.0.1 release was quite possibly the suckiest release I’ve ever worked on.
And if any of you remember the sleeping-in-the-office-for-a-week-1.5.0.2 release, that’s saying a lot.
It’s also saying a lot because the entire release went relatively smoothly1 until… well… today, when everything promptly started sucking. Hardcore.
Like most aviation accidents, it wasn’t a single thing that caused so much doom and strife. It wasn’t the air traffic controller who forgot to call out the traffic… or the maintenance guy who didn’t tighten all the bolts… or the pilot who got distracted looking at a faulty warning light.
It was all of those things, working in concert with each other.
Similarly, the list of what-the-hell-were-we-thinkings2,3 includes things that, on their own, wouldn’t have been a big deal at all. But compound them and you basically had fourteen hours straight of me banging my head against the wall and wanting to stab my face off.4
The sole thing that makes horrendous releases like today’s at least bearable is the community’s response and attitude when problems like this arise: the web team started working on the release in the morning, and remain responsive throughout the day; IT was around and helped debug deployment and database load and app cluster problems with us; the app team weren’t bothered a bit by being called in the middle of the night to look at weirdness; my build colleagues pitched in to help run some extra verification while I worked on deploying the contingency plan; and QA stayed until the bitter end (past midnight!) to make sure it all worked and to sign off on it all.
I don’t ever want to repeat a release day like this one.5
But—at the risk of sounding sappy—this pervasive and consistent attitude within the Mozilla project is what gives me the energy to face even the possibility of such beasts again.
_____________________________________
1 At least, no bumpier than any other Moz release I’ve ever worked.
2 Hindsight = 20/20, and all that…
3 My “WTF,” while I think defensible, is particularly… WTFular.
4 I must admit, Winnebago Man did help at about hour ten or so.
5 And I hope we’ll spend some time figuring looking at exactly what happened, so none of us have to.

AfterBurner

12/11/2006

The New York Times Sunday Magazine had an interesting article last week on some new research and a book about burnout. (For those into the Podcast-o-sphere, NPR covered this as well.)
It mostly focuses on data from Wall Street brokers, a cutthroat existence to be sure, but it also has interesting perspectives from social workers and teachers.
A few particularly thought provoking passages stood out to me:

If one of the surest recipes for burnout, as Michael Leiter has said, is the sensation of inefficiency—particularly if we’re still expending energy and seeing little in return—then there may be something about the modern office that conspires to burn us out. In 2005, a psychiatrist at King’s College London did a study in which one group was asked to take an IQ test while doing nothing, and a second group to take an IQ test while distracted by e-mails and ringing telephones. The uninterrupted group did better by an average of ten points, which wasn’t much of a surprise. What was a surprise is that the e-mailers also did worse, by an average of six points, than a group in a similar study that had been tested while stoned.
That’s right. Stoned. Those people were literally burned out, and they did better.

I’ve been trying to pay attention to this more recently, and I’ve noticed that if my day starts with a number of fires, I can easily lose the rest of the day to “pacing on my desktop,” that is switching between Thunderbird, IRC, Bugzilla, and AIM, all in a very tight poll()ing loop, just waiting for one of them to generate an interrupt.
If you get stuck into this mode, it’s easy to waste twenty or thirty minutes in a tight loop, just switching between windows. One recent afternoon, I got into almost this trancelike state, where I was just switching between those applications, so quickly that I wouldn’t have even picked up any state changes had they occured. Fortunately, I noticed it pretty quickly, but before I generally started paying attention to this tendency, it was easy to let this cycle pockmark my afternoon to the point where I didn’t have any significantly contiguous blocks of time to use to accomplish any notably involved (and by implication, forward-thinking) tasks.


I’ve attempted recently to tackle this problem by closing Thunderbird entirely and, stealing a page from sspitzer, changing my nick on IRC to preedMsgMe (which seems to cause some confusion; but I interpret it as “I’m not going to pay attention to any channels, so if you want to talk to me, /msg me privately.)
***

“The worst case of Wall Street burnout I know is of this guy who wound up driving a cab,” Cass tells me.
A cab?
He shrugs. “There’s a control factor in driving a cab. You go from point A to point B. On Wall Street, you start your day with no idea how it’s going to end.”

My fantasized mode of transportation is different, but the sentiment is the same. Every time people have asked if I want to become a commercial pilot, my answer is the same: “No, that would just suck all the fun out of it.”
But I’ve found myself thinking about it on occasion… like… today for instance:

17:06 <marcia> next week on "As the Update Churns"

17:07 <marcia> preed annouces he is leaving the build team to become a Fighter Pilot

...

17:09 <preed> marcia: I actually thought about that last week

17:10 <preed> maybe not a fighter pilot, though

...

17:17 <Pike> preed: now that you're panic-proof, you want to become a commercial pilot? bah, we shouldn't train you that well

17:17 <preed> I'm trying to figure out which is more stressful

17:18 <preed>this, or flying a hundreds of irritable people around in a tin can.

17:18 <Pike> 300 passengers vs 30 million users

17:18 <Pike> luckily, the 30 million don't die if you [fargle] up :-)

17:19 <preed> Pike: and to think I wanted to be an air traffic controller

***

One has to wonder whether the developments of a high-speed world haven’t made burnout worse. First, the obvious: With the advent of e-mail, cell phones, laptops, BlackBerrys (or “CrackBerrys”—the argot here seems extremely apt), and other bits of high-speed doodadry, it has become virtually impossible, in senses both literal and metaphorical, to unplug from our jobs. As Schaufeli, the Dutch researcher, notes, one of the strongest predictors of burnout isn’t just work overload but “work-home interference”—a sociologist’s way of saying we’re receiving phone calls from Tokyo during dinner and replying to clients on our BlackBerrys while making our children brush their teeth.

See also.
This type of “interference” seems to be one of the best kept secret neuroses of the project.


I’m as guilty of it as anyone: whenever on vacation, we’re still “available via cell” and responding to email.” Build requests are often made and responded to after 10 pm PST. We all talk about being walking zombies because we were up until 3 am last night (or “didn’t bother sleeping” on that flight back from Europe).
I think part of my own tendency to do this stems from the dedication most of us feel toward The Project ™ and The Community ™ and The Cause ™. That feeling is useful, because it creates an community full of engaged participants who care about their work, the sense of fraternity, and are here by genuine desire.
Never [forcing ourselves to] unplug, has made me wonder about the failure modes of our all-too-human bodies and psyches.
I’m betting they’re not pretty.

Uno.

12/08/2006

I noticed yesterday that it’s been one year this week since I started working at MoCo.
For some reason, it feels like I’ve been here longer. Much longer.
Maybe it’s partially due to the fact that joining MoCo was actually a return to the project for me. I interned on Netscape’s Build Team a few months after the lizard was freed, and did some Bugzilla work throughout college. An old friend I hadn’t talked to in awhile mused at the circular pattern of life: “when we were hanging out those first few years of college, you were keeping watchful eye over the Tinderboxen… and you now you are again.”
So it goes.
I spent some time thinking about what it’s been like to be here a year, and what I’ve learned. I came up with the following jumble…

Read More

Newer Posts
Older Posts