My Take on WebExtensions

Let me start out by saying that I understand the need for something like WebExtensions. A cross browser extension API will be a great thing for the future of browsers. I understand why Mozilla is doing it. What I take issue with is the belief that existing Firefox only add-on developers will jump at the opportunity to use this new API. As far as I’m concerned, the only add-on developers that will benefit from this new API are Chrome developers who will find it much easier to port their extensions to Firefox.

Most Firefox extension developers do it as a hobby. Typically they have an itch about something in Firefox and that write an extension to scratch it. Then they make that extension available to everyone. Over time we all build up a set of extensions that make Firefox behave the way we (and clearly other people) want it to. (Chris Finke is a great example of this.) Every so often something changes in Firefox that breaks one of our extensions. At that point we have to make a decision; it it worth the time and energy to keep this extension going. Sometimes we keep it going, sometimes we give up (hence the ton of dead extensions on AMO). Luckily most of the time Firefox changes don’t break all our extensions, so we usually can keep going. With e10s coming up though, lots of developers have had to make decisions as to whether or not it is worth it to rewrite and some developers have gone through that pain (and it is pain – a lot of pain).

Now developers are being told in the next one to two years they will have to completely rewrite ALL of their add-ons. What are the odds that these hobby add-on developers are going to do that?

Let’s be honest. Availability of APIs isn’t the difficult part of the discussion. Availability of time and energy to even attempt to rewrite all of our add-ons is the problem. And when you add in the fact that Mozilla hasn’t given add-on developers the marketplace we’ve been promised for years (which Chrome has had since day one), you’ll end up with a lot of developers deciding that it’s simply not worth it.

But let’s talk availability of APIs. I’ll use two of my extensions as examples. Keyword Search accesses the wrappedJSObject of search submissions in order to manipulate the submission. Will there really be an API for that? Or what about the CCK2? Will there really be APIs that allow me to modify the built-in preferences pages including removing pages or controls? Or what about disabling private browsing? Or removing sync? Or removing access to about:config? I doubt it. There are just too many things that extensions do (most of them pretty obscure) to be able to provide an complete API.

I’ll watch what goes on and hope that I’m wrong, but I’m not very optimistic.

I will say this, though. It’s a great day to be a Chrome developer.

Please note: I reserve the right to delete comments that are offensive or off-topic.

Leave a Reply

Your email address will not be published. Required fields are marked *

19 thoughts on “My Take on WebExtensions

  1. You are making a good point here, and that is something the yeah-sayers tend to forget. Extensions are made by people and many great extensions are made by people in their spare time. People have spend a lot of time to create something that is of benefit for others, they have spend time to fix bugs, to improve the handling and add new functions and that sometimes over many years. Some do that alone, others grew a little community of supporters and even co-developers and became a thing of their own. Firefox had and still has the most amazing collection of extensions and this was also what has made this browser so great, it gave users the opportunity to change everything to fit their needs. But now, with all the past, recent and upcoming changes that put a burden on extension developers, I could understand if some of them do not want to do that any more.

  2. Great write up. I sincerely appreciate you and those like you who create these management tools. Especially since I have limited options to configure simple things with tools like AD.

    I understand it’s your free time at stake. But it’s nice to know that even if you decide not to re-write CCTK, eventually someone else facing similar pains of browser customization will step up and write one.

    The open source guys can be the best.

    Thanks again for the CCTK app. Really makes FF customization/deployment easy on me!

  3. Yet another not thought-through decision by Mozilla. The WebExtension API is not even yet finalized, but they already talk about deprecating the current state of the art.

    The list on https://arewee10syet.com is supposed to tell which add-ons are compatible, and which are not. But the list is incomplete. While it does list some exotic addons with zero users, many others with thousands of users are missing.

    Do you know where to suggest further addons to be added to this list?

    • > Yet another not thought-through decision by Mozilla. The WebExtension API is not even yet finalized, but they already talk about deprecating the current state of the art.

      I see it as informing add-on developers as early as possible.

      > Do you know where to suggest further addons to be added to this list?

      Get in touch with Chris Peterson: peterso.com/blog

      • Not thought through in the sense of:
        The reaction was predictable, and the announcement should have taken this into account. For example by stressing and detailing how much and in which ways Mozilla plans to help. And not mentioning a deadline before the whole thing has even started.

  4. I’m a Firefox only addon dev. I take pride in my addons not being possible on other browsers. I’m hoping this new WebExtAPI just comes out as a 4th option and the old XPCOM gets Servo-ized so we can keep it going. The WebExtAPI is good for grabbing newbies to the addon dev, and grabbing addons from other browsers.

    The only addons I want from other browsers for Firefox, are the addons developed by pouring in millions of dollars to it, the addons developed by Google. I wouldn’t use them but there are lots of people that use Google services in Firefox so this will help them.

    • I certainly hope that js-ctypes will be Servo-ized, but I don’t think you should expect the XPCOM APIs to be Servo-ized. This would involve porting thousands of APIs (many of them deprecated by the time Servo is released) and millions of lines of code (many of them also deprecated) to a different browser engine, developed using a different (often incompatible) paradigm and a different programming language. That would mean thousands of man-years worth of development before we can release Servo.

      • Thanks Yoric for the reply! I reviewed my addons and I use very few XPCOM things that I think I can get equivalents for. However the js-ctypes I use extensively I’m going to need that haha. I need ability to attach callbacks to different threads too (unfortunately due to NSWindow and other things on OSX, and other features of WinAPI, GTK, etc I’ll need to be able to run stuff on the main thread.), which is a problem in the current Firefox. But I’ll definitely need to be able to run the js-ctypes from the main process.

      • I was mostly hanging in there on XPCOM not for me, but for people that use it like AdBlock Plus, DownloadThemAll, TorrentTornado, Greasemonkey ( i use abp and torrent tornado). Those guys have done some excellent work and I don’t want to ruin their work or efforts 🙁

        I’m really looking forward to the HTML replacement for XUL/XBL though. I’ve been doing XBL here and there so have experience with it to do anything, but gosh darn it, its so finnicky!!

    • Believe me, add-on developers don’t do this for the money. If we did it for the money, we’d be developing add-ons for Chrome where the money and marketshare are.

  5. I guessing that now may of the addon writers will finally have good enough reason to add support for PaleMoon and even continue developing there addons for it since FireFox gave them the boot.
    Can’t say I’m surprised considering we realized this move is coming few years ago and ended up with PM as our browser of choice…

  6. The only reason I stick to Firefox is because addon keysnail which converts firefox to Emacs.

    If the keysnail breaks, I will so bye to firefox addon for ever.

    As a professional frontend developer, I think Firefox’s default developer tool really sucks compared to chrome. For example, when we deploy the javascript source maps and uglified js file properly, firefox will fail to set break point! But Google Chrome always works.

    Every serious frontend project deploys code with source maps and minified js code. This means Firefox debug tool doesn’t work on every project. I don’t know what kind developers Firefox are hiring these days.