Add-ons/developer/communication: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
m (remove sdk path)
m (edits)
Line 10: Line 10:


=====What's New=====
=====What's New=====
*[http://webextensions-experiments.readthedocs.io/ WebExtension Experiments]: prototype WebExtension APIs without having to build Firefox!
*[http://webextensions-experiments.readthedocs.io/ WebExtension Experiments]: prototype WebExtension APIs without having to build Firefox
*We're helping to make it easier to port to WebExtensions with [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions Embedded WebExtensions] in Firefox 51.
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions Embedded WebExtensions]: we're making it easier to port to WebExtensions in Firefox 51
*Help plan and prioritize WebExtensions APIs by joining the bi-weekly [https://wiki.mozilla.org/Add-ons/Contribute/Triage public triage]
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on Porting guides that map SDK and XUL APIs to available WebExtensions APIs]
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on Porting guides that map SDK and XUL APIs to available WebExtensions APIs]
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions How-to guides] covering common add-on developer cases, like [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests intercepting web requests] and [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar adding a button to the toolbar]
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions How-to guides] covering common add-on developer cases, like [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests intercepting web requests] and [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar adding a button to the toolbar]
Line 53: Line 54:
The transition to WebExtensions impacts add-ons built on APIs like XUL and XPCOM most of all. We expect to remove support for these technologies in Firefox add-ons by the end of 2017. We hope this will give us enough time to help you migrate and provide WebExtension APIs that are suitable for replacing the features you might lose once we stop supporting these APIs.  
The transition to WebExtensions impacts add-ons built on APIs like XUL and XPCOM most of all. We expect to remove support for these technologies in Firefox add-ons by the end of 2017. We hope this will give us enough time to help you migrate and provide WebExtension APIs that are suitable for replacing the features you might lose once we stop supporting these APIs.  


