Code review: gatekeepers vs. coaches

I wrote a list of code review guidelines for the Servo project last year. They encapsulate the feedback that we expect our project contributors to provide when reviewing code changes, but I want to explore the motivation behind them. You’ll notice that almost every step is in the form “look for X”, followed by “suggest […]

Creating a C API for a Rust library

Yoric has been doing great work porting Firefox’s client backend to Rust for use in Servo (see, so I decided to create a C API to allow using it from other contexts. You can observe the general direction of my problem-solving by looking at the resulting commits in the PR, but I drew a […]

The Fast and the Furious: bzexport

If you’re a bzexport user, you’ll want to pull the latest revision. It’s recently been getting slower due to the number of http requests that need to be made (the tradeoff here is that it’s also been getting more correct), but I’ve pushed three patches that have reversed that downward slide into the molasses. By […]

nsCOMPtr has never been so pretty

Jim Blandy announced his archer-mozilla pretty-printers for Spidermonkey late last year. I’ve used them a few times while working on some JS proxy bugs, and I’ve found them to be invaluable. So invaluable, in fact, that I’ve written a bunch of pretty-printers for some pain points outside of js/. If this prospect excites you so […]

Self-serve tools: now more likely to work

If you’ve given my self-serve tools a try (in particular, and had it claim that it couldn’t authorize you, it’s time to give it another shot. Steven Fink, being the wonderful person he is, dove in and found some weirdness going on with my usage of urllib and the self-serve API performing redirections. The […]

Build smarter, not harder

I spent the past six weeks roaming around Europe with a netbook, and used that time productively to get some work done on Firefox. Part of that involved building on Windows for the first time, and experiencing the joy of pymake. However, I found the extra characters required to fire off incremental builds with pymake […]

Cancelling builds from the console, now easier than ever!

The self-serve tools, specifically has received some important usability upgrades at the urging of jst and ehsan. Now, simply running python will be enough to get you going – you’ll be prompted for your username, password, branch and hg revision. The builds displayed also show their state (running, pending or complete) as well, […]

Self-serve, now in bulk

Update: the tool is now easier to use and doesn’t require adding your password as an argument. See this post for more details. I’m a big fan of the self-serve tool that RelEng provided for people with LDAP access. When I can see a try build going bad, I can cancel all the remaining builds […]

nsITimer anti-pattern

I’ve filed bug 640629 to address an intermittent source of orange: incorrect nsITimer creation. I first ran across it while working on making httpd.js collect garbage more frequently, a task which quickly turned into orange whack-a-mole as more and more problematic test constructs popped out of the nether. Mounir Lamouri (volkmar) recently fixed another instance […]


Nine days ago, I made an off-hand remark in #content that I might be able to get the geolocation service working in Fennectrolysis by the end of the day if my plans worked out. I also remember referring to the process as “not a big deal.” Since that moment, I have put in a significant […]