LegNeato!http://christian.legnitto.com/blog
Christian Legnitto's blog about Facebook, Mozilla, Apple, technology, and random stuffMon, 05 May 2014 15:54:02 +0000en-UShourly1http://wordpress.org/?v=4.2.3Firefox 29’s best featurehttp://christian.legnitto.com/blog/2014/05/05/firefox-29s-best-feature/
http://christian.legnitto.com/blog/2014/05/05/firefox-29s-best-feature/#commentsMon, 05 May 2014 14:10:51 +0000http://christian.legnitto.com/blog/?p=375Apparently Firefox 29 had some major feature or something. I don’t know much about that. What I do know about is a new Firefox feature that will finally cause Firefox to beat Chrome once and for all. Yes ladies and gentlemen, I am talking about a revolutionary feature I’ve dubbed:

Have you ever copy and pasted URLs into the location bar and seen this screen instead of the page you wanted?

Of course you have. So you double check the URL and go “ooooooooh, I missed theh in http when copying and pasting.” Stupid me. Well, at least Firefox gave me an obtuse message to tell me what is going on. How lovely.

So, this happened to me one too many times. And I got pissed. And I had a conversation with my browser. I was probably drinking so it made sense at the time. The conversation went something like this:

WTF Firefox. You KNOW what I meant. Stop being a dick and just do the right thing™.

And then it reminded me of one of the very first “cool” things I experienced at Facebook. Facebook uses Phabricator and Arcanist for their development workflow. Arc (like Mozilla’s Mach) is a local tool to run builds, send up diffs, manage patches, and things of that persuasion. One of the things you do with arc is run `arc build`.

Well guess what happened. My first day at Facebook I typed `arc biuld` instead of `arc build`. I’m such an idiot. They should have fired me. Much to my delight I saw this:

It says:

Assuming 'biuld' is the British spelling of 'build'...

And it hit me. Someone was THINKING. They encountered this problem, thought about how many people would do that typo, realized there was really only one possible intended result, and decided to have the computer just do the right thing™. Someone cared about engineer time so much they fixed it for every future engineer to come. The thought and whimsical message made such a large impression on me I insisted we add a similar feature to Buck, Facebook’s super-fast Android build tool:

$ ./bin/buck biuld
No sign of buck.jar -- building Buck!

It uses Levenshtein distance to figure out what you really meant to type. Humans: 1, machines: 0. Sweet.

Where was I? Oh yeah, man over machine. So I started thinking, which is never a good thing. This sort of thing happens to me every day and slows me down a lot. For example, if I type `git cone` instead of `git clone`:

It says:

$ /usr/bin/git cone
git: 'cone' is not a git command. See 'git --help'.
Did you mean this?
clone

You know DAMN WELL what I meant git, and you mock me by echoing it out right in front of me. You spit in my face and just sit there all smug about it. What a dick.

So I went to teach git some manners, and it turns out the feature is already there. If you set help.autocorrect git will do the right thing™. There was a bug about making it default but I lost interest reading it to figure out why they insist on making humans do the work of computers. As an aside, do you know the git developers only take contributions as patches to a mailing list? Coding like we’re in the 90s, whooooooo!

Get. To. The. Point.

What does this have to do with Firefox you might ask? What, you don’t like my stories? Fine! Remember the screenshot at the beginning:

I started thinking how stupid Firefox was being, how many wasted human-hours were spent reading the message and acting on it, and how much goodwill Firefox loses when its users roll their eyes at this screen.

And it made me angry. So I decided to fix it. How hard could it be? Alcohol may have been a factor in my difficulty calculation. But I did it! The proof is a screenshot of Google:

I typed in “ttps://google.com” and was taken to “https://google.com” automatically without seeing an error screen! Firefox will now fix all these typos:

Did it work? Of course it did! Oh damn, you tried “hptts” and it didn’t get fixed? My change only deals with dropped characters and not jumbled character typos. It’s not a bug because I documented it™. To be honest I am lazy and lost interest after I fixed my copy and paste pain but it would be trivial to extend my patch to cover the latter case. Get in touch and I can mentor you! Take a look at the code (part 1, part 2). And there are tests! I mainly wrote those to not be a hypocrite as I preach the unit test gospel to product engineers every day. Oh, and for “quality”.

Turns out this life-changing feature was a lot more involved than expected, for two reasons.

First, I naively assumed there would be one location where everything gets loaded from the location bar input. To me that was a sensible way of organizing things. I could then just do a string match on the URL scheme and replace it with the right stuff…easy peasy, right? Errr, no. Turns out Firefox is…interesting. And on a lot of platforms with different UI code.

