Mozilla announced that the latest version of Firefox now has support for WebExtensions, a new set of APIs that allow developers to easily deploy their extensions to Firefox, Chrome, Opera, and Edge. The adoption of WebExtensions is necessary to advance the Electrolysis multiprocess and sandboxing architecture.
Deprecating The Old Add-On Model
Two years ago, Mozilla announced that it would begin to deprecate its old “add-on” model for advanced Firefox extensions. The decision wasn’t easy, because the add-on model is what made Firefox popular and helped it capture significant market share from Internet Explorer. It also made the browser more useful to users because they could add non-trivial functionality that Mozilla itself couldn’t, whether due to a lack of resources or simply because it couldn’t think of everything users would want.
However, this add-on model also had a few downsides, and these became more obvious as Chrome’s simpler extension model increased in popularity.
Another issue with the old add-ons was that some of them were too advanced and changed the functionality of the Firefox browser too much, to the point where it became difficult to upgrade core Firefox code without breaking many of the add-ons. That means that the add-ons were also responsible for Firefox’s slow pace of development for the last few years. As the developers’ focus has switched to building more Chrome-like extensions for Firefox, Firefox’s pace of development has also increased.
One other major inconvenience of the old add-on model is that Mozilla couldn’t easily change the security architecture of Firefox. It’s also likely one of the main reasons why Firefox hasn’t switched to an architecture with stronger sandboxing until more recently. Even now, the sandboxing is partial, and only two separate processes are supported (for UI and content), as opposed to having a process and sandbox for each page and extension, as Chrome does.
WebExtensions is a new cross-browser extension system written by Mozilla that allows the porting of Chrome and Opera (Chromium-based) extensions to Firefox with few changes. The WebExtensions will also be compatible with Microsoft’s Edge browser.
The new system is fully compatible with Mozilla’s Electrolysis multiprocess and sandboxing architecture. It’s also separate from the browser itself, which means the extensions will no longer hold the Firefox browser back from rapid advances, such as, for instance, the implementation of Project Quantum.
Project Quantum aims to progressively replace older Firefox code written in C++ with faster and more secure code written in Rust, an open source memory-safe language, whose development is sponsored by Mozilla.
Mozilla also said last year that it would stop accepting extensions using the old add-on model in the Firefox add-on store by the end of 2017, starting with Firefox 57.
Path To Standardization?
Even though Mozilla seems to have given WebExtensions a standardized-looking name, the system is not yet a standard that other browser makers are in the process of adopting. However, Mozilla has begun the process of standardizing it as the “Browser Extension” specification.
Of course, the ones to benefit most from a Browser Extension standard are likely to be the browsers with less market share, such as Edge, Opera, and Safari, as well as much newer browsers like Brave, Vivaldi, and others. Extensions are often what keep users loyal to a browser, so a Browser Extension standard could actually make the browser market even more competitive in the coming years.
Some day the web will become stagnate again, and we'll have a new Firefox with full extensibility. Until then, we'll go back to 1999.