|Firefox To Adopt Chrome Extensions|
|Written by Ian Elliot|
|Monday, 24 August 2015|
Mozilla has announced that Firefox is taking another step to becoming just like Chome. Put simply, Firefox is dropping its core technology XUL and XCOM and adopting Chrome add-ons in place of its own.
But things are more complicated when it comes to browser extensions.
A Firefox extension can more or less hook into the internal workings of the browser to radically change the way it behaves. This has resulted in Firefox being something of a testbed and development environment for innovative extensions, and this is what is about to be taken away.
Of course on the downside such a close integration with the browser internals means that extensions can be fragile. It has been known for extensions to break because of code changes that should have had no effect.
According to the Mozilla Addon-ons blog:
"In the most extreme cases, changes to the formatting of a method in Firefox can trigger problems caused by add-ons that modify our code via regular expressions. Add-ons can also cause Firefox to crash when they use APIs in unexpected ways."
Mozilla's WebExtensions API is supposed to be compatible with Google's Blink API. The blog says:
"To this end, we are implementing a new, Blink-compatible API in Firefox called WebExtensions. Extension code written for Chrome, Opera, or, possibly in the future, Microsoft Edge will run in Firefox with few changes as a WebExtension."
Currently not all of the WebExtensions API is implemented. It is fairly clear that the chances of a Chrome add-on working with Firefox without some modifications is zero. What this means is that users aren't going to be able to replace old unsupported extensions with Chrome extensions unless they are supported and the programmer is willing to put some work in.
What is even stranger about this non-compatible compatibility is that Mozilla acknowledges that the new API is too weak to support many of the existing addons. As a result it plans to implement Firefox-specific extras in the API and lists the following:
This also gives you some idea how weak the existing API is.
So we can port Chrome extensions to Firefox and then extend them so that they only work under Firefox.
One additional good thing about changing the API is that it supports multi-process browsers. Until now Firefox has been a single-threaded browser and this has significant disadvantages. The Electrolysis project has been working to convert it so that each tab runs in tis own thread. However, this means that existing add-ons will mostly not work. New add-ons that make use of the WebExtensions API will work.
Add to this the fact that starting with Firefox 42 all add-ons will have to be signed by Mozilla and you can see that the whole Firefox add-ons infrastructure and eco-system is about to be trashed - and hopefully rebuilt.
Firefox is losing ground to Chrome and to IE/Edge. Presumably these changes also have the advantage that Firefox might get all of the add-ons that Chrome has, even though Firefox's market share is down to 11%.
Currently many existing Firefox developers aren't happy about having to start over and some are simply going to give up on the browser after having the existing API dropped and access restricted.
The timeline for all these changes is fairly rapid:
Signing of extensions starts with Firefox 41. although not enforced in September. Electrolysis, i.e. multithreading, is to be rolled out to end users in December. XUL/XCOM based add-ons will be phased out in 12 to 18 months.
There is also the hint that XUL/XCOM are going to be removed from Firefox completely, although this is going to take a lot longer.
You can't help but notice a distinct chill in the air with respect to Firefox where there was once so much rosy glow.
To be informed about new articles on I Programmer, install the I Programmer Toolbar, subscribe to the RSS feed, follow us on, Twitter, Facebook, Google+ or Linkedin, or sign up for our weekly newsletter.
or email your comment to: email@example.com
|Last Updated ( Monday, 24 August 2015 )|