Mrrrgn's Mumbles
{tags: notes }

Mozilla Needs a Justice League!
Like the proverbial flat lander -- flicked upward by some three dimensional trickster -- my long [horizontal] leap from release engineering to the JavaScript engine imparted a strange perspective on Mozilla as an organization. Encountering a particularly broad cross section of bugs and irc conversations, I've peered down into some deep knowledge silos within platform engineering. Silos that make it hard to solve certain kinds of problems and have a negative impact on the quality of Mozilla's products. The time is right for a group of generalist hackers to open them up.

Case Study: Stopping Scripts

The "Stop Script" button that appears when some JavaScript is bogging down a page doesn't generally work well. If a slow script is triggered by some event it will continue running even after being stopped. :o This can be a huge annoyance to users. Fixing the issue seemed complicated at first glance but it turns out that there's an XPConnect call which disables all scripts in a compartment. Knowing about this makes the whole issue trivial to solve with a single line of code, but it's not knowledge that's easy to come by!

Case Study: Smart Multi-line Editing

The JS Shell has a nice feature where it will automagically hold-off on evaluating code that isn't complete. Sadly, for a long time, this wasn't available in the Firefox web console. Going in search of why led me to a little known method in JSAPI (an API for JavaScript embedders) which made the implementation of this, otherwise difficult to implement, feature simple. Without specialized knowledge of the JavaScript Engine I wouldn't have been able to solve this seemingly unrelated issue.

Case Study: Links to Error Docs

Inspired by Rust's awesome error messages we set out to expose links to documentation alongside particular JavaScript errors. Unfortunately there was no mechanism in place for detecting which of the 400+ error types were being shown to a user. Exposing this information required mucking around in some of the murkiest parts of Firefox and, again, required specialized cross-domain knowledge.

Case Study: Addon Antipatterns

Addons perform two valid roles: serving users with unique needs and acting as a proving ground for experimental features. Addons that improve polish, performance, or stability should have no raison d'être.

Supporting this notion is the fact that engineers often [independently] file performance and stability bugs which mirror existing addon functionality: Bug 1270732 and Bartab Heavy, Bug 180241 and 'Make Firefox Faster' articles. Things like the legendary "Kyle Huey hack" [for improving forward/back navigation performance] may also fall into this category.

Proposal: A Long Term Solution

The realization that we need to develop a consistent strategy for detecting and solving platform spanning issues was partly inspired by an excellent post to the JavaScript Engine mailing list by Bill McCloskey:
    "Every one of us at Mozilla has a responsibility to make Firefox the best web browser. The more we divide ourselves into cliques and label bugs as "someone else's problem", the sooner we will fail. ... many of the most important bugs that span across different areas.

    Mozilla needs more people who understand multiple browser components. I'll call them superheroes because of how valuable they are."
Bill hit the nail on the head. There is an entire genre of improvements that aren't being systematically addressed because they require rare platform-spanning knowledge. Assembling a team of generalist hackers aka "superheroes" who possess this knowledge will make us more capable of tackling problems like:
  • Resource management (see bugs 1270732 and 1269917)
  • Integration with specific operating systems / partner technologies
  • Making data-driven improvements based on collection/analysis of platform performance metrics (see bugs 1271769 and 1255133)
And the team need not be composed of veterans, superheroes can be created.

How do we grow our own heroes? Via a team with an explicit focus on grabbing bugs from a cross section of the organization then using their perspective, along with some sweet sweet telemetry data, to identify and solve the cross-cutting problems that are inevitably found. Such a group will become a hub connecting silos.

I'm hunting for hackers who would like to give this a try. If you're interested, let's talk! I'll be around via twitter, IRC, and e-mail. *edit, there is now a #justiceleague channel on irc.mozilla.org as well.*

05-19-2016 , rss feed license