Archive for October 2017

Webextensions and what it means for Toolbar Buttons

by Michael

It has been a long time since I last posted.  I was really busy last year which was my last year of studying.  Recently I have been hesitant to post because I want to see first if I would really be able to recommit to my extensions.
A lot has happened since then that I want to write about.  The biggest change is that soon Webextensions will be the only way to write extensions.  Firefox 55 enforces that all extensions must be multiprocess ready, and then Firefox 57 that they must be written as Webextensions.

This greatly effects Toolbar Buttons, as Webextensions can only have one button per extension.  This of course is a killer for a button pack like Toolbar Buttons. 

The best response I can give to this is to release many of the buttons individually as separate extensions.  I have a list of the Webextensions I have releases so far.  As of writing there are 21 that I have finished.

I am not intending to upload to many of the buttons that only opened links to certain pages.  I have however put together a page of link buttons and have updated the link button maker so it continues to work.

The Custom Toolbar Button maker is not going to make extensions that work with newer versions of Firefox as it does not make sense to have a tool that is supposed to combine multiple buttons into one extension, when there is a limit of one button per extension.  It has been changed so it does not create extensions that work with any version of Firefox from recent times, and instead targets Pale Moon (which forked from Firefox years ago), Sea Monkey and Thunderbird.

There is a thread on my forum about the change.

Opinions on the change

When trying to explain this to a lot of people (I been getting quite a few emails, and comments left on my extensions) a lot of time the reaction is they are angry with Mozilla for making a change like this. I however fully support what they are trying to do.  Before extensions could access any part of the Firefox code, and could do almost anything they wanted.  This created problems for extensions developers like me, particularly with Toolbar Buttons, because every time they changed something it could break an extension.  There was almost always one or two buttons broken in Toolbar Buttons because of this.  Now they are giving us a much more restricted API to work with, but with a promise that there should be few if any incompatible changes.  The API is also modelled on what other browsers are doing so porting extensions to or from other browsers will be much easier.

A great example of internal changes that really messed extensions up is what happened in Firefox 55 with all being required to be multiprocess compatible.  They have I believe been delaying this change for awhile because they wanted to give developers a chance to catch up. There are some quite exciting things coming in the future that should really take advantage of multiprocess support, and should really help to speed things up.

Also it cuts down on the possibility of extensions doing something dangerous. Before an extension could do anything that any other application could. Which meant to keep users safe they all had to be reviewed before release.  This both delayed extension updates, and also meant a lot of man power had to go into reviewing extensions.  With this cut down, since they are now more limited and have to declare what they do, hopefully we can see some more rapid development.

It is true also at this stage that there are a lot of extensions that can't be ported.  There are dozens of buttons from Toolbar Buttons that I can’t port over.  But they do appear to be very open to adding to the current API to expand the possibilities.  So I can see in the future many of these casing with a little reimagining making it over.