" /> preed's blah-blah-blahg: November 2006 Archives

« October 2006 | Main | December 2006 »

November 27, 2006

Version Control System Shootout Redux

At the Firefox Summit last week, we convened a session death match to discuss which version control system the Mozilla Project would use going forward.

There had been some initial work1 to specify our requirements for a new system, but now with work for Mozilla 2.0 looming, it was time to get everyone in a room and make a final decision.

I've been asked a few times about the outcome of the discussion.

For those that didn't catch the Pay-per-view broadcast, here's a review of the event and decisions, complete with screencaps:

The session, led by Vlad, Brendan and myself, started by clarifying the scope of the discussion. The two issues at hand:

  1. What version control system do we use for Mozilla 2.0 development?
  2. Do we convert to an interim system, to move off of CVS, for Gecko 1.9/Firefox 3 development?

So many choices to consider!

For Mozilla 2.0 work, it was decided that a distributed system is needed over a more classical, centralized system. This is due to a number of requirements, including increased developer agility2 and ability to share patches directly with each other. Additionally, distributed systems, to be coherent, much less usable/useful, need to solve the Complicated Merging Problem (tm) up front, and there will be a lot of complicated branching and merging in 2.0 time frame that distributed systems, by virtue of their more advanced merging algorithms, support better.

This removes systems such as Subversion from consideration and and focused the discussion on Mercurial, Bazaar, Git, and the like.


While fun to watch, the battle among centralized systems was short.

Git was largely removed from consideration due to lacking Win32 performance and support, which is a requirement for us.

Vlad has been exploring Mercurial, which is used by the OpenSolaris project. There's been a test-import of the trunk and initial testing seems favorable in terms of performance and our requirements.

During the meeting, a number of people asked for our impressions of Bazaar. Initially, we didn't look too deeply into Bazaar, due to reports of performance issues from Sun's investigations with OpenSolaris. As it turned out, some Bazaar developers were in town, and we met with them during the Summit to discuss requirements, Bazaar's features, and other issues. Bazaar has some compelling features, but the performance and import story is still being investigated.


The battle of distributed systems is a bloody prospect...

We've made contact with both the Bazaar and Mercurial teams, and are beginning to work through import and usage scenarios. We'll post more information on the scenarios as we work them out, and it may turn out that one system becomes a natural choice as the details start to fall into place.

For Gecko 1.9/Firefox 3 work, we discussed whether moving away from CVS to something like Subversion in the Q1 time frame was feasible, and then whether it was desired. There was a lot of discussion in this area, but given that Subversion fell out of the running for Mozilla 2.0, we resolved that it made little sense to spend time converting CVS to Subversion or some other system, only to convert it again to Mercurial or Bazaar.


Moving to RCS sounded like a good idea until we put the Lizard in the ring...

The plan of record, therefore, is to continue using CVS for Mozilla 1.8/Firefox 1.5, Mozilla 1.8.1/Firefox 2, and Mozilla 1.9/Firefox 3 development.

When we've shored up all the tool support and usage policy for the new version control system, be it Mercurial or Bazaar, then we'll look at the feasibility of moving or merging development of the old branches into the new system.

In the original announcement, I said that we wouldn't leave the room until we had a winner decided. That was mostly tongue-in-cheek, despite the fact that I think we all would've liked to have left the discussion knowing.

But going from a bunch of various version control system options and plans down to two, and having a concrete plan of action for Gecko 1.9 development and Mozilla 2.0 development was still a huge win.

I think this meeting illustrated that there's going to be a lot of work involved in the conversion3 and because we've been so hand-wavy about which system we're going to use, we've not thought about a lot of the details. But, we've got some concrete options to pursue, and the rubber is starting to hit the road, so I'm encouraged by that.

Having said that, I must admit I'm devastated that my favorite contender, ClearCase, got beat down so early in the running.


Poor ClearCase... we hardly knew ye...4

__________________________
1 Over a year ago
2 Admittedly, a fuzzy term.
3 bsmedberg and I estimated about 1.5 engineers for at least a quarter... probably more like two), and because we've been so hand-wavy about which system we're going to use, we've not thought about a lot of the details. But, we've got some concrete options to pursue, so expect more information.
4 Images and characters chosen entirely randomly; don't read too much into the pairings; I was never a MK player, myself.

November 25, 2006

"Ah-ha gotcha" moments

I've been realizing lately that a number of cool features in both Firefox and Thunderbird are "ah ha... gotcha" features.

These are features that even though you hear or read about them, and maybe even see them, they don't really come across and hit you until you're able to experience them in a way that resonates.

