7 things

January 16th, 2009

Ok, you all know the rules, so I’m going to skip them. I’ve been tagged three times already (Dave, Benjamin, and Tomcat), so I guess it’s time to succumb.

7 things:

  1. I have a slightly better than beginner-level knowledge of American Sign Language. My wife’s sister is deaf, and my wife is fluent, so I thought it would be rude to not be able to talk to her sister. It’s amazing how much appreciation just learning a little bit of someone’s native language will get you.
  2. When I was a little over 2 years old, my family moved from New Jersey to a house that my parents built in Northeastern Pennsylvania. It was still under construction when we moved in, and the entry way was some planks crossing the 10 foot drop to what was at the time gravel in the basement. My older sister dared me to ride my big wheel over it, and of course I fell in. My mom says she made my dad go look because she was sure I was dead. As far as I’m aware I didn’t suffer any real injuries.
  3. I played the trumpet in marching band for 9 years (4 years in high school, 5 years in college). Yeah, I’m a band geek.
  4. My wife and I spent 2 months in Göteborg, Sweden after we got married in 2006. My former employer’s headquarters is there, and I managed to convince our US president that it was a good idea. Sweden in the summertime is an awesome place to be.
  5. I’m only 5’3″ tall. But if you’ve met me in person you probably already figured that one out.
  6. Mozilla is my third employer since I graduated college in 2002. (Hopefully I’ll stay here longer than my previous two!)
  7. I’ve become addicted to mapping in OpenStreetMap. I mapped my entire town (Although not the surrounding area, that’s data that was imported from the US Cenus’ TIGER data.) and got another GPS for Christmas.

I’m not tagging anyone else. I think this meme has reached the saturation point.

more tests, kthx

January 16th, 2009

Josh recently landed a test plugin, with the intent of finally getting some test coverage of our plugin-handling code via mochitests. This is awesome, as plugins are an area of code where we’ve caused lots of regressions in the past, and until then had zero automated test coverage. After it landed, I took a peek at the code and noticed that it would be pretty easy to extend it to make it usable in our layout tests (reftest) as well. I just landed some patches to add this functionality, so we can now test that our layout of plugins doesn’t regress. If you’d like to write some reftests yourself using this, you can check out the basic tests I added along with the patch. (Note: it’s mac-only at the moment, but there’s gtk2 code ready to land any minute now, and a win32 implementation should be forthcoming.)

SSL in Mochitest

September 22nd, 2008

Without a lot of fanfare, a patch landed recently that enables the use of SSL with the test HTTP server we use in our Mochitest test harness.

About five months ago, I read an article about how Fedora wanted to standardize on NSS as the cryptography solution for their distro in order to be able to leverage a common certificate database, among other things. The article went into detail on how they wrote an OpenSSL wrapper around NSS so they could easily port applications that only supported OpenSSL to use NSS instead. As a concrete example, they showed a ported version of stunnel using NSS. This gave me pause, as one of the things we were lacking in our Mochitest harness was SSL support and stunnel would do exactly what we needed in this case. Considering we already build and ship NSS with every copy of Firefox, and it was clearly possible to implement the functionality we needed using NSS, I set out to figure out how to implement a bare-bones version of stunnel from scratch. After a bit of poking through the online NSPR and NSS documentation, I had a proof of concept application which I called “ssltunnel.” After some insightful review comments from NSS developers I committed it to CVS.

Unfortunately, that wasn’t the end. We still needed to hook this program up to the test harness, and I just didn’t have the motivation to do so. I filed the bug, and hoped someone else would do the work. (as I often do!) Thankfully, that someone appeared in the person of Honza Bambas, whom I can only describe as a “programming rockstar.” He not only integrated ssltunnel into Mochitest, but he rewrote large sections of it to make it work robustly and made it work as an HTTP proxy while he was at it. After some reviews, and a couple of landings and backouts due to unrelated test failures, and some time spent languishing in bugzilla, we finally made his patch stick.

Of course, now that we have this capability, we need tests to use it! Honza has written some great documentation on what is currently available via Mochitest, and how to add custom servers and certificates other things you might want. If you get motivated to write some tests and hit a rough spot, feel free as always to track me down on IRC and ask me about it.

MozillaBuild 1.3

June 16th, 2008

I’ve just released MozillaBuild 1.3, which you can download at your leisure. Major changes from 1.2 include:

  • Includes Mercurial—so now you should be able to build mozilla-central out of the box
  • Added support for using both the Windows Vista SDK and an older Platform SDK at the same time, if you’re using Visual C++ 2005 Express and playing Microsoft header bingo. See the build prerequisites page for more information.
  • Added manifests to some exe files for better Vista compatibility
  • Startup scripts no longer use the rxvt terminal. I realize that some people may not like this, but we’ve had plenty of complaints about rxvt’s suckiness as a terminal, so I don’t think it’s really any worse. The real impetus here was that trying to use Mercurial to connect to a repository over ssh was essentially broken for the first-run case, when you have to accept the server’s key, which wasn’t acceptable to me. As a plus, if you create a shortcut to whichever start-msvc batch file you’re using, you can use the properties dialog to customize its appearance as you would any other command shell in Windows. I may investigate a better replacement console for a future release.

