Consequences of requesting new permission


(Juraj Masiar) #1

Hello,

I want to know what will happen when I request new permission for my add-on.
Since the add-on will not upgrade unless users agrees to new permission.

My questions are:

  1. how many users (in %) will never upgrade?
  2. how many users (in %) will remove my add-on?
  3. should I ask for all permissions I plan to use in the far future? (to prevent this issue in the future)

The new permission I need is contextualIdentities and the Optional permission is not yet implemented.


(Martin Giger) #2

I can show you an example of what happens: https://addons.mozilla.org/en-US/firefox/addon/justintv-stream-notificatio/statistics/usage/versions/?last=365

The main issue is that you can not prepare the user for the permission request, so I’d recommend making an interim version that tells people that soon a version that requests a new permission (and why it does that) will be released.


(Juraj Masiar) #3

Are you saying that you introduced new permission in version 3.6.1 and now, after almost 3 months there is still 40% of users using previous version 3.5.0?!

I like the idea about informing user before. One could use the onUpdateAvailable function that gets executed when update is available and it prevents add-on from auto-update while running. Then reload add-on with runtime.reload() and update is installed - BUT there is bug that causes that some special “permissions” gets reverted after calling that function:


(Martin Giger) #4

Yes, 3.6.0 added the management permission, which sadly is non-optional in Firefox. An it’s a very scary permission. If it ever is available as optional permission, I’ll opt for that instead…

I think contextualIdentities is a little less scary, yet it falls in the same bucket of permissions that unfortunately aren’t available as optional permissions.


(Juraj Masiar) #5

There is one other way - you could create new add-on that would serve as a proxy and it would have the required permission.
I can imagine very simple implementation where you would just call something like:

const result = await browser.runtime.sendMessage(EXTERNAL_ADDON_ID, {
  methodName: 'contextualIdentities.get', 
  methodParametersArray: []
})

Piece of cake, right? Or is it too much? :smiley:
For some optional feature it may not be as bad as is sounds (forcing users to install another add-on).