Extensions, I think, fall into this "gotcha" trap. There are some many extensions that people often don't know where to start... and sometimes they install extensions that aren't useful to them, so they don't get the full value of the feature. But when they find that one extension they can't live without, watch out. Thunderbird's "Saved Search Virtual Folders" feature is another one down there in the pit.

And, despite the relatively simple concept, so, too, are microsummaries.

When I first heard about microsummaries, I thought "Oh, Live Bookmarks. Yeah, yeah... I had heard of this before. Cool idea. Stock prices. eBay auctions. Word of the Day. Yeah, yeah... got it."

Of course, I don't really own any stock and I don't do eBay and I'm proud of the fact that I know only 268 words. So microsummaries didn't really "click" with me... until I was sitting at my desk one day, wondering what the weather out at the airport was like.

Enter the NOAA METAR Microsummary!2

It pretty much does what you'd expect from a METAR microsummary, with some niceties thrown in to save space on your toolbar.

Over the last couple of days, I've been enjoying getting weather updates right to my search box throughout the day.

I think my secret plan was to install this microsummary at work, so I could know when it was getting nice enough that I should take a couple-hour "coffee break" to run a couple of laps around the pattern. "Hey, I just do what the microsummary tells me to!"

Seriously though, this specific use of the (microsummary) feature was what resonated with me enough to really grok how useful microsummaries are... and that's always a fun experience.

It amazes me that I've been involved for some time now and I still learn about new features I didn't know about, or new ways to use those features.

It's pretty neat that, as a community, we still manage to create features in our products with "ah ha, gotcha"-factor so consistently.

_____________
1 Although, with so much [entirely appropriate] emphasis placed on them in the 2.0 release marketing push, that's becoming less the case, I think.
2 Yes, that webpage is ugly as sin. But... "Dammit Jim, I'm a build/release engineer, not a web designer!"

November 20, 2006

Sixty Second Summit Summary

While at dinner last week, I realized that one of the most useful parts of these yearly Firefox Summits is that it forces all of us to get together, face to face, and just slow down for a couple of evenings.

The days are full of lots of lively, boisterous discussion—as is always the case in the community—but with the added benefit of seeing the other person you're talking to.

It definitely changes the tone of the discourse.

As I looked over the group, some chatting with each other, some just experiencing a meal together, others relaxing over a beer, it really hit home that our community has the honor of hosting some of the people who are the most knowledgable about CSS, Javascript, browser security, rendering engines, email protocols, IT infrastructure, software testing, and open source leadership in the world.

Not in the state. Not in the country. In the world.

Sometimes, around the 200th comment in a bug on how many pixels wide a button should be or how long we take to run tests, get the bits for a particular release, or get a webserver configuration pushed, I think we can forget that.

I know I have. It's a really easy trap to fall into.

Fortunately, we have the opportunity to hold these types of events, to help us all avoid falling into that particular trap. I feel privileged to have met new friends, experienced and enjoyed the week with you all.

It was a blast.

November 11, 2006

"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.

November 8, 2006

The Cynical Electorate

As John mentioned, today was Election Day in the states.

Over the past couple of weeks, there's been growing buzz about close races and how power could be shifting. For me, that's not nearly as interesting as the lack of "buzz," nay of public outcry about the pathetic state of voting machines and processes in this country.

I've registered as an absentee voter since 2000, not so much because I'm actually absent or can't make it down to a polling place. Rather, an absentee ballot was the only way I could figure out how to avoid the whole argument I would want to have about not wanting to use an electronic voting machine on Election Day. By its very nature, an absentee ballot must be on paper, and therefore an artifact of my vote exists.

So, for every election, I've wandered down to my polling place—and for a bit of Americana, how's this: it's in a bowling alley—and dropped my [paper] absentee ballot in this antiquated little box/bag thingy.

I honestly don't know what happens to it after that. I've often wondered if that's any better than just sucking it up and using the electronic machines.

The cynic in me says the county doesn't even bother counting my paper ballot anyway, presumably because it would require disgusting things like ripping open an envelope and putting it in some scanner thingy... or (god forbid!) having to count my pen squiggles with eyes! (How positively... Ew! That's not even Web 1.0... that's like... 19th century... Democracy 1.0!)

But, it makes me feel better to go through this dance every election... and even if it's not counted, it's probably better than just not exercising my right to vote at all.

Even still... the "greatest democracy in the world" can do better. A lot better.

One need only perform a quick GooTube search to find out how true that really is.1

