Brown bag: Intro to branching and versioning

Last week, I did a quick brown bag presentation here in the office. The idea was to answer some of the questions I’ve been asked frequently since we shipped Firefox3.0 and moved future work from cvs to Mercurial.

Tony’s suggested title of “All you wanted to know about the Moco Build system” was just a little over ambitious – that is a talk I’d like to *attend*! 🙂 For this brown bag, I focused on branching and versioning issues, including things like:

– what repo/branch is used for what release
– the different version #s
– the different flags used in bugzilla during triage and releases

You can download the presentation in PDF format from here. Its only 10 pages long, and its missing the verbal narrative, but it still feels worthwhile posting this for others to see.

If people find this interesting, I’d be happy to do other brown bags, so if you’ve any suggestions, please chime in, and I’ll see what I can do. This was also my first time giving a brown bag presentation here, so would love to hear comments / feedback /ideas on things to do better, before I find myself giving other brown bags!

(Many thanks to Gerv, Beltzner, BenHearsum, NickThomas for their help keeping me honest.)

New graph server in production!

During Tuesday night’s scheduled maintenance window, Alice pushed the new graph server live into production.

There’s still lots of things still to fix, but its already way better then the “classic” graph server being replaced. If you haven’t already seen it, go browse around http://graphs.mozilla.org and let us know what you think!

The switchover went nice and smoothly. So smoothly, its hard to know that Alice and Morgamic had *tons* of behind the scenes cleanup work to do, in order to get all the code into one place, and make this switchover possible. Because of all the cleanup, we can now happily say:

No more “I cant easily build graphserver because graphserver code is scattered between hg & cvs”.

No more “unknown private patches on graphs-stage”.

No more “maintaining old graphs.m.o codebase”.

At last *now* the real graph server development work can pick up speed. Big tip-o-the-hat to Alice and Morgamic for making this happen!

update:  fixed broken URL, thanks to Dan and Rob for spotting that.
update: added Mark to last sentance! Sorry, Mark, my bad. 🙂

Firefox 2.0.0.16 *and* Firefox 3.0.1….at the same time!

Last week, we hit an important milestone for our group.

One person was able to start a security release for FF3.0.1 *and* a security release for FF2.0.0.16 both on the same morning. The usual wall-clock times blog-post is coming, but the important point is that one person could do the two releases, by himself, at the same time, without any delay to either release…

…oh, and all while Ben was also finishing off the Thunderbird2.0.0.x release-automation with Nick, and still having a normal life!

This is a huge huge *huge* milestone for our group, and worth taking a moment’s pause.

SF Fire Department by the (wall-clock) numbers

Today, while I was driving out of town on vacation:

  • 13:19: Sitting at red light, I’m in the front car in a left turn lane. The lights just turned red when I was approaching, so I have time to watch the world around me. Its another warm sunny day here in San Francisco, and everyone is out enjoying the weather. I’m at a busy intersection in the Mission district, multiple lanes of fast moving traffic, lots of cars, a bus at the corner bus stop, and crowded sidewalks.
  • 13:21: Bus starts pulling out of bus stop, heading away from intersection. A women running along sidewalk at full speed, without slowing, runs out across the busy road, in the intersection, dodging traffic to try to catch the departing bus. She was crossing the road *behind* the bus, so the bus driver never saw her, and continued driving away. She continues running through traffic anyway, dodging narrow gaps between cars, determined to catch the bus, and makes it most of the way across the road before she stumbles and falls awkwardly. She lands half in the road, half on the sidewalk at the corner, and doesn’t get up. I watch her lying there, clutching her leg in pain. Somehow all the cars missed her. Stuck on the other side of the busy intersection, I watch oncoming cars turning right-on-red barely miss her without even seeing her lying there half in the road.
  • 13:23: Lights finally change to green. I turn through the intersection, and pull into corner bus stop, positioning the car so anyone turning the corner would go wide to avoid my car (and at the same time the woman). Another car pulled in to help at the same time. Another pedestrian stops to help also.
  • 13:25: Finish quick assessment of her state, and start call to 911. Location. Female, 20s. Sprained/twisted ankle. Small bloody scrapes to her face and a broken nose ring, from when her head hit the sidewalk in the fall. Never lost consciousness. Breathing and pulse reasonable. Awake and talking coherently. No visible bleeding. No major skull bruising. Mild shock, crying, concerned for her lunch appointment, lack of medical insurance.
  • 13:27: Finish call with 911.
  • 13:31: SFFD unit rolled through intersection with lights & sirens. We try to flag them down, thinking they dont see us. They pointed acknowledgment back, but were already in transit to another call and didn’t stop.
  • 13:33: SFFD fire tender arrived on scene
  • 13:38: SFFD ambulance arrived on scene
  • 13:53: Patient being loaded into ambulance, on backboard, with head and leg bound. SFFD crews finished repacking equipment before both units depart. After some last questions, I’m cleared to leave, so drive away.

From when I finished the call with 911, to when the first unit arrived on scene was 6mins. Also, it was really great that two other people stopped to help.

Installing Ruby On Rails on osx10.4…

These steps worked first time for me: http://hivelogic.com/articles/2007/02/ruby-rails-mongrel-mysql-osx …with only two minor hiccups:

1)  The step to install RubyGems specifies v0.9.2, but this should be v0.9.4. The instructions work identically, just change the version#.

2) If you hit this error while installing rails:

$ sudo gem install rails --include-dependencies
Bulk updating Gem source index for: http://gems.rubyforge.org
ERROR:  While executing gem ... (Gem::GemNotFoundException)
Could not find rails (> 0) in any repository
$
$ sudo gem update
$ sudo gem install rails --include-dependencies
...

I later discovered both of these nits already noted in the comments. There was so many other spam comments there, I only found them after I’d already figured out the solutions myself! 🙁 Regardless of those two very minor nits, I found Dan’s set of instructions on hivelogic.com to be outstanding. I went from complete zero to having a hello-world up and running in just a few minutes… all thanks to Dan’s hivelogic doc.