I kept digging deeper in the stack and when I got to where I needed (docshell) it wasn’t the right place for the fix at all. I’d potentially break web compatibility. Whoops. Rather than doing a simple fix at a lower-level chokepoint I needed to patch in optional support to that low-level and then hunt down every place Firefox takes in URLs and do the typo fixup. And then of course my first patch didn’t work due to a last-minute change and I had to fix things up in a second patch. See the gory details in the bug.

Second, Mozilla’s current setup is very developer-hostile. And that isn’t just “OMGWTFBBQ why isn’t Firefox on teh GitHubz!” and “lke dis if u cry evry tme u tuch c++”. Seriously, I do not know how Firefox developers get any work done. I would quit if I was forced to work on Firefox code all day. I’m not talking about code quality, I’m talking about supporting stuff–from build times, to no linters, to crufty code-search tools, to horrible code review, to dealing with no CI. I think I’ve been spoiled at Facebook as we invest heavily in speeding up the development workflow (we’re hiring!). I have more thoughts on this I intend to blog later, but to my Mozilla friends it doesn’t need to be like this. Expect more from your tools and development workflow!

Ahem. I’ll get off my soapbox and save my fire and brimstone tools talk for another day.

]]>http://christian.legnitto.com/blog/2012/12/02/lana-del-ray-cola/feed/0Frank Ocean – Swim Goodhttp://christian.legnitto.com/blog/2012/04/23/frank-ocean-swim-good/
http://christian.legnitto.com/blog/2012/04/23/frank-ocean-swim-good/#commentsTue, 24 Apr 2012 04:36:32 +0000http://christian.legnitto.com/blog/?p=294I like this song but can’t stand listening to it because of the horrible grammar. Ugh.

]]>http://christian.legnitto.com/blog/2012/04/23/frank-ocean-swim-good/feed/0New mediawiki-bugzilla featureshttp://christian.legnitto.com/blog/2012/04/18/new-mediawiki-bugzilla-feature/
http://christian.legnitto.com/blog/2012/04/18/new-mediawiki-bugzilla-feature/#commentsWed, 18 Apr 2012 18:22:16 +0000http://christian.legnitto.com/blog/?p=285I’ve been looking for high leverage ways to contribute to Mozilla now that my spare time is virtually non-existent. Luckily, mediawiki-bugzilla is gaining a lot of traction at Mozilla and looks to be really helping out. Seeing as I started the project I decided to add some much needed features! These aren’t rolled out on wiki.mozilla.org yet but they will be soon (I have a couple of little things to finish first). Code can be found in my github repo (yes, I am currently working to rectify the mozilla/personal dual repo situation).

Status colors

First up, a minor yet helpful addition. When showing bug data in a table, the rows are now colored by their status. Spiffy.

Screenshot of colors

And the code:

<bugzilla>{"whiteboard":"[mediawiki-bugzilla]"}</bugzilla>

A couple of notes:

mediawiki-bugzilla adds CSS classes with the status values on the table automatically

The “lock” icons and such come from mediawiki. I’m working on removing them (by stopping medawiki from processing the extension’s ouput) but if you use a custom theme it shouldn’t be an issue

For this example, remember that type=”table” is the default…that’s why it’s rendered as a table

Configurable fields/columns

Once people started using the extension the first question was “can I choose which fields to show and hide?” With this change you specify fields in the “include_fields” setting of BZ REST API options as you normally would. Mediawiki-bugzilla will then a) only fetch those fields and b) display those columns.

Not all fields have custom templates yet. This means some fields (such as assigned_to) won’t show up properly. I’m going to be writing a bunch but feel free to submit a patch!

Only “include_fields” is supported. mediawiki-bugzilla won’t do anything with “exclude_fields“

“_default” isn’t supported as a field, so list the fields you want explicitly

Javascript tables

Large lists of bugs on a wiki page can get a bit unwieldy. It was requested to be able to sort by columns, search through the results, and paginate to keep vertical space to a minimum. I beefed up the support for client side jquery/Datatable rendering.

PHP doesn’t give me the exact JSON parse error so I can’t be more helpful. This example has a trailing ‘,’, which isn’t allowed in JSON

Errors from the Buzilla REST API timing out or PHP using too much memory are not caught / reported

]]>http://christian.legnitto.com/blog/2012/04/18/new-mediawiki-bugzilla-feature/feed/4Enjoying the Mozilla memeshttp://christian.legnitto.com/blog/2012/03/16/enjoying-the-mozilla-memes/
http://christian.legnitto.com/blog/2012/03/16/enjoying-the-mozilla-memes/#commentsSat, 17 Mar 2012 00:39:39 +0000http://christian.legnitto.com/blog/?p=283I am totally enjoying the Mozilla Memes blog. Hilarious. I just submitted one tonight that I made a while ago. Makes me laugh every time.

