It’s no longer news that Firefox Quantum is here, and it’s a huge improvement. Firefox has finally caught up with Chrome in terms of speed, the interface is a lot cleaner, and there are some great new features to boot.
However, with the birth of Firefox Quantum, came the death of certain extensions. Numerous high profile extensions, including DownThemAll and Greasemonkey, don’t currently work with Quantum. Others, including Firebug and ScrapBook, will likely never work again.
This is frustrating if you’re a user of one of these services, and you might think it’s somewhat arbitrary. It isn’t. Like it or not, Mozilla felt they didn’t have a choice but to abandon what it calls “legacy” add-ons in order to move forward.
But before you scream MURDER, Here’s why.
How Legacy Firefox Extensions Worked
Traditional Firefox extensions were generally written in XML User Interface Language (XUL). This is the language Firefox’s user interface is built with, and XUL-based extensions could modify that interface directly. These add-ons also had near full access to XPCOM, the powerful component object model used by Firefox.
If that went over your head, just know this: Firefox extensions had a more-or-less total ability to change your browser, and they made those changes directly. This is why those extensions were so powerful: there wasn’t a prescribed set of things they could and couldn’t change. It’s also why these extensions tended to break with new Firefox releases.
Extensions for Chrome or Safari don’t work this way. Those browsers offer extension developers specific APIs they can use, meaning there’s a set list of things extensions can and can’t control. For two years now, Firefox has offered a similar API called WebExtensions, which it has encouraged developers to adopt.
Traditional Extensions Made Improving Firefox Difficult
Firefox Quantam isn’t the first update to break an extension: this has been an ongoing problem for years. Because Firefox extensions could affect Firefox so directly, it was possible for even minor changes to Firefox itself to break add-ons completely, or just introduce performance-sapping bugs.
Firefox users, not knowing the extensions were causing the problem, would assume the new Firefox version is buggy, and from their perspective it was. The Firefox team would do their best to ensure popular extensions were working before pushing a new version, but it’s easy to imagine all of this slowing down development.
The WebExtensions API makes all of this easier by specifically defining what extensions can do and how they can do it. This means developers only need to ensure that the API is functioning properly, and not worry that a performance tweak or UI change will break particular extensions. The result should be fewer extensions breaking in the long run, but to make this possible, Mozilla needed to abandon the old extension ecosystem.
The change also makes some of Quantam’s best features possible. The multi process capability, for example, is a big part of Firefox Quantam’s speed boost. Four separate processes handle Firefox’s interface and tabs, meaning Firefox can use all four cores of your processor instead of just one. This is a reality that the traditional extension ecosystem simply was not built for, and it’s hard to imagine making it work without a lot of layers of abstraction that would inevitably slow things down. Many upcoming changes to Firefox were similarly being held back by legacy add-ons, meaning the ecosystem had to change in order for Firefox to evolve.
Cross Platform Compatibility Was a Problem
Once upon a time, add-ons gave people a compelling reason to use Firefox over Chrome. These days, Chrome is by far the leader in terms of add-ons, while Firefox can feel like a graveyard of unmaintained extensions from years gone by.
Sure, there are a few Firefox extensions that you can’t get in Chrome, but Chrome has the bigger ecosystem by far. The new WebExtensions API won’t fix this overnight, but it does make it a lot easier for Chrome extensions to be ported over to Firefox because the language used to write extensions is similar enough to make porting superficial. In many cases, only a few tweaks are needed for a Chrome extension to run in Firefox, meaning there’s no reason your favorite Chrome extensions can’t come to Firefox now if you ask the developer nicely enough. This should lead to a flood of new extensions in an ecosystem that could frankly use it.
Firefox Was Already Losing Users
Some may argue that Firefox will lose users because of broken extensions, but it’s worth noting that Firefox was already losing users to Chrome at an alarming rate, and has been for years. Comparative speed and a lack of certain add-ons were not helping on that front, and Firefox Quantum aims to fix both those problems.
Is there a chance this will backfire? Sure. Some people will jump ship to Chrome, and others might seek out ancient forks that maintain the old extension ecosystem. But it’s not like things were going well before. Firefox needed to evolve to stay relevant, and this is how they decided to do it.
Developers Had Time to Switch to the New API
Some users won’t notice this switch has even happened, because the extensions they work with already use the WebExtension API. Other extensions haven’t switched.
This could be because the developer abandoned the extension a long time ago, or doesn’t feel like re-writing it to use the API. In some cases, the API doesn’t offer enough control to re-create the original extension, so developers are abandoning their projects. And in many cases, the conversion simply isn’t done yet.
Whatever the case, the extensions aren’t breaking because Mozilla changed something all of the sudden. WebExtensions has been part of Firefox for two years, and the deadline for updating extensions was announced a year ago:
By the end of 2017, and with the release of Firefox 57, we’ll move to WebExtensions exclusively, and will stop loading any other extension types on desktop.
Still missing an extension you depend on? This Google document is tracking several popular extensions, and provides alternatives to several common ones. This list is also useful.