Why I am developing Browser Extensions

- JavaScript, Mozilla

I am developer and I already explained in the past for me is very important to live in the open source world.

First of all because I can, I can what I need to improve my workflow and because is fun of course.

Actually I released 7 extensions in 1.5 years.

  • GlotDictFirefox & Chrome
    First extension that I prototyped using the devtools with the scratchpad. This extension is born to help the WordPress Polyglots community with adding new features on the portal to let them to speed up the quality and the review of the translations.
  • Facebook Direct Links: Firefox & Chrome
    A port of a greasemonkey script as a webextension that I already explained here. I received an DMCA notice on AMO because of using of the blue logo with in white FB. Later I fixed with a more anonymous and a TM label in the name.
    This extensions remove the redirect links from Facebook, pretty easy and useful.
  • Facebook Photo Info:
    This extension actually is removed from the marketplace because was using a feature on Facebook not available anymore. This was interesting and very difficult because Facebook use React so was very difficult to append new HTML so I used for the first time the MutationObserver. I got another DMCA this time on Chrome marketplace for the using of FB in the name.
  • TogetherJS: Firefox & Chrome
    This extension was an experiment to inject and promote TogetherJS.
  • Gulpease Index: Firefox & Chrome
    This was an experiment to learn a new API, in this case of contentMenu. This show very easily the Gulpease Index, that like the Gunning Fog index for the English, show the readability of the text for Italian.
  • Share Backported: Firefox & Chrome
    One of the strange feature of Firefox was the social share inside Firefox but with Firefox 57 this feature was removed because was using a non-standard API. I loved so much that feature so I created a new extension that implement the same features and different social networks that already received 2 pull requests and different release in less of 3 weeks.
  • WordPress Query Monitor: Firefox & Chrome
    This is the latest that required so much on experimenting because is a Developer Tool extension. For WordPress developers is very helpful because copy the output of Query Monitor plugin inside a frame in the devtool with interaction to avoid to scroll in the WordPress page. Was very difficult because I need to inject a content script inside the DOM to access few variables that communicate with a background scripts that again communicate with the devtools panel. This because they lives in different sandbox and for that reason I lost a lot of time to understand of get let them to communicate on loading a new window or on a refresh.

My personal experience in this period was mainly on issues during the review on AMO that reported errors on using of innerHTML without a sanitization (DOMPurify is the best way) that is the most common issue on my case.
So remember sanitize everything you want to inject in the page or your extension will be rejected.
Also if you are using external libraries don’t copy and paste but download the latest release because on AMO there is an automatic check of the hash of them so your extension also if it is fine can get a rejection.
Don’t forget to write a good summary because if it is missing on AMO you can get a rejection.

Also I find that few APIs that are existing on Firefox and not in Chrome so try it on before to release because JavaScript exception can broke the experience of the extension or of the browser because they stop to run. Also MDN contain the compatibility table on every page so that point will be pretty easy to check.

In any case don’t forget that the addon reviewers are very happy to help you also on IRC for any questions.

I helped as contributors or other extensions to release on Firefox. In that case one of the most simple task that as user and developer is find a cool extension that doesn’t exist on AMO is open a GitHub ticket and ask for the Firefox support.

Developers often are very happy to help you especially if you can explain what is missing for the release on Firefox, so try it on Firefox using the developers tools so you can give more information to the developer and explain that will be very easy for them to support Firefox. Yes because the API is the same!

So develop your first extension and you will be happy! Also reporting to the developers that their code will work.

Sure the porting often is complicated because there is the review on Firefox that is very strict then in the horrible (interface) of Chrome Web Store there isn’t, so you have to code again. That is bad but a better code and a better user experience for our users is important too.

All the stuff released in this website, where the author is Daniele Scasciafratte, is under the GPL 2.0 license except when the resources have their licenses.

Leave a Reply