Also, when heard about the blog I couldn’t help but think of this amazing video that was making the rounds when we started the new release process:

]]>http://christian.legnitto.com/blog/2012/03/16/enjoying-the-mozilla-memes/feed/0Long time no see!http://christian.legnitto.com/blog/2012/03/05/long-time-no-see/
http://christian.legnitto.com/blog/2012/03/05/long-time-no-see/#commentsTue, 06 Mar 2012 05:31:44 +0000http://christian.legnitto.com/blog/?p=280I went a bit underground after leaving Mozilla as an employee. Now that I am situated in my new role, I can talk a little bit more about what I am doing and how it will relate to Mozilla.

I am currently at Facebook and recently graduated bootcamp. I’m on the Release Engineering team with Chuck Rossi working on release related things. Right now I help out with the Facebook.com web releases but I’ll be moving into mobile (Android, iOS, mobile web, etc) shortly. It’s pretty cool to see how a company the size of Facebook deals with releasing how often they do, the scope of their frontend and backend systems, and the tools and processes they have in place. Once I start working on mobile, I am absolutely giddy I get to work with Mike Shaver again.

So what does this mean for Mozilla? A lot! I’ve been missing-in-action, waiting for legal approval to work on Mozilla stuff. Now that I have that approval, I should be around more and more. Here’s a list off the top of my head of what I intend to work on in my “spare” time:

Making it so source migration is as easy as pushing a button. I started this work before I left but based on the time it took Alex and I to struggle through the last migration it’s clear that it isn’t nearly good enough. I intend to expand my hacky merge tool to make it solid

I have Bugzilla improvements I have committed to. Some even have patches. I have promised to finish them and I will do so. I know the benefit to Mozillians is great but quite honestly it is hard to motivate myself to work on Bugzilla without feeling the benefit personally. Plus, I have no desire to subject myself to Perl anymore…and that’s coming from a guy who works in PHP now (ugh). That being said, I will finish what I started and help the Mozilla community in this way as much as I can

Usable, generic release management tools. Every company I know has tools to track what is/isn’t in a branch, overlay interesting events on the repo graph, perform cherry picks / transplant between release branches, etc. I intend to write some reusable components I can use at Facebook as well as Mozilla

Help with mediawiki-bugzilla. I started the project as a proof of concept and it’s been great to see Lawrence and Jake Maul get it actually used in production. The project is so useful and so simple I’ll probably hack on it in my spare time to let off some steam. Plus, Facebook has a lot of PHP so I guess I’ll feel a little bit more at home working on this codebase. Any web developer looking to contribute to Mozilla / open source should take a look at this project…high impact (a lot of open source projects use MediaWiki and Bugzilla), super simple code base, accessible language with no real external dependencies, and very little development red tape (just a pull request on GitHub!)

Channel triage. I actually enjoy triage and I want to take the load off of Alex and others so they can do “real” work during their day. I have some ideas for tools and processes to help out but I plan to triage at least 3 times a week or so…it helps me go to sleep when my mind is racing. First, I need to make sure I have all the proper Bugzilla access but then I will be acting as the Triage Fairy™ as much as possible

Mozilla Pulse. I fumbled the handoff (sorry guys!) but I intend to push Pulse forward as much as I can

I won’t be working on Mozilla stuff in any official Facebook capacity, but I’ll be around as much as I can in my personal time. I’m excited!

]]>http://christian.legnitto.com/blog/2012/03/05/long-time-no-see/feed/0Revolver – Leave me alonehttp://christian.legnitto.com/blog/2012/01/16/revolver-leave-me-alone/
http://christian.legnitto.com/blog/2012/01/16/revolver-leave-me-alone/#commentsTue, 17 Jan 2012 00:53:34 +0000http://christian.legnitto.com/blog/?p=277Learned this song on the guitar today, sort of has an old-time feel. Good for a lazy holiday:

]]>http://christian.legnitto.com/blog/2012/01/16/revolver-leave-me-alone/feed/0Moving on from Mozillahttp://christian.legnitto.com/blog/2012/01/13/moving-on-from-mozilla/
http://christian.legnitto.com/blog/2012/01/13/moving-on-from-mozilla/#commentsFri, 13 Jan 2012 21:01:25 +0000http://christian.legnitto.com/blog/?p=275Today is my last day as a Mozilla employee, though I will always stay a Mozillian. Mozilla is the premier open source project and touching a small part of it has been both inspiring and humbling. Meeting all the smart and talented people I “knew” from reading Planet still blows my mind.

Leaving is very bittersweet for me. We accomplished so much in 2011 and 2012 looks to have even more on tap. Hunkering down and shipping Firefox 4, going through a transition like the new release process, shipping a mobile product, and questioning years of assumptions while figuring it out as we went along was exhilarating. No one (including many Mozillians) thought we could ship Firefox 5 a quarter after Firefox 4. Well guess what, we did. And then we shipped Firefox 6, 7, 8, and 9–all on time. Sure, there were hiccups. Transitions are hard. We laid the foundation for the future and 2012 is the year we take it to the next level.

