WebExtensions: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
Line 7: Line 7:


Much of the specifics of the new API are similar to the Blink extension API. Google has [https://developer.chrome.com/extensions extensive documentation on the API]. [https://dev.opera.com/extensions/ So does Opera].
Much of the specifics of the new API are similar to the Blink extension API. Google has [https://developer.chrome.com/extensions extensive documentation on the API]. [https://dev.opera.com/extensions/ So does Opera].
Experimental WebExtensions support is now available in Firefox Nightly. We are looking for developer feedback as we fix bugs and expand the set of APIs that are available. We will be listening on https://discourse.mozilla-community.org/c/add-ons/development.


'''Please note:''' we are going with the name WebExtensions because it can be used in search engines, not Web Extensions (with a space) which is almost impossible to search.
'''Please note:''' we are going with the name WebExtensions because it can be used in search engines, not Web Extensions (with a space) which is almost impossible to search.
Line 15: Line 13:


* Bugs are filed in Bugzilla under Toolkit > WebExtensions, [https://bugzilla.mozilla.org/enter_bug.cgi?format=guided#h=dupes%7CToolkit%7CWebExtensions find or create a bug]
* Bugs are filed in Bugzilla under Toolkit > WebExtensions, [https://bugzilla.mozilla.org/enter_bug.cgi?format=guided#h=dupes%7CToolkit%7CWebExtensions find or create a bug]
=== Road map ===
A draft road map is available [[WebExtensions/RoadMap|here]].


=== Useful queries ===
=== Useful queries ===
Line 28: Line 23:


* There are [https://wiki.mozilla.org/Add-ons/developer/communication developer resources] to help you through the migration.
* There are [https://wiki.mozilla.org/Add-ons/developer/communication developer resources] to help you through the migration.
* Currently every second week there is a [https://wiki.mozilla.org/Add-ons/developer/communication#Add-on_Developer_Communication_Calendar public triage meeting] of the bugs we hope to complete.
* Currently every week there is a [https://wiki.mozilla.org/Add-ons/developer/communication#Add-on_Developer_Communication_Calendar public triage meeting] of the bugs we hope to complete.
* Join the mailing list at [https://mail.mozilla.org/listinfo/dev-addons dev-addons@mozilla.org].
* Join the mailing list at [https://mail.mozilla.org/listinfo/dev-addons dev-addons@mozilla.org].
* Join us on [[IRC|IRC]] at #webextensions or #addons
* Join us on [[IRC|IRC]] at #webextensions or #addons
Line 40: Line 35:
== Permission Model ==
== Permission Model ==


We currently enforce [https://developer.chrome.com/extensions/declare_permissions manifest permissions] for [[WebExtensions#List_of_supported_APIs|the supported APIs]]. We also don't enforce CSP protections.
We currently enforce [https://developer.chrome.com/extensions/declare_permissions manifest permissions] for [[WebExtensions#List_of_supported_APIs|the supported APIs]]. We also enforce CSP protections.


== Namespacing ==
== Namespacing ==


At this time, all APIs are accessible through the chrome.* namespace. When we begin to add our own APIs, we expect to add them to the browser.* namespace. Developers will be able to use feature detection to determine if an API is available in browser.*.
At this time, all APIs are accessible through the chrome.* and browser.* namespace. When we begin to add our own APIs, we expect to add them to the browser.* namespace.  


== Out-of-process Extensions ==
== Out-of-process Extensions ==
Line 60: Line 55:
The list of APIs and their status is now maintained on [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities MDN]. We intend to fix any of the exceptions listed there.
The list of APIs and their status is now maintained on [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities MDN]. We intend to fix any of the exceptions listed there.


Please see [http://arewewebextensionsyet.com arewewebextensionsyet.com] for an up to date list of supported APIs that is taken by parsing schemas defined in mozilla-central.
Please also see [http://arewewebextensionsyet.com arewewebextensionsyet.com] for an up to date list of supported APIs that is taken by parsing schemas defined in mozilla-central. No guarantees are made on this site, the MDN page is definitive in case of disagreement.


== Additional APIs ==
== Additional APIs ==

Revision as of 18:37, 23 September 2016

This page is an introduction to Mozilla's implementation of WebExtensions, a new browser extension API. The goals of this API are:

  • Porting add-ons to and from other browsers should be easier.
  • Reviewing add-ons for addons.mozilla.org should be easier.
  • WebExtensions must be compatible with multiprocess Firefox (Electrolysis).
  • Changes to Firefox's internal code should be less likely to break add-ons.
  • WebExtensions should be easier to use than the existing Firefox XPCOM/XUL APIs.

Much of the specifics of the new API are similar to the Blink extension API. Google has extensive documentation on the API. So does Opera.

Please note: we are going with the name WebExtensions because it can be used in search engines, not Web Extensions (with a space) which is almost impossible to search.

Status

Useful queries

Communication and meetings

Testing out the WebExtensions API

See Your first WebExtension on MDN.

Technical Details

Permission Model

We currently enforce manifest permissions for the supported APIs. We also enforce CSP protections.

Namespacing

At this time, all APIs are accessible through the chrome.* and browser.* namespace. When we begin to add our own APIs, we expect to add them to the browser.* namespace.

Out-of-process Extensions

WebExtensions are compatible with Electrolysis. They run in the main Firefox process (except for content scripts, which run in the same process as web content). We are considering a plan to run extensions in a separate process (or possibly the content process) eventually, see 1190679 for more details.

Packaging

Extensions are packaged as standard Zip files, but with .xpi extensions. In the future, we're planning to move towards whatever the W3C WG recommends.

See https://developer.chrome.com/extensions/manifest for a complete list of manifest directives.

API support status

The list of APIs and their status is now maintained on MDN. We intend to fix any of the exceptions listed there.

Please also see arewewebextensionsyet.com for an up to date list of supported APIs that is taken by parsing schemas defined in mozilla-central. No guarantees are made on this site, the MDN page is definitive in case of disagreement.

Additional APIs

We plan to add our own APIs based on the needs of existing Firefox add-ons. We also want to hear from you! Please fill out this survey to tell us which APIs you need.

Requests for new APIs are filed as a bug with a whiteboard tag of [design decision needed]. We then gather various people to review them, see Advisory Group for more details.

Contributing

Please see the hacking guide for information about contributing code to the WebExtensions project.