Closed Bug 1215059 (webextensions-additional-apis) Opened 9 years ago Closed 6 years ago

[meta] Extend WebExtensions with custom APIs so more legacy add-ons can be ported

Categories

(WebExtensions :: General, enhancement, P3)

enhancement

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: gkrizsanits, Unassigned)

References

(Depends on 23 open bugs)

Details

(Keywords: meta, Whiteboard: triaged)

We've been polling the add-on developer community what APIs they need, and also we have our own ideas. Bill already has some ideas collected here: https://wiki.mozilla.org/WebExtensions/Future and here: https://wiki.mozilla.org/WebExtensions#Additional_APIs, the intention of this bug is to collect any features that we might want to implement and do not belong to webextensions-chrome-gaps.
Alias: webextensions-additional-apis
Summary: [meta] Extend WebExtensions with custom APIs so more legacy add-ons can be ported → (webextensions-additional-apis)[meta] Extend WebExtensions with custom APIs so more legacy add-ons can be ported
Depends on: 1215060
Depends on: 1215061
Depends on: 1215062
Depends on: 1215064
Depends on: 1215065
Depends on: 1215066
Depends on: 1215067
Depends on: 1199718
Flags: blocking-webextensions-
Whiteboard: triaged
Summary: (webextensions-additional-apis)[meta] Extend WebExtensions with custom APIs so more legacy add-ons can be ported → [meta] Extend WebExtensions with custom APIs so more legacy add-ons can be ported
Depends on: 1270763
Depends on: 1270782
Depends on: 1208596
Depends on: 1270786
Depends on: 1270787
Depends on: 1271534
Depends on: 1271537
Depends on: libdweb-protocol
Depends on: 1271567
Depends on: 1271945
Depends on: 1276598
Depends on: 1276600
Depends on: 1230802
Depends on: 1279446
Depends on: 1280222
Depends on: 1268399
Depends on: 1268401
Depends on: 1268407
Depends on: 1269292
Depends on: 1280347
Depends on: 1280554
Depends on: 1280555
Component: WebExtensions: Untriaged → WebExtensions: General
Flags: blocking-webextensions-
Depends on: 1324688
Depends on: 1330590
Depends on: 1330595
Depends on: 1330600
Please, could anybody add "Depends on bug 1332447"? I can't edit the bug.
Depends on: 1332447
Keywords: meta
No longer depends on: 1268407
No longer depends on: 1269292
Depends on: 1337150
Depends on: 1338780
I think what Bug 1246236 should be added to dependencies.
Depends on: 1286387
Depends on: 1343849
Depends on: 1344575
See also Bug 1344646 and Bug 1344648
Depends on: 1344786
Depends on: 1344888
Depends on: 1344959
Depends on: 1347738
Depends on: 1246236
Depends on: 1340511
Blocks: webext
Priority: -- → P4
Depends on: 1351741
Depends on: 1352884
Depends on: 1214373
Depends on: 1266960
Depends on: 1322748
Depends on: libdweb-udp
Depends on: 1352598
Depends on: 1333376
Depends on: 1373607
Depends on: 1364401
Depends on: 1376793
Depends on: 1238314
Depends on: 1345158
Depends on: 1383979
Depends on: 1384515
Depends on: 1385596
Depends on: 1385965
Depends on: 1386076
No longer depends on: 1214373
Depends on: 1389003
Depends on: 1295400
Depends on: 1392063
Depends on: 1393349
Depends on: 1280237
Depends on: 1385202
No longer depends on: 1385202
Depends on: 1334609
Depends on: 1414458
No longer depends on: 1414458
Depends on: 1370499
Depends on: 1225916
Depends on: 1418663
Should this bug 1215059 be meta for the two below?

- bug 1303384
- bug 1325692
One idea I had would be to add a browser.menus related callback that could be used to update the context menus in the current tab whenever the domain changed.

Right now, to implement this in our extension, we have needed to add a listener to tabs.onUpdated, tabs.onActivated and windows.onFocusChanged which runs a function to remove all previously added context menu items and then add new ones relevant to this domain. An alternative approach would be to create 1000s of context menu items using documentUrlPatterns at startup.