During my interview, Mike Beltzner (@beltzner) asked me if I identified as a community member. I told him that I lurked around on Planet and Bugzilla, so not really. He looked me in the eye and told me he viewed lurkers as a valuable part of the community, making me feel like a member of the Mozilla family from day one. If you are a lurker, please take note. Of course, now that I know where I can effectively contribute I don’t intend to stop…so look for me in bugs and participating in email threads about the correct shade of orange for the Firefox button (kidding!).

I want to publicly thank Johnathan Nightingale (@johnath), Senior Director of Firefox Engineering, for his guidance and advice. He has been both an amazing manager and mentor from day one. His analytical ability, managerial prowess, and technical chops have been inspiring and I hope you get a chance to experience them as I have.

Any release management work / questions should be directed towards Alex Keybl (@alexkeybl). Alex joined us this year from Apple (where he drove features for Mac OS X Lion) and has already made a large impact at Mozilla. I’m sorry that I am leaving but I know Firefox releases will go smoothly in his capable hands.

They say you are supposed to end posts like this with a quote for added effect. I think this quote accurately captures my feelings about moving on from Mozilla:

]]>http://christian.legnitto.com/blog/2012/01/13/moving-on-from-mozilla/feed/0Firefox release candidate builds availablehttp://christian.legnitto.com/blog/2011/11/04/firefox-release-candidate-builds-available/
http://christian.legnitto.com/blog/2011/11/04/firefox-release-candidate-builds-available/#commentsFri, 04 Nov 2011 19:49:28 +0000http://christian.legnitto.com/blog/?p=273In case you missed it, late yesterday we declared a release candidate for the next version of Firefox. Please test it!
]]>http://christian.legnitto.com/blog/2011/11/04/firefox-release-candidate-builds-available/feed/0New tool to generate CSVs from input.mozilla.org datahttp://christian.legnitto.com/blog/2011/10/31/new-tool-to-generate-csvs-from-input-mozilla-org-data/
http://christian.legnitto.com/blog/2011/10/31/new-tool-to-generate-csvs-from-input-mozilla-org-data/#commentsMon, 31 Oct 2011 18:10:11 +0000http://christian.legnitto.com/blog/?p=269Our feedback tool (input.mozilla.org) has great data but I found some of the analysis tools lacking. I wrote a new (ugly) python script to generate CSVs from input data. I then feed the CSVs into a spreadsheet program to visualize:

This has already become pretty valuable to me for looking at overall feedback, positive/negative for a particular version or query, etc.

It’s a bit rough / hacky, there may be bugs, but you can find it here:

The module “argparse” (should be in python 2.6+). Install it with ‘sudo easy_install argparse‘ or ‘sudo pip install argparse‘

The tool currently dumps the CSV to stdout, so you’ll most likely want to redirect output to a file.

Input now supports OR queries

When writing the tool I realized I needed to support searching for multiple terms. For example, when trying to get feedback on hangs just searching for “hang” wouldn’t give me the complete picture. I needed to search for something more like “hang OR freeze OR responding”. I supported this in my tool with queries for each search term and aggregating the results. I quickly realized there were duplicates in the aggregated counts (input doesn’t give me unique ids to de-dupe) so I would only get an upper bound.

I hopped into #input on irc.mozilla.org and asked about OR queries. Dave Dash said it’d probably be easy to support, disappeared for a bit, and then BAM, input supported OR queries (using ‘|’ in the web UI, ‘,’ in my tool)! Thanks Dave!

Pivoting on Firefox version (–version)

Details:

Show input types and ratios

Allows you to see general “quality”…(praise/issues) is essentially a quality index

You can restrict the analysis to a particular search if you want by using ‘–search’

Beta and alpha versions are folded into the main version number

Example usage:

python scrape_input.py –version 8.0

python scrape_input.py –product mobile –version 8.0

python scrape_input.py –version 7.0 –search memory

python scrape_input.py –version 6.0 –search hang,freeze,responding

Pivoting on input type (–type)

Details:

Track input over the life of a product

Breaks down input by version and overall

You can restrict the analysis to a particular search if you want by using ‘–search’

]]>http://christian.legnitto.com/blog/2011/10/30/sufjan-stevens-the-dress-looks-nice-on-you/feed/0A modest Bugzilla keyword format proposalhttp://christian.legnitto.com/blog/2011/10/24/a-modest-bugzilla-keyword-format-proposal/
http://christian.legnitto.com/blog/2011/10/24/a-modest-bugzilla-keyword-format-proposal/#commentsMon, 24 Oct 2011 23:02:22 +0000http://christian.legnitto.com/blog/?p=265I just sent an email to dev-planning proposing a new keyword format. Nothing earth-shattering, but I think the upside is huge. I’ll reproduce it here, but feel free to comment in the dev-planning thread.

