<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Brendan Barnwell's answer touches a very important point, IMO.
      Here's a question for discussion:<br>
      Why choose firefox over chrome?</p>
    <p>Firefox is slightly slower than chrome; specially in a computer
      with really high amount of RAM available.<br>
      If a tab crashes in Firefox, the whole Firefox crashes (in current
      stable). If a tab crashes in chrome, only that tab suffers (until
      you hit the 20's and beyond) so you, usually, can just continue
      working afterwards.<br>
      Chrome's v8 is faster in more tests than Firefox's SpiderMonkey
      than the other way around.<br>
      Chrome's interface seems to be the one inspiring Firefox's. At
      least, for the most part.<br>
      Chrome has a more useful developer tools toolset for least used
      features (E.g. inline svg)<br>
      Chrome supports more standards than Firefox (Firefox is in s
      struggle to implement them).<br>
      Both are free of charge.<br>
    </p>
    <p><b><font size="+1">...But then... With those and more... Why
          sticking to Firefox?</font></b></p>
    <p>Firefox allows extensions to have <b>superb power!</b> With
      extensions, my firefox instance becomes <b>"my browser"</b>. Heck
      just look at my profile! I have (jump to the end of the list when
      you get the idea):</p>
    <ul>
      <li>Colored tabs</li>
      <li>Tabs opening relative to each other</li>
      <li>A quick access to stored passwords (with a boost in use) with
        a master password<br>
      </li>
      <li>A share of the master password for all my SessionStorage,
        LocalStorage, cookies and history. (does not include indexedDB)</li>
      <li>I have a variable proxy selector so I can access some websites
        I have on my server hidden from most of the world in an
        effortless way.</li>
      <li>I have an inline translator that is translator independent (I
        choose which one to use)</li>
      <li>I have tab groups (ex-panorama, now in extension)</li>
      <li>I have a GUI to access to options only available in
        <a class="moz-txt-link-freetext" href="about:config">about:config</a></li>
      <li>I have an F6 key override</li>
      <li>I have a gif stopper (stops a gif in the current frame at the
        press of a button)</li>
      <li>I have a mass file downloader (for many files, asks only 1ce
        where to save them)<br>
      </li>
      <li>I have a profile backup which backs up my profile every X time
        (super customizable and <b>FREE!!!!!</b>)</li>
      <li>I have a CSS refresher which reloads and reapplies CSS to a
        page from a changed file (not as useful as it was but I still
        use it a lot during web development)</li>
      <li>I have a form recovery addon which backs up encrypted (the key
        is stored in the Firefox's password manager) data on the status
        of the form. You may never believe how much this has helped me
        so far.</li>
      <li>Being able to insert tabs in a textarea!!!</li>
      <li>I got the addon bar back! It was getting cluttered up there
        without this addon.</li>
      <li>... And that's only 16 of them!</li>
    </ul>
    <p>Is Firefox kinda slow? <b>YES!</b> Heck, it is even using ~1.2GB
      of ram most of the time and some page loads could be ~0.5s faster.
      It's worth it!!!</p>
    <p>Could these extensions be made in WebExtensions? Heck no! Chrome
      never lets an extension touch Storage stuff. Forget them being
      protected with a password!<br>
      Colored tabs in WebExtensions? Pff... Who wants that, right? Tell
      that to the +200K users of a featured addon!<br>
      Metadata in stored passwords? Boom! Featured addon!
      (<a class="moz-txt-link-freetext" href="https://addons.mozilla.org/en-GB/firefox/addon/password-categories/">https://addons.mozilla.org/en-GB/firefox/addon/password-categories/</a>)</p>
    <p>WebExtensions is not ready for any of this on Chrome. For the
      time it has been like this, I don't think it will ever be.</p>
    <p>In the late years, for many feature requests I have been directly
      or indirectly bombarded with "If you want feature X, do it
      yourself or get an addon for it". So far that can be true because
      the "legacy" extensions can do just about anything.<br>
      Now imagine this happened instead:</p>
    <p>-  I had an addon on my browser that colors tabs based on the
      website name and a heuristic of the colors mix in the first page
      it finds. The browser now only supports WebExtensions. How do I
      update it so it works on my browser?<br>
      - You can't. We now do not support extensions that change the
      browser UI in any way except for adding a button.</p>
    <p>Think as a user now. How do you react? You had an addon you could
      use and worked, now you cannot have and you can't even expect it
      to ever work on your browser. EVER!</p>
    <h3>In conclusion</h3>
    <p>I think that WebExtensions is a very good tool for the majority
      of the extensions. It has a very direct API for use and simplifies
      the code complexity when you just want a small purposed extension
      that does changes to a web page, potentially with some extras.<br>
      We do still need that low level API, though. The one that allows
      changing the shape of the tabs, place the tabs on the left side of
      the browser window, change the color of the tabs, add toobars,
      access <a class="moz-txt-link-freetext" href="about:config">about:config</a> configs...</p>
    <p>I believe, with both API made in a correct fashion, most
      extensions will be WebExtensions. Only slightly less safe than a
      web page (but requires explicit permissions) and cannot do harm
      without warning. Reviewing those extensions should be a much
      easier task than the other extensions. The API (already in
      nightly) to communicate between WebExtensions and "legacy
      extensions" can be a huge thing here!</p>
    <h3>Extra thought<br>
    </h3>
    <p>While having this e-mail sitting here, I thought:</p>
    <p>AFAIK, WebExtensions are limitless when acting inside a web page
      (I'm relating to content scripts). They have the same power as the
      legacy extensions.<br>
      It is on the background pages that WebExtensions  are limited
      which is exactly when they need to act on the browser itself and
      do the awesome (such as coloring the tabs or opening a popup that
      clearly belongs to the browser and not just a web page).</p>
    <p>How about this:</p>
    <p>Make 3 code groups:</p>
    <ol>
      <li>Page scripts (current WebExtensions API)</li>
      <li>Background pages (current WebExtensions API)</li>
      <li>Low level API (can only run on the same process as the
        background pages)<br>
      </li>
    </ol>
    <p>1 can only communicate with 2, 2 can communicate with either 1 or
      3, 3 can only communicate with 2, 2 and 3 can only share data
      using the message API (for consistency).<br>
      3 is not protected behind a tight permissions system like
      WebExtensions but it must specify the components it accesses in
      the manifest file (security). The components requested (as a
      key:value) are included in a global object since the start of the
      script.<br>
      The scripts for 3 may only be used for features that do not exist
      in WebExtensions (guaranteed by the manual review and, possibly,
      to certain extent by the automatic reviewer).</p>
    <p>This should ease extension reviewing, keeping compatibility with
      other browsers (all that works in chrome works here) and stick the
      tongue out to chrome when you have colored tabs and chrome can't.<br>
    </p>
    <p>Thoughts?<br>
    </p>
  </body>
</html>