Both of these existing solutions seem like an inefficient way to dynamically control the context menus that should be displayed for a given domain name.
(In reply to Sam Bull from comment #9)
> One idea I had would be to add a browser.menus related callback that could
> be used to update the context menus in the current tab whenever the domain
> changed.
> 
> Right now, to implement this in our extension, we have needed to add a
> listener to tabs.onUpdated, tabs.onActivated and windows.onFocusChanged
> which runs a function to remove all previously added context menu items and
> then add new ones relevant to this domain. An alternative approach would be
> to create 1000s of context menu items using documentUrlPatterns at startup.
> 
> Both of these existing solutions seem like an inefficient way to dynamically
> control the context menus that should be displayed for a given domain name.

Adding something like browser.menus.onShown/onBeforeShown seems reasonable (that allows populating the context menu when it's shown), can you file a bug ?
Depends on: 1423184
Depends on: 1418024
Depends on: 1427377
Depends on: Session_managers
Depends on: 1433724
Depends on: 1451983
Depends on: 1356397
Depends on: 1394303
Depends on: 1451545
No longer depends on: 1394303, 1451545
Since the bug mentioned polling the community, I thought I'd express my wish to see the following add-on categories, whose functionality I've been missing, reimplementable:

1. Ability to modify the location bar as with https://addons.mozilla.org/en-US/firefox/addon/ui-enhancer/
2. Ability to modify the search bar as with https://addons.mozilla.org/en-US/firefox/addon/clear-search-2/

(AFAIC, these particular features could be made into built-in Firefox options, obviating the need perhaps for extensibility, but maybe others want to extend in other ways.)

I'd also VERY much like to see a common accepted means for using Node within extensions (not just building from npm, mind you, but actually using its APIs for file access, etc.), even if it still requires native messaging. I don't know where https://github.com/mozilla/spidernode or https://github.com/NiklasGollenstede/native-ext may fit in.
Priority: P4 → P3
Can we please add and reopen bug 1188835?
Depends on: 1323414
Depends on: 1457500
Blocks: 1459029
Summary: [meta] Extend WebExtensions with custom APIs so more legacy add-ons can be ported → [META] Extend WebExtensions with custom APIs so more legacy add-ons can be ported
Summary: [META] Extend WebExtensions with custom APIs so more legacy add-ons can be ported → [META] Extend WebExtensions APIs
Summary: [META] Extend WebExtensions APIs → [meta] Extend WebExtensions with custom APIs so more legacy add-ons can be ported
Depends on: tab-unloading
Depends on: 1463440
No longer blocks: 1459029
Product: Toolkit → WebExtensions
Depends on: 1419459
Depends on: 1497729
No longer depends on: 1497729
Depends on: 1226546
Depends on: 1232178
No longer depends on: 1226546, 1232178
This bug was originally filed to allow us to track our API progression as we migrated to Web Extensions; specifically, this was intended to track APIs that we wanted to provide which were considered part of the Chrome compatibility gap.

We are tracking these things in other ways (via Product Management, other already-prioritized bugs, and bugs filed for discrete API requests), so this bug is no longer necessary as a tracking bug.

In fact, the presence of this bug sends a wrong implied message -- that marking a bug as blocking this is somehow meaningful. In reality, this bug has no impact on dependent bugs, and no impact on the likelihood of legacy add-ons being ported. "Chrome compatibility" is not defined by the number of legacy add-ons ported, or this bug in general.

Therefore, I'm closing this bug as RESOLVED FIXED. Specific API requests may be filed, but need not be related to this bug at all.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Hey, what? The legacy add-ons issue was never about Chrome compatibility. It is about tracking the regression in the quality of life for users who were accustomed to legacy add-ons in Firefox pre-57. The top message in this bug specifically says:

> features that we might want to implement and do not belong to webextensions-chrome-gaps.

Please reopen, and please honor the original intent of this bug: Useful things that add-ons could do before Firefox 57 but not now.
(In reply to Yuri Khan from comment #14)
> Hey, what? The legacy add-ons issue was never about Chrome compatibility. It
> is about tracking the regression in the quality of life for users who were
> accustomed to legacy add-ons in Firefox pre-57. The top message in this bug
> specifically says:
> 
> > features that we might want to implement and do not belong to webextensions-chrome-gaps.

That's bug 1161828, btw.

Sebastian
(In reply to Sebastian Zartner [:sebo] from comment #15)

To be clear:

* bug 1161828 you’ve referred to is about Chrome compatibility;

* bug 1215059 (this one) is about making WebExtensions API more comparable feature-wise with XUL/XPCOM.

So Yuri is probably right, this bug has nothing to do with Chrome compatibility. As Gabor Krizsanits (the original reporter) said, “this bug is to collect any features that […] do not belong to webextensions-chrome-gaps”.
Ah yes, that is in error:

> This bug was originally filed to allow us to track our API progression as we migrated to Web Extensions; 
> specifically, this was intended to track APIs that we wanted to provide which were considered part of 
> the Chrome compatibility gap.

should read:

> This bug was originally filed to allow us to track our API progression as we migrated to Web Extensions; 
> specifically, this was intended to track APIs that we wanted to provide which were NOT considered part of 
> the Chrome compatibility gap.

But the rest of it stands. This bug has no significance as a tracker or meta or signal of any kind. Any API request should just be filed and need not be attached to this bug, as this bug will not be tracked.
I still think this tracking bug is useful. I follow it, and I get mail notifications when people add dependencies to it, and I can go check them out and decide if they are important to me and follow them too. Maybe even say “oh yes I forgot I used to be able to do that”.

By saying this tracking is unimportant, you are conveying that you’d rather like people to forget what they lost.
I agree with Yuri. This bug may not be that useful to the devs, but others, including myself, use it to keep track of all the WebExtension bugs of interest.
(In reply to Eddie J Carswell II from comment #19)
> I agree with Yuri. This bug may not be that useful to the devs, but others,
> including myself, use it to keep track of all the WebExtension bugs of
> interest.

Then you can track them in a different component, if you have a particular desire to do so. But for us, the owners of this component and the people responsible for tracking and organizing Web Extensions development, this bug is only a source of noise, which has no practical use in guiding development.
Status: RESOLVED → VERIFIED
(In reply to Kris Maglione [:kmag] from comment #20)

> Then you can track them in a different component, if you have a particular
> desire to do so. But for us, the owners of this component and the people
> responsible for tracking and organizing Web Extensions development, this bug
> is only a source of noise, which has no practical use in guiding development.

Will you be so kind as to suggest a component in the WebExtensions product that will not bother you?
If we wanted to completely eliminate this, we would close comments or move it to another (inaccurate) component -- but that's not what we're doing.

If this bug is useful in some way to people, that's fine. It can function that way whether it's open or closed. As long as it's clear that we are not monitoring this, setting the status of the bug is sufficient to remove it from our recurring triage. If we were to leave it open, it's simply (as Kris said) a noisy honeypot (and a mixed message, from a product point of view).

Please feel free to continue to file bugs for APIs, noting that these are enhancement requests and we will see them via their own characteristics, and not because of this bug.
Severity: normal → enhancement
You need to log in before you can comment on or make changes to this bug.