***
All-in-all, a lot of changes to blue across the country.2

Locally, most of the people and issues I voted for won, with some stinging defeats.

Exactly as it should be in a democracy.

___________________
1 I happened to see the last ten minutes of this at a friend's house, and the most conflicted scene for me was this polling worker crying after seeing how easy it was to hack a vote when using Diebold's machine. Part of me wanted to smack her and go "Well, what the hell did you expect?" Part of me was just disappointed that that's all we have in us: shock and disbelief and sadness. But, election after election, we don't do anything about it.
2 Which by no means was expected, but neither was it entirely surprising.

November 2, 2006

A Collection of Blogmarks

I just finished reading Joel's—yes, that Joel'sThe Best Software Writing I.

It's a collection of blog posts from 2003/2004ish, along with commentary-laden introductories from Spolsky.1

It's a thought-provoking, if not enjoyable read. Also made for great line- and waiting room-reading.

A few of my favorites, from his collection of favorites:

  • Ken Arnolds' Style is Substance: I've only been "in the industry" for... four years now? But at every software shop I've worked, I've had to have the "let's use a style guide for our code"-series of meetings.

    They're always painful.

    The fact that I, some "pissant, just-out-of-college" junior developer, has had to bring up discussing whether or not it matters what the code looks like is something our industry... should be ashamed of.

    Arnolds' solution is tempting.2


  • Rory Blyth's Excel as a Database: I couldn't keep from giggling every time I read this. All I could think of were the... "non-technical people" at VMware, who used to kill the mail server3 by sending each other and clients .vmdk's—you know, the gigabyte-sized virtual machine disks—as attachments.

  • Ron Jeffries' Passion: We talk a lot in The Community (tm) about what makes Mozilla special and why people are engaged and interact with each other in the way they do. Jefferies' explanation of passion really captures that idea, at least for me. It's also provoking, because it's made me think about areas for personal improvement on some of the aspects which he uses to define "passion."
  • ea_spouse's EA: The Human Story: this made a big splash in the blogosphere back when it was written; even traditional media4 picked it up. Times are, I've heard, different at EA. Admittedly, any correlation, what with being a publicly traded video game company, are muddled.

    Just the same, I've heard similar sentiments expressed by ea_spouse from close friends and this notion of "mild" crunches and "pre-crunches" and "heavy duty crunches," a veritable endless crunch-treadmill that won't ever slow down is... disturbingly familiar.


  • Eric Lippert's How many Microsoft employees does it take to change a light bulb?: Another familiar sentiment.

    No, we don't have that many development steps (nor that many levels of management), but I have been stared at with blank faces when trying to explain that "Adding this five-minute feature to Tinderbox5 or installing this little upgraded utility on that machine is problematic, because we use Tinderbox for releases, and it will have an effect on releases, or we can't change that machine's configuration now."

    The cost is never five minutes.

  • Rick Schaut's Mac Word 6.0: An interesting [set of] anecdotes about how you can make what seems like the 100% correct technical and architectural decisions at the time, but twelve or eighteen months later when you ship, the product is just a piece of garbage.

    Secondarily, an interesting set of anecdotes about how telling your customers that all the right technical and architectural decisions were made, doesn't make the product any less a piece of garbage.6.

  • Eric Sink's The Hazard's of Hiring: my last couple of experiences have been joining a company on the beginning of growth curve. Since that typically translates to "lots of hiring," I've been thinking about the subject, in both global and localized contexts, lately, so reading this added some good fodder for introspection.7
  • John Gruber's The Location Field Is the New Command Line: An admittedly rehashed8 treatment of The Web as Application Platform and Its Impacts on Desktop Software, but what I find interesting of the treatment is that it questions the value of the "Browser War," under the predication that Microsoft won. I'm not one for all the squeeing over the "Browser" "Wars," but it's interesting that the argument is premised on a point I'm not sure is valid.

    Many of these discussions of this nature seemed to be premised upon this [incorrect or debatable] point.

Since all of the content in the book is on teh Intarnets, the only real value here is Spolky's commentary. And the increased portability of paper.

Both are worth it.

_________________________
1 And a crapload of footnotes with nothing but URLs, since that's what you have to do when you translate the web to book-form!
2 But mostly for the ticket sales opportunities he mentions.
3 Which wasn't that hard to do, since it was Exchange.
4 Soooo Web 0.5
5 Mostly because adding anything to Tinderbox takes much more than five minutes...
6 At least in their eyes...
7 This, which just received a facelift, too.
8 But maybe just for this audience?