Keyword subsections can use whatever rules they like, only “#” in the 1st position and “/” anywhere is special (spaces obviously don’t work)

(ab)using the current keyword system. This is essentially a small step to moving keywords into a tree model, rooted via component. I need something NOW and can’t wait for bugzilla improvements (and already have enough of them assigned to me).

Why not use the whiteboard?

The whiteboard is junk! I can’t do historical queries for when a whiteboard substring was removed. The bugmail isn’t explicitly clear and I have to take time to scan the string, fun regex stuff in scripts, etc.

If bugzilla had a decent keyword or tag system the whiteboard would go away…it’s a kludge.

Future plans?

Make anyone able to grab a “#” namespace and then create as many keywords as they want inside without having the current heavy-weight keyword access. This should actually be easy to do in bugzilla

Release Management may migrate this sort of stuff to our web system outside Bugzilla, but for now we’re (ab)using current tools

We need to replace Bugzilla’s keyword system. Yesterday.

Please let me know what you think and if you or your group would find such a change useful. The goal would be for it to be invisible to anyone who isn’t using it and wildly useful to those who do.

]]>http://christian.legnitto.com/blog/2011/10/24/a-modest-bugzilla-keyword-format-proposal/feed/0Mozillians.org is already useful, can’t wait for morehttp://christian.legnitto.com/blog/2011/10/07/mozillians-org-is-already-useful-cant-wait-for-more/
http://christian.legnitto.com/blog/2011/10/07/mozillians-org-is-already-useful-cant-wait-for-more/#commentsFri, 07 Oct 2011 17:24:56 +0000http://christian.legnitto.com/blog/?p=260I was in Firefox Aurora bug triage and came across bug 692506. The bug is a SVG regression that shipped in Firefox 7. Even though we do our best, with the amount of code out there on the web some issues are bound to slip through. Luckily it’s not serious enough or widely used enough to create a Firefox 7.0.2 release but of course we want to fix it as soon as possible. Updates should leave users no worse off.

The fix is clearly right […] Looks like pretty good value for a 1 line change to me.

Now, I had seen Robert’s name previously but I wasn’t as intimately familiar with his areas of expertise. I remembered Mozillians.org launched recently and decided to see if it could shed some light on Robert to give his signoff additional weighting.

So I searched. Luckily, I got a hit!

Not too bad for a website that launched recently. I checked out Robert’s profile:

Looks like Robert is a SVG peer! If there was any doubt (don’t know why there would be) I have Daniel vouching for the information. Because I know Daniel, this is about as solid a confirmation I could get.

So, now I have a heavy-hitter (Boris) writing the patch and a peer in the area of the patch (Robert) saying it is correct and safe. That makes taking the regression patch a no brainer.

Mozillians.org helped to turn a fuzzy product decision into a clear one, reducing risk and making us more confident in a Firefox change. I also can’t wait for the tool to have timezone support so I know when community members I need patches from are available or not.

Please add yourself if you haven’t already so we can make this resource even more valuable.

]]>http://christian.legnitto.com/blog/2011/10/07/mozillians-org-is-already-useful-cant-wait-for-more/feed/4Postponing the Firefox 3.6.x → 7.0 advertised updatehttp://christian.legnitto.com/blog/2011/10/06/postponing-the-firefox-3-6-x-7-0-advertised-update/
http://christian.legnitto.com/blog/2011/10/06/postponing-the-firefox-3-6-x-7-0-advertised-update/#commentsThu, 06 Oct 2011 20:09:47 +0000http://christian.legnitto.com/blog/?p=259The previously scheduled 3.6 → 7.0.1 advertised update is now postponed while we make sure our server capacity is sufficient for release. Once the investigation is complete I will communicate a new date well in advance so all stakeholders can plan accordingly.

This is part of the old release process and is unchanged from what we have been doing for the past 3+ years

The prompt is opt-in…if users decline, they stay on 3.6.x and get security updates until the next time we decide to prompt

We did this for 3.0.x -> 3.5, 3.5.x -> 3.6, 3.6.x -> 4.0 and 3.6.x -> 5.0…nothing new

If enterprise deployments have advertised/”major” updates disabled in rollouts their users will not see the prompt but they will see Firefox 3.6.24 when it is released on 2011-11-08

This is mainly to move regular Firefox users who don’t know there is an update up to a newer/better version if they are so inclined.

Based on previous advertised update offers we expect to see a significant percentage of users installing the new version. We are, of course, watching the data closely to see what happens and to make sure there are no unexpected issues.