If you’ve already updated your add-on for multiprocess Firefox (e10s) compatibility, thank you for clearing this hurdle. To get started migrating to WebExtensions, check the [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions XUL/XPCOM-WebExtensions comparison chart] to see if the APIs you need are available. Additional resources can be found below.
If you’ve already updated your add-on for multiprocess Firefox (e10s) compatibility, thank you for clearing this hurdle. If not, [https://developer.mozilla.org/en-US/Add-ons/Working_with_multiprocess_Firefox find out how].
 
To get started migrating to WebExtensions, check the [https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions XUL/XPCOM-WebExtensions comparison chart] to see if the APIs you need are available. Additional resources can be found [[Add-ons/developer/communication#Managing_the_Impact|below]].
 
For assistance, please join the [https://mail.mozilla.org/listinfo/dev-addons dev-addons@mozilla.org] mailing list and ask for help!


=Managing the Impact=
=Managing the Impact=


*'''Embedded WebExtensions''' - In Firefox 51, you can [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions embed] a WebExtensions add-on inside an existing SDK or bootstrapped add-on. This is especially useful to developers of SDK or bootstrapped add-ons who want to start migrating to WebExtensions and take advantage of new APIs like Native Messaging, but can’t fully migrate yet. It’s also useful for developers who want to complete data migration towards WebExtensions, and who want to take parts of their add-on that are not compatible with multiprocess Firefox and make them compatible.
*Embedded WebExtensions - In Firefox 51, you can [https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions embed] a WebExtensions add-on inside an existing SDK or bootstrapped add-on. This is especially useful to developers of SDK or bootstrapped add-ons who want to start migrating to WebExtensions and take advantage of new APIs like Native Messaging, but can’t fully migrate yet. It’s also useful for developers who want to complete data migration towards WebExtensions, and who want to take parts of their add-on that are not compatible with multiprocess Firefox and make them compatible.


*[http://webextensions-experiments.readthedocs.io/ WebExtension Experiments] - now it's easier to prototype WebExtension APIs, and you can do it without having to build Firefox.
*[http://webextensions-experiments.readthedocs.io/ WebExtension Experiments] - now it's easier to prototype WebExtension APIs, and you can do it without having to build Firefox.


Not all add-ons will be able to migrate to WebExtensions without having to drop any features. But we want to work with you to get as many add-ons migrated as possible with the functionality you created intact. We invite you to contribute to its evolution, and we look forward to [https://wiki.mozilla.org/Add-ons/developer/communication#Get_in_Touch working with you].
*We're always adding new [https://developer.mozilla.org/en-US/Add-ons/WebExtensions WebExtensions documentation], so please check them out!
 
*Not all add-ons will be able to migrate to WebExtensions without having to drop any features. But we want to work with you to get as many add-ons migrated as possible with the functionality you created intact. We invite you to contribute to its evolution, and we look forward to [https://wiki.mozilla.org/Add-ons/developer/communication#Get_in_Touch working with you].


=Add-on Developer Communication Calendar=
=Add-on Developer Communication Calendar=
Line 71: Line 78:


=Blog Posts and Other Resources=
=Blog Posts and Other Resources=
*[https://blog.mozilla.org/addons/2015/08/21/the-future-of-developing-firefox-add-ons/ The Future of Developing Firefox Add-ons]
*[https://compatibility-lookup.services.mozilla.com/ Compatibility Lookup Tool]


==WebExtensions==
==WebExtensions==
Line 93: Line 98:
*Jan 9, 2016: [https://discourse.mozilla-community.org/t/webextensions-first-impressions/6459 WebExtensions First Impressions]
*Jan 9, 2016: [https://discourse.mozilla-community.org/t/webextensions-first-impressions/6459 WebExtensions First Impressions]
*Dec 21, 2015: [https://blog.mozilla.org/addons/2015/12/21/webextensions-in-firefox-45-2/ WebExtensions in Firefox 45]
*Dec 21, 2015: [https://blog.mozilla.org/addons/2015/12/21/webextensions-in-firefox-45-2/ WebExtensions in Firefox 45]
*Aug 21, 2015: [https://blog.mozilla.org/addons/2015/08/21/the-future-of-developing-firefox-add-ons/ The Future of Developing Firefox Add-ons]


=====Other Resources=====
=====Other Resources=====
*[https://compatibility-lookup.services.mozilla.com/ Compatibility Lookup Tool]
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions Embedded WebExtensions] let you [https://blog.mozilla.org/addons/2016/09/29/webextensions-in-firefox-51/ embed] a WebExtensions add-on inside an existing SDK or bootstrapped add-on
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions Embedded WebExtensions] let you [https://blog.mozilla.org/addons/2016/09/29/webextensions-in-firefox-51/ embed] a WebExtensions add-on inside an existing SDK or bootstrapped add-on
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK Comparison with the Add-on SDK]
*[https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK Comparison with the Add-on SDK]

Revision as of 22:52, 4 November 2016

Evolution in Add-on Development

WebExtensions are becoming the standard for add-on development in Firefox. At the same time, multiprocess Firefox (aka Electrolysis, or e10s) is also rolling out. These changes impact developers of XUL/XPCOM and SDK add-ons (some more than others), so we've created resources here to help ease the transitions.

This page contains timelines, migration paths, tutorials, and more. If you're a new developer and would like create an add-on, please head over to MDN.

Find out if you are affected
What's New

Timelines & Roadmap

Migration paths for developers affected by the changes

1) Has SDK add-on using low level APIs

Developers who created an SDK add-on using low-level APIs, which break with multiprocess Firefox (aka Electrolysis or e10s).

Migration Path

If your add-on code accesses web content using a low-level SDK APIs like window/utils or tabs/utils, then you will likely be affected.
Multiprocess Firefox is currently going through a phased roll-out through early 2017, so we urge you to test your add-ons for compatibility.

  • If it breaks in multiprocess Firefox, your users will be impacted, and you will need to update your add-on. You can find documentation on how to make them compatible here.
  • If it does not break in multiprocess Firefox, you should add the multiprocess permission in package.json.

For assistance, please join the dev-addons@mozilla.org mailing list and ask for help!

2) Has SDK add-on using legacy APIs

Developers who created an SDK add-on, but uses either XPCOM or other legacy APIs.

Migration Path

Developers in this group potentially have to update their add-on twice--once for e10s compatibility (if using low-level APIs), and again for WebExtensions compatibility (because it uses legacy APIs).

  1. Use only high-level APIs - High-level APIs are e10s compatible and are more likely to have an equivalent WebExtensions API. You will have to migrate again once WebExtensions are fully ready, but it should be pretty easy to do in this case.
  2. Move to WebExtensions - Check the SDK/WebExtensions comparison chart to see if the APIs you need are available, and see what else we're doing to mitigate the impact of this transition.

3) Has SDK add-on using only high level APIs

Developers who used the SDK for their add-ons using only high-level APIs. Might have played around with the Chrome extension API in the past.

Migration Path

We recommend you start looking into WebExtensions, which by the end of 2017 will be the only type of add-on supported. Check the SDK/WebExtensions comparison chart to see if the APIs you need are available, and see what else we're doing to mitigate the impact of this transition.

4) Has XUL or XPCOM add-on

Developers who created add-ons that don't rely on the SDK or WebExtensions.

Migration Path

The transition to WebExtensions impacts add-ons built on APIs like XUL and XPCOM most of all. We expect to remove support for these technologies in Firefox add-ons by the end of 2017. We hope this will give us enough time to help you migrate and provide WebExtension APIs that are suitable for replacing the features you might lose once we stop supporting these APIs.

If you’ve already updated your add-on for multiprocess Firefox (e10s) compatibility, thank you for clearing this hurdle. If not, find out how.

To get started migrating to WebExtensions, check the XUL/XPCOM-WebExtensions comparison chart to see if the APIs you need are available. Additional resources can be found below.

For assistance, please join the dev-addons@mozilla.org mailing list and ask for help!

Managing the Impact

  • Embedded WebExtensions - In Firefox 51, you can embed a WebExtensions add-on inside an existing SDK or bootstrapped add-on. This is especially useful to developers of SDK or bootstrapped add-ons who want to start migrating to WebExtensions and take advantage of new APIs like Native Messaging, but can’t fully migrate yet. It’s also useful for developers who want to complete data migration towards WebExtensions, and who want to take parts of their add-on that are not compatible with multiprocess Firefox and make them compatible.
  • WebExtension Experiments - now it's easier to prototype WebExtension APIs, and you can do it without having to build Firefox.
  • Not all add-ons will be able to migrate to WebExtensions without having to drop any features. But we want to work with you to get as many add-ons migrated as possible with the functionality you created intact. We invite you to contribute to its evolution, and we look forward to working with you.

Add-on Developer Communication Calendar

This calendar includes public meetings, scheduled blog posts, office hours, release milestones that affect add-on developers, and more. Links to add it to your own calendar: iCal | HTML

Error in widget Widget:Google Calendar: Unable to load template 'wiki:Widget:Google Calendar'

Blog Posts and Other Resources

WebExtensions

Blog Posts
Other Resources

Multiprocess (e10s) Firefox

Blog Posts
Other Resources

Migrating from XUL/XPCOM

Blog Posts
Other Resources

Get in Touch

  • IRC:
    • #teamaddons: team chat
    • #addons: support for extensions, themes, plugins and addons.mozilla.org
    • #amo: addons.mozilla.org bugs and development
    • #amo-editors: add-on reviews and policy
    • #extdev: extension development
    • #themedev: theme development
    • #webextensions: web extensions