In mid-2015 Mozilla announced a big change to Firefox add-ons. This marked the start of the transition to WebExtensions - a new API (Application Programming Interface) for extension authors. The plan was that one day this way of writing extensions would be the only way, making the old extensions incompatible with Firefox. That day is right around the corner. On November 14th, Firefox Quantum will ship with only WebExtensions. Considering that for a long time extensions and extensibility in general were the big selling point of Firefox it might seem like an extreme measure from Mozilla to cut the branch they’re sitting on, especially in a time when their market share is being gobbled up by Chrome.
So, why would they do that? What was so fundamentally wrong about the old extension system that it had to be completely replaced? Well, usually when developers add extensibility to one of their apps they usually create an abstraction layer that sits on top of it where other developers have certain points they can plug into (hence the name plugins). This is basically how WebExtensions work - they do their thing and when needed they interact with Firefox in very specific points based on their needs and permissions. This allows the browser to keep them contained and away from its core resulting in increased security and performance.
The old extensions did things a little differently. There wasn’t an abstraction layer to speak off. Extensions simply plugged into the browser. The upside was that extensions were powerful because they could plug into anything becoming a piece of the browser itself. The downsides were plenty. First of all, browser updates could break extensions, because their points of interaction would change without notice. Second of all, it was a security nightmare because malicious extensions could compromise the whole browser since they had access to its core. Third of all, making significant performance gains was very hard because they had all these pieces of external code they had no control of. So, even if it seems that Mozilla was caught between a rock and a hard place, really they had no choice but to move on and bite the bullet, rather than slowly fade into irrelevance because of questionable performance and security.
It’s also no coincidence that the WebExtension API is the same that’s used by Google and even Edge. Since Firefox is no longer among the dominating browsers it’s unreasonable to expect developers to write an extension specially for it, so the new system helps because extensions for different browsers share 95% of the code, making porting between them a breeze.
For now, some developers are hard at work converting to the new API, but not all, so when Quantum launches there will be some functionality missing. This is partly because WebExtensions are not as powerful as the old extensions and Mozilla hasn’t yet implemented all the APIs supported by Chrome, although they’ve implemented a whole lot of them and are hard at work filling the gaps.
To sum it up, Firefox Quantum will be a bitter sweet experience. There will be some things missing here and there, but hopefully the lightning fast performance and slick new UI will make up for the initial shortcomings. I have no doubt that during the next releases a lot of kinks will be ironed out and things will returned to mostly normal during the first post-Quantum releases.