If you are running Firefox Beta, you already have the version that was released today. One of the benefits of being on the cutting edge! Want an even earlier look at Firefox? Try Firefox Aurora.

]]>http://christian.legnitto.com/blog/2011/08/16/firefox-beta-users-already-have-the-version-released-today/feed/0Announcing mediawiki-bugzilla, a MediaWiki extension to embed bug datahttp://christian.legnitto.com/blog/2011/07/29/announcing-mediawiki-bugzilla-a-mediawiki-extension-embed-bug-data/
http://christian.legnitto.com/blog/2011/07/29/announcing-mediawiki-bugzilla-a-mediawiki-extension-embed-bug-data/#commentsFri, 29 Jul 2011 18:44:57 +0000http://christian.legnitto.com/blog/?p=249Do you use wiki pages to track things? Tired of copy and pasting bugzilla queries and bug information? Me too. I got fed up one day and decided to do something about it and the result is mediawiki-bugzilla.

What is mediawiki-bugzilla?

It is a server-side MediaWiki extension that provides read-only access to the Bugzilla REST API. It’s basically a working proof of concept at this point but I will be beefing it up in the coming weeks.

Why did I write my own MediaWiki extension?

I deal with wiki pages, bugs, and triage daily. It seemed stupid to be copying data and sometimes I wanted to embed up-to-date bug information in various wiki pages. I looked for solutions and found the excellent Bugzilla Reports extension. Unfortunately, it didn’t fit my needs:

Bugzilla Reports needs direct access to the Bugzilla database. Yikes! Not only would I not get that access that would mean we would have to security audit the whole thing. Also, it was unclear that the assorted groups and permissions could be preserved across queries

The specification/query language was homegrown. In addition to wiki markup one had to take time to learn how to tune and use a specification unique to Bugzilla Reports

I’m not the best PHP programmer in the world but the code seemed overly complex and was difficult to dive into

I actually hacked together a proof-of-concept backend to have Bugzilla Reports query the Bugzilla REST API instead of the database but it didn’t work quite right and wasn’t maintainable.

I wanted to make an extension that is painless to use, easy to develop, and has no possible way of exposing restricted bugs. I didn’t want to create my own query specification / format, so I piggybacked off Gerv’s excellent Bugzilla REST API. The extension is basically an easy way to make REST API calls from MediaWiki so the docs can be used for the extension as well.

How to use mediawiki-bugzilla

You essentially use this extension in this way:

<bugzilla>(JSON REST API query key/value pairs)</bugzilla>

For example, the following would be used to get all P1 bugs in the Bugzilla product:

<bugzilla>{"product":"Bugzilla","priority":"P1"}</bugzilla>

Notice that this is the same example used in the Bugzilla REST API documentation. Any query you can do via the API you should be able to embed in a wiki page using this extension.

Next steps

The major thing I am going to add is caching of the queries every 5 minutes or so while allowing manual cache overriding. This should make it so 50 people loading a wiki page with 10 queries at the same time doesn’t overwhelm Bugzilla.

After that I will beef up the charting and add some docs. Then we’ll get this rolled out on wiki.mozilla.org!

As always, patches welcome. The code is very simple and it should be very easy to add new features as there aren’t really any right now.

First, some background. We test pre-release versions of Apple’s latest OS, Mac OS X Lion (10.7). Our users also test on their own and we see their crash reports in our crash reporting system. Apple seems to have introduced a bug in their ATS framework in a previous Lion seed. The bug makes Firefox (all versions) extremely unstable. We reported it to Apple but there are only so many bugs that can be fixed and unfortunately this one didn’t make the cut for their GM seed. Because Apple had announced “July” as the release of Lion we knew we couldn’t just wait for Firefox 6’s release (August 16th) to fix it. At the same time, it came to our attention that the latest Java update released by Apple on Mac OS X Snow Leopard (10.6) broke Java for Firefox 5 users. Clearly we had to create out-of-band updates to address both issues.

Immediately, we questioned what platforms we should ship the updates to. It seemed odd to release an updated Firefox to all users on all platforms when the bugs only affect the Mac population.

There are some distinct downsides to releasing across all platforms in this situation:

The updates aren’t trivially small. Profile-guided optimization on Windows makes it so the binaries aren’t exactly the same for a rebuild. Additionally, the code fixes aren’t conditionally compiled so the resulting binaries would be even more different. Though binary patch / delta updates reduce the impact, we still don’t feel comfortable having our entire Windows and Linux populations download data that did nothing for them

More QA / qualification is required and there is more opportunity for issues to crop up (such as automation failures, packaging errors, etc)

Of course, there are some downsides to releasing only for Mac users in this situation:

User confusion. Windows and Linux users may see the update announcements and think their version is insecure / there is something wrong with automatic updates

Supporting tools may expect all platforms to have the same supported version

