WebExtensions/Spec: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Minor changes)
(Added information to map MDN status fields to specification standard states.)
Line 1: Line 1:
'''Status: draft'''
'''Status: draft'''


Mozilla has worked with Microsoft and Opera to implemented browser extensions so that developers can write extensions that work across multiple browsers.  The specification matches what Google has implemented in their browser so that extensions work on Chrome.
Mozilla has worked with Microsoft and Opera to implement browser extensions so that developers can write extensions that work across multiple browsers.  The preliminary specification matches what Google has implemented in Chrome so that extensions will work on Chrome, Edge, Opera and Firefox.


The [https://browserext.github.io/browserext/ specification can be found on GitHub].
The [https://browserext.github.io/browserext/ specification can be found on GitHub].


Firefox is in the process of implementing a larger API than has been detailed in the specification. We intend to implement additional APIs in order to differentiate Firefox and empower extension developers.  
Mozilla will continue to work on refining and approving the common browser extension specification as part of our support for open Web standards. While that process proceeds at its own pace, however, the Firefox team will continue to innovate within the WebExtensions API, providing additional features that allow developers to create increasingly creative and powerful extensions. Some of these new API may be relevant to other browsers and we will work within the standards track process to ensure their availability as an open Web standard. Other API may make sense only within the context of the Firefox browser. To understand the current status of any given API, developers should consult the [https://github.com/mdn/browser-compat-data/blob/master/compat-data-schema.md#status-information status-information property] of the API on [https://developer.mozilla.org MDN].


However, some of those APIs will only be relevant to Firefox because the feature is only available on Firefox. Others might be relevant to other browsers and would be worth submitting to the standard.
The status-information property contains three fields, which can be used to interpret the specification status of an API as follows:


As such we can break most parts of the Firefox API down into one of the following categories, a superset of [https://github.com/mdn/browser-compat-data/blob/master/compat-data-schema.md#status-information MDN categories]:
If ''deprecated'' is TRUE, ignore all other fields. This API is deprecated. Otherwise, use the value of the ''experimental'' and ''standards_track'' fields to determine the status of the API as follows (the two MDN fields gives us four possible states):


* '''Firefox only''': an API that is unlikely to ever be copied by any other vendor since it is about a Mozilla specific issue or feature. Examples could be the geckoProfiler API or [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/contextualIdentities contextual identity API].
{| class="wikitable"
* '''Experimental''': an API that could be picked up by another vendor and added to the specification. This API might change should that happen. An example could be the [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/find/find find API].
|-
* '''Standards-track''': an API that is part of the standards track. Any deviation in Firefox is tracked in [https://bugzilla.mozilla.org/show_bug.cgi?id=1392434 bug 1392434].
|        ||        || experimental ||
|-
|        ||        || TRUE || FALSE
|-
| standards_track || TRUE || 3 || 4
|-
|  || FALSE || 1 || 2
|}
 
* '''1 - Firefox-only (preliminary)''': an API in the initial stages of development and not part of any standards track. It may be a prototype or only partially implemented and is likely to change.
* '''2 - Firefox-only (stable)''': a stable API that is unlikely to change, it is not part of any standards track. It may pertain to a Firefox-specific issue or feature. Examples could be the geckoProfiler API or [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/contextualIdentities contextual identity API].
* '''3 - Experimental''': a stable API that is recommended as a standard but not part of a track yet. This API could change as part of the standards process. An example could be the [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/find/find find API].
* '''4 - Standard''': an API that is on a standards track or already part of an approved standard, it is very unlikely to change. Any deviation in Firefox is tracked in [https://bugzilla.mozilla.org/show_bug.cgi?id=1392434 bug 1392434].
* '''Deprecated''': this API might be removed and we do not recommend using it. See also [https://wiki.mozilla.org/WebExtensions/DeprecationPolicy draft deprecation plans].
* '''Deprecated''': this API might be removed and we do not recommend using it. See also [https://wiki.mozilla.org/WebExtensions/DeprecationPolicy draft deprecation plans].


There is a possible progression from “Firefox only” to “Experimental” to the “Standards-track”. For example, the contextual identity API could start as a Firefox only API. It would then be possible for another browser to add in that feature. It could then be moved from Firefox-only over to Experimental in the hopes that we can standardise it.
There is a possible progression from “Firefox-only” to “Experimental” to “Standard”. For example, the contextual identity API could start as a Firefox-only API. If other browsers found that feature to be useful, they may choose to implement it. It could then be moved from Firefox-only over to Experimental in the hopes that it could be standardized. Once it was formally proposed as part of a standard, its status would change to Standard.


At this time (October 2017) Firefox implements most of the browser extensions standard across Firefox. Firefox for Android is not as complete.
At this time (October 2017) Firefox implements most of the browser extensions standard across Firefox. Firefox for Android is not as complete.

Revision as of 22:46, 31 October 2017

Status: draft

Mozilla has worked with Microsoft and Opera to implement browser extensions so that developers can write extensions that work across multiple browsers. The preliminary specification matches what Google has implemented in Chrome so that extensions will work on Chrome, Edge, Opera and Firefox.

The specification can be found on GitHub.

Mozilla will continue to work on refining and approving the common browser extension specification as part of our support for open Web standards. While that process proceeds at its own pace, however, the Firefox team will continue to innovate within the WebExtensions API, providing additional features that allow developers to create increasingly creative and powerful extensions. Some of these new API may be relevant to other browsers and we will work within the standards track process to ensure their availability as an open Web standard. Other API may make sense only within the context of the Firefox browser. To understand the current status of any given API, developers should consult the status-information property of the API on MDN.

The status-information property contains three fields, which can be used to interpret the specification status of an API as follows:

If deprecated is TRUE, ignore all other fields. This API is deprecated. Otherwise, use the value of the experimental and standards_track fields to determine the status of the API as follows (the two MDN fields gives us four possible states):

experimental
TRUE FALSE
standards_track TRUE 3 4
FALSE 1 2
  • 1 - Firefox-only (preliminary): an API in the initial stages of development and not part of any standards track. It may be a prototype or only partially implemented and is likely to change.
  • 2 - Firefox-only (stable): a stable API that is unlikely to change, it is not part of any standards track. It may pertain to a Firefox-specific issue or feature. Examples could be the geckoProfiler API or contextual identity API.
  • 3 - Experimental: a stable API that is recommended as a standard but not part of a track yet. This API could change as part of the standards process. An example could be the find API.
  • 4 - Standard: an API that is on a standards track or already part of an approved standard, it is very unlikely to change. Any deviation in Firefox is tracked in bug 1392434.
  • Deprecated: this API might be removed and we do not recommend using it. See also draft deprecation plans.

There is a possible progression from “Firefox-only” to “Experimental” to “Standard”. For example, the contextual identity API could start as a Firefox-only API. If other browsers found that feature to be useful, they may choose to implement it. It could then be moved from Firefox-only over to Experimental in the hopes that it could be standardized. Once it was formally proposed as part of a standard, its status would change to Standard.

At this time (October 2017) Firefox implements most of the browser extensions standard across Firefox. Firefox for Android is not as complete.