Firefox OS 1.0

2012/13 – The project mandate of Firefox OS 1.0 was to get our foot in the door of the mobile handset market while Firefox OS enjoyed a price/performance advantage over Android. Minimum viable product was de facto defined as “core feature parity with Android, at a lower price point, by mid 2013”. Within this mandate, the UX team responded by defaulting to proven low-risk design patterns from Android and iOS, and attempting, where possible, to leave paths open to future innovations. 

The end result was a Firefox OS 1.0 that hit it's launch window but looked like its rivals, lacked meaningful differentiation beyond moderately lower price point, and was extremely rough in critical areas like interface responsiveness. Subsequent releases made minor improvements, but were too slow in coming due to boat anchors of technical debt and complex multi-lateral partner agreements. Consumers ultimately rejected the platform in favor of Android and iOS, deciding that the advantages of the incumbent platforms—network effects, WhatsApp, superior hardware choices, etc—were worth minor cost differentials.

Given the failure of Jolla, Windows Phone, WebOS and other non-iOS/Android mobile ecosystem entrants, it seems unlikely that any variation on our core plan—no matter how well executed—would have succeeded. It's hard to beat a well-entrenched better-resourced incumbent when you insist on fighting symmetrically. Firefox OS had identified meaningful problem/solution fit for telecom and OEM customer segments early on, but failed to do the same for consumers. Like any product, we needed to deliver value that inspired the sort of love that scales, and that couldn't be found on competing devices. We failed to do that, then failed to adapt, and so the platform ultimately did not succeed.

A billboard advertising the final 1.0 product to consumers.

Despite all of the above, some good work was done along the way. The following design artifacts are excerpts of my contributions as interaction design lead, responsible for helping define the core patterns and guidelines of the operating system. They of course do not capture the many hundreds of hours of collaboration with excellent peers from Mozilla and Telefonica that led to these proposals. Whatever the final outcome of the project, it was tremendously fun working with those people, and I'm grateful for what I learned from them along the way.

Integrating third party content-discovery service "Everything.me" was a key challenge in Firefox OS 1.0. Firefox OS lacked differentiating features and Everything.me's low-friction discovery system was cool in concept. In execution however it had problems with content quality, mental model incongruities and bandwidth demands. The prevailing desire among stakeholders was to integrate Everything.me into the core of the Home app as a marquee feature. The following proposal was offered as an alternative, maintaining E.me in the default product but wrapping it in a stand-alone app instead. Ultimately the former approach won out.

System updates were seen as a means of improving our bare-bones 1.0 release over time. Execution fell short, however, due to a combination of external factors—bandwidth constraints within target markets, the complexity of the multi-party OS update distribution process, etc—and tight development time tables. In theory a web-based stack and blank slate would have enabled us to improve on Android's terribly slow-to-deploy updates, but in the end we shipped a bare bones updater in v1 and deferred more innovative approaches to future releases.

Backwards compatibility also exposed the same core tension: between the desire to create genuinely innovative solutions from Firefox OS's unique web-stack DNA, and the declared imperative to ship a "core-feature parity with Android" MVP within a tight time frame. The Wrapper component was an attempt to embrace the long tail by "...maxmiz[ing] compatibility with available web content by creating an opt-in UI component that provides traditional browser inputs".

System responsiveness (or lack thereof) was a critical concern throughout Firefox OS development. We were attempting to make Gecko (the render engine at the core of FFOS) silky smooth on extremely low-cost hardware, and as development progressed we were not hitting acceptable levels. In hindsight it was a clear flaw in process (mostly on my part) that we did not foresee this and establish agreement between senior stakeholders on pass/fail metrics early in development. Instead the UX team began too-late to evangelize and track performance, arguing in subjective triages for the importance of perfomance-related bugs.

Keyboard in particular was a concern. The following is an example of the videos I began to record comparing Firefox OS performance with competitors (albeit at higher price points). Footage was shot on a basic 120fps Sony point-and-shoot fixed to a GorillaPod.

Firefox OS 1.0 did ship in the end. Few teams in the world have built a new mobile OS from scratch, and it's a testament to the quality of our people and our leaders that we pulled it off. I take strong pride in having contributed to the work, even if I am not proud of the final product. On a personal level I do wish in hindsight that I had been less junior to Mozilla when charged with my position and had more experience with large multi-stakeholder projects. I can think back on many early discussions where I believe I could have steered us in a better direction if I'd known then what I know now (particularly on lean product development). If nothing else Firefox OS 1.0 was one heck of a baptism by fire, and it forged personal relationships I cherish and future projects that I am very proud of.