Our update automation only supports patching to the last update. When we go to release Firefox 6 and Firefox 3.6.20 all non-Mac users will get the full update rather than a binary patch update (unless we try to do manual hackery)

The Mozilla.com website only supports specifying a “latest version”. It is not broken down by platform. We have to offer all platforms for download on Mozilla.com or only offer the older version, exposing new Mac users to the two fixed problems until they update (which may not happen if they keep crashing in the middle of the download)

Due to the way our update server works, we have to pop up a window offering Firefox 5 to the freshly updated Firefox 3.6.19 Mac users or make it so “Check for updates” on 3.6.19 doesn’t offer Firefox 5–both options not ideal

This is why release management is hard. Rarely is there a good option and often it takes too long to get the proper data needed to make an informed decision. Just gathering the above information from various stakeholders took a fair amount of time. To make matters more frantic, we needed to get the updates out as soon as possible to release before Lion’s ship date (which is still unknown but thought to be soon).

I looped in product management, as they are the ultimate product “owners” and know how to reason about the assorted tradeoffs and their impact on both our users and Firefox in general. After conferring with product management we decided the downsides of releasing for all platforms outweighed the ones for releasing just for Mac.

We verified with supporting system owners that releasing only for Mac would not cause issues (crossing off #2 above), chose to offer all platforms on the website (largely mitigating #4), and made a call to turn off manual update offers to Firefox 5 for 3.6.19 users (#5 above). We also have time to figure out how to manually hack around patch packages to mitigate #3 but made it clear we are willing to live with the current situation when Firefox 6 / Firefox 3.6.20 comes along.

This decision and process could definitely have been messaged more clearly. We were moving quickly and I was at a team offsite that stole more attention than anticipated. I’m happy with the decision we took but realize there was no “correct” decision in this situation. Both ways had tradeoffs and if we chose releasing to all platforms I imagine I would be writing a similar post explaining why.

]]>http://christian.legnitto.com/blog/2011/06/19/danger-mouse-daniele-luppi-featuring-jack-white-two-against-one/feed/0A small Bugzilla improvementhttp://christian.legnitto.com/blog/2011/06/15/a-small-bugzilla-improvement/
http://christian.legnitto.com/blog/2011/06/15/a-small-bugzilla-improvement/#commentsWed, 15 Jun 2011 14:16:13 +0000http://christian.legnitto.com/blog/?p=240With the recent Bugzilla 4.0 rollout on bugzilla.mozilla.org comes a small but useful usability improvement. It’s so small you may not have noticed (I wrote it but didn’t notice for weeks!), so I decided to blog about it. The bug I filed and fixed was:

Previously, searching for “Christian L” returned all users with “Christian” in the first or last name as well as all users with “L” in the first or last name. As you can imagine, this was a long list to search through (lots of names have an “L” somewhere) and made searching by name useless–especially when you didn’t know how to spell someone’s name.

Most people work around this bug by searching just for a IRC nick using “:[ircnick]“. IRC nicks are generally unique which produces a smaller list, and inserting the colon assures that there are little to no substring matches.

The search behavior really annoyed me so I dug in, patched Bugzilla, and changed the behavior:

Notice the only people shown match "Christian L" rather than everyone with an "L" in their first or last name

I now find myself searching for irc nicks less and less and just using a person’s name. This is one less mental step for me as I no longer have to map from a person to an irc nick in my head.

This was my first Bugzilla patch and the first improvement I wrote that got rolled out on bugzilla.mozilla.org. Special thanks to Max for guiding me through the patch / Bugzilla codebase.

I hope that this small change made Bugzilla a little more usable for everyone.

Writing about the cool tech I’ve been playing around with in my spare time

It’s not that I am looking for perfection, it’s just that blog posts take a suprising large amount of time! Getting all the pictures together, getting code examples correct and tested so I don’t get a bunch of correction comments, etc.

Hopefully I can find some time this week…but that’s what I said last week.

]]>http://christian.legnitto.com/blog/2011/05/31/blogging-is-hard/feed/0I’m racing amateur supermoto at Infineon this weekend!http://christian.legnitto.com/blog/2011/05/13/im-racing-amateur-supermoto-at-infineon-this-weekend/
http://christian.legnitto.com/blog/2011/05/13/im-racing-amateur-supermoto-at-infineon-this-weekend/#commentsSat, 14 May 2011 01:49:52 +0000http://christian.legnitto.com/blog/?p=228I’m racing amateur supermoto at Infineon this weekend. It’s part of the West Coast Moto Jam, a big event that includes all types of motorcycle racing (motocross, dirt track, superbike, etc).

I’ll be racing 3 classes:

Saturday: Asphalt-only Open beginner

Sunday: Open Novice/C and Open beginner

There is a 30% chance of rain on Sunday and I am not sure what I am going to do as I don’t have rain slicks. I’m not sure I really want to cut my tires as they are pretty new and honestly I am not hardcore enough to really want to race in the rain.