MozillaBuild 1.3 screenshot

As usual, if you have any issues, you can file a bug in the MozillaBuild component.

MochiTest Maker

April 18th, 2008

Just something I threw together this morning: MochiTest Maker. It’s a pure HTML+JavaScript environment for writing MochiTests. It’s not as full-featured as the real MochiTest, as you can’t set HTTP headers or include external files, but it should serve for a lot of simple web content tests.

Ideally at some point I’d like to add a CGI backend to this so you could specify a directory, and have it generate a patch against current CVS to include your test in that directory. That would lower the bar even further for getting new tests into the tree. Another cool addition would be to integrate this with my regression search buildbot (currently offline), so that you could write a mochitest and then with one click submit it to find out when something regressed. That shouldn’t be hard to do, but my buildbot needs to find a more permanent home first.

I think there’s still a lot more we can (and must) do to lower the bar for writing tests. We need all the tests we can get!

Some time ago, we set up a symbol server for our Windows builds. This was sort of an afterthought, it just happened to be really easy to do in our new crash reporting architecture. It turns out that this is incredibly useful for people. This shouldn’t be surprising, given how difficult it is to build your own Firefox. Some time after we set this up, I found out that Microsoft’s debuggers also supported something called a source server (Note: this page did not contain this much information when this project started). This sounded interesting, but it wasn’t something I had time to work on, so I added some information to Seneca’s wiki, hoping an interested student would pick it up as a class project.

To say that I got more than I hoped for would be an understatement. Lukas Blakk took the project and ran with it, producing a working prototype and fleshing it out to the point where it now works perfectly on current nightly builds. She’s done an incredible job working with a practically undocumented feature of Microsoft’s debugging tools and having the perseverance to stick it out. As a result, you can now debug nightly Windows builds with full source available. We’ve got a handy MDC document available to tell you how. You’ll need a nightly from today (April 15th) or newer, and this will be available in the Firefox 3.0 release builds. Happy debugging!

Speed++

February 29th, 2008

So, after much wrangling, we have turned on profile-guided optimization on our Windows nightly build machine. The immediate impact is that we got faster, by about 10% on some of our benchmarks. We also exposed at least one tricky layout bug that relied on undefined order of evaluation, but dbaron fixed it. Big thanks to Rob Sayre and everyone else that made this possible!

Next up is probably going to be turning this on on our Linux nightly build machine. I think we’ve resolved the issues there, but we’re going to wait until after beta 4 for that. Apparently we shipped Firefox 1.0 nightlies with PGO, so it should be ok, although that was back with gcc 3.3 or so.

We’d like to do this on Mac, but that still needs some work. I’m hopeful that we’ll get there before Firefox 3 ships.

Firefox on TV

February 14th, 2008

I always get a kick out of seeing Firefox being used on TV shows.  My wife was watching an episode of Nip/Tuck that she had taped (yes, taped, we don’t own a TiVo) and one of the characters was looking up some information on the web.  I did a double take and made her rewind and sure enough, they were using Firefox.  Even better, it was on a Mac!  In your face, Safari!  Of course this is Nip/Tuck so the characters have found out they’re related and are looking at a pro-incest website, but that’s one of the least edgy bits given the show content.

Screen capture from Nip/Tuck showing a character using Firefox

Screen capture from Nip/Tuck showing a character using Firefox with a close up view of the title bar

MozillaBuild 1.2 for Christmas

December 21st, 2007

After a lot of hard work by Ben, we’ve finally released an updated MozillaBuild package, version 1.2.  This version contains a number of fixes and additions over the previous 1.1, including:

  • Support for Visual C++ 2008
  • Support for the Vista Platform SDK
  • A non-ancient version of ssh
  • A l10n start script that doesn’t require a compiler or SDK
  • A fix for that annoying ClearType bug that drew lines next to every character you typed
  • Included a Unicode version of NSIS

You can see some of the details in the tracking bug.  We also finally created a MozillaBuild component in bugzilla, so you can file bugs in mozilla.org : MozillaBuild if you have problems or requests.  Big thanks to everyone who contributed code and testing to make this release possible!

Unit tests: now with less suck!

November 21st, 2007

Thanks to the combined efforts of a few people, the Tinderbox build logs for our unit test machines now suck much less.  You can now click on “View Brief Log” and get a summary of test failures right at the top, instead of searching through the full log for various failure strings.  In addition, if you click down to the errors in the body of the log, the test files are linkified to bonsai for you.  Awesome!