I’m really excited about the races in general! I took Thursday off work to practice on the track and I loved it. The dirt section is a little gnarly though (there are pictures at http://mikedoran.zenfolio.com/p533645150). I’m planning on taking it slow and not trying to go fast through it though.

I also probably have some spare tickets if anyone knows me in real life and is interested (they are free and include starting grid passes!)

Please do note the rapid release process is still new and might need to be adjusted as we go through a couple.

If you are…..

A Developer

You need to focus on the fact that the next merge from mozilla-central to mozilla-aurora is 2011-05-24 (any code for Firefox 6 needs to be in by that date)

You need to know any major issues you find in code landed before 2011-04-12 should be brought to the attention of release drivers to put into beta or aurora, wherever is appropriate

A Localizer

You need to focus on the fact that you only have until 2011-05-17 to finish localizing Firefox 5 content in mozilla-aurora (time left for current work)

You need to focus on the fact that the next merge from mozilla-central to mozilla-aurora is 2011-05-24 (time the work for the next cycle starts so you can plan)

Add-on Developer

You only have until 2011-05-17 to test your add-on with Firefox 5 content in mozilla-aurora and mark your add-on as 5.0* compatible.

You will be able to test for 6 more weeks on beta but our beta audience has over 2 million people…you probably don’t want to field their support questions and should just focus on getting it compatible during the aurora timeframe.

You should start testing your add-on with Firefox 6 content in mozilla-aurora on 2011-05-24. You will have 6 weeks to test on aurora and another 6 weeks to test on beta

Anyone Else

Firefox 5 will be released on 2011-06-21

I hear there is a developer calendar somewhere and intend to add the assorted merge dates. I have also been saying it every week in the platform, MoCo, channel, and product meetings. We’re working on getting it added to the wiki in the appropriate places (thanks to Matt Brubeck for adding it on the RapidRelease wiki page).

Additionally, there are dates in the specifics document as well as a quick python program to spit out your very own merge schedule. Please note we are still working out the mechanics of merges so they may be +- a day or so.

]]>http://christian.legnitto.com/blog/2011/04/25/release-dates/feed/6Come join the new Firefox release team at Mozilla!http://christian.legnitto.com/blog/2011/04/22/come-join-the-new-firefox-release-team-at-mozilla/
http://christian.legnitto.com/blog/2011/04/22/come-join-the-new-firefox-release-team-at-mozilla/#commentsFri, 22 Apr 2011 22:18:41 +0000http://christian.legnitto.com/blog/?p=220Here at Mozilla we release a fair amount of software, most recently Firefox 4:

Photo by Bob Moss

With the new Firefox rapid release process managing the details of those releases is even more critical as we absolutely cannot slip the schedule. Because the schedules are set in stone we need to manage a lot more up front. Additionally, with releases shipping on a faster cadence there is less time for mistakes to be caught. When one adds in new platforms (smartphones, tablets), new products (Firefox Mobile, Firefox Home), and new channels (Nightly, Aurora) there is clearly a growing need for project and release management.

To meet this growing need Mozilla is hiring for a new release management team!

Is this you?

We currently have two positions available:

Associate Engineering Project Manager – Releases: We’re looking for someone at the beginning of their career who can learn the ropes and grow to be an experienced member of the release management team. Problem solving, great communication skills, and technical chops are a must!

Engineering Project Manager – Releases: We’re looking for someone with tons of experience managing software releases, hopefully at internet scale. This person will hit the ground running, taking the lead on many releases as well as driving process improvements.

What is Release Management?

Wikipedia has a somewhat decent description of what release management actually is. The main takeaway is the fact that it is a project management function, not development (writing the code for the bits that are eventually shipped), QA (testing the bits that are eventually shipped), or Release Engineering (managing the systems that build, package, and deliver the bits). All these groups have differing priorities and worldviews yet need to interact on the same project–that’s where release management comes in.

Don’t worry, release management is not just playing with schedules, sending emails, and organizing meetings. There is ample opportunity to create tools (examplesaren’thardtofind) , help define the direction of the product (by driving features or hashing out new processes), and make decisions that directly impact hundreds of millions of people worldwide.

Darn, I don’t live in the San Francisco Bay Area

While our preference would be to have the employees work out of our Mountain View, CA office, it is not explicitly required. You don’t have to live in the San Francisco Bay Area, California, or even the United States! We have offices all over and for the right candidate / timezone we might even consider 100% remote (though your effectiveness will likely be diminished as a large part of the job is interaction with other people).

If you do want to move to the San Francisco Bay Area, we can investigate how to get you here.

Sweet, sign me up!

Great! We want to fill these positions quickly, so get your resume in order and apply via the jobs website: