12 |
--------------------------------------------------------------------------------
/src/content/content-guidelines/optimize-product-page.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: guides
3 | title: Optimize Your Product Page
4 | permalink: /content-guidelines/optimize-product-page/
5 | published: false
6 | skip_index: true
7 | ---
8 |
9 | # Optimize Your Product Page
10 |
11 | When you build an extension, you make the web better. To get your great idea out into the world, people need to find and use what you’ve created. Help them by creating a great product page on addons.mozilla.org. When you do, you may see improvements in **search engine results, usability, and installations**.
12 |
13 |
14 |
15 |
16 |
17 | [](a0_OsLGI0k4 'Open Popup Video')
18 |
19 | #### What’s Great Content and Design?
20 |
21 | Featuring Madhava Enros, Senior Director of Firefox User Experience, and Dietrich Ayala, extension developer.
22 |
23 | [Watch the video](a0_OsLGI0k4 'Open Popup Video')
24 |
25 |
26 |
27 |
28 | ## To edit your product page:
29 |
30 | - If you are creating a new extension or theme, you’ll need to create an account on [addons.mozilla.org/developers](https://addons.mozilla.org/developers/ 'addons.mozilla.org/developers/'), select **New Submission**, and submit your extension or theme file. Once you do this, you will create your Product Page within the submission flow.
31 | - If you are updating an existing product page, you will log in to [addons.mozilla.org/developers](https://addons.mozilla.org/developers/ 'addons.mozilla.org/developers/') and select **Edit Information** to revise content.
32 | - All fields can be updated at any time. You will need to update the following content types in both your manifest and on addons.mozilla.org:
33 | - Author Name,
34 | - Extension/Theme Name,
35 | - Subtitle,
36 | - Extension Icon,
37 |
38 | ### Additional Resources
39 |
40 | - Get additional content and design support in the [Discourse Forum](https://discourse.mozilla.org/c/add-ons 'discourse.mozilla.org/c/add-ons').
41 | - Learn how to [localize your creation](developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/Internationalization 'developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/Internationalization'). Solicit translation help from the community on [GitHub](https://github.com 'github.com'), and then upload the translations on [addons.mozilla.org](https://addons.mozilla.org 'addons.mozilla.org').
42 | - [Technical documentation on MDN](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions 'developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions').
43 | - Creating your very first extension? Get started on the [Firefox Extension Workshop](https://extensionworkshop.com/ 'extensionworkshop.com/').
44 |
45 | _Note, you may be required to include additional information in your product page, beyond the content guidelines here. This includes things like privacy policy or disclosures when payment is required to enable features. See the [Add-on policies](https://developer.mozilla.org/docs/Mozilla/Add-ons/AMO/Policy/Reviews 'developer.mozilla.org/docs/Mozilla/Add-ons/AMO/Policy/Reviews') for more information._
46 |
--------------------------------------------------------------------------------
/src/content/content.11tydata.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs-extra');
2 | const serialize = require('serialize-javascript');
3 |
4 | /*
5 | * This file controls if files are published or not.
6 | * The filename must match the directory name.
7 | * If frontmatter contains: `published: false` this doc will be omitted from the build for the production env.
8 | *
9 | */
10 | module.exports = {
11 | eleventyComputed: {
12 | siteEnv: process.env.ELEVENTY_ENV,
13 | fileDate: async (data) => {
14 | const stat = await fs.stat(data.page.inputPath);
15 | const created = new Date(stat.birthtimeMs).toISOString();
16 | return {
17 | published: data.data ? data.date.toISOString() : created,
18 | created,
19 | modifed: new Date(stat.ctimeMs).toISOString(),
20 | };
21 | },
22 | eleventyExcludeFromCollections: (data) => {
23 | if (data.published === false) {
24 | return true;
25 | } else {
26 | return data.eleventyExcludeFromCollections;
27 | }
28 | },
29 | permalink: (data) => {
30 | if (process.env.BUILD_UNPUBLISHED) {
31 | return data.permalink;
32 | } else {
33 | // Don't output files with an explicit "published: false".
34 | return data.published === false ? false : data.permalink;
35 | }
36 | },
37 | title: (data) => {
38 | if (data.tag) {
39 | return `Results for tag "${data.tag}"`;
40 | } else {
41 | return data.title;
42 | }
43 | },
44 | seo: {
45 | title: (data) => {
46 | if (data.permalink === '') {
47 | // Special case the homepage.
48 | return `${data.site.title} | ${data.site.description}`;
49 | } else if (data.tag) {
50 | // Special case tag titles.
51 | return `Results for tag "${data.tag}" | ${data.site.title}`;
52 | } else if (data.title) {
53 | // Use a title if set in the frontmatter.
54 | return `${data.title} | ${data.site.title}`;
55 | } else {
56 | // Use site title as a last resort.
57 | return data.site.title;
58 | }
59 | },
60 | description: (data) => {
61 | return data.description ? data.description : data.site.description;
62 | },
63 | canonicalURL: (data) => {
64 | if (data.canonical_url) {
65 | return data.canonical_url;
66 | }
67 | return data.site.url + data.page.url;
68 | },
69 | jsonLD: (data) => {
70 | const defaultJSON = {
71 | '@context': 'http://schema.org',
72 | url: data.seo.canonicalURL,
73 | };
74 | const webSite = {
75 | ...defaultJSON,
76 | '@type': 'WebSite',
77 | name: data.site.title,
78 | };
79 | const webPage = {
80 | ...defaultJSON,
81 | '@type': 'WebPage',
82 | name: data.site.title,
83 | };
84 | const techArticle = {
85 | ...defaultJSON,
86 | '@type': 'TechArticle',
87 | author: data.author,
88 | datePublished: data.fileDate.published,
89 | headline: data.title,
90 | };
91 | let jsonData;
92 | switch (data.schemaType) {
93 | case 'webSite':
94 | jsonData = webSite;
95 | break;
96 | case 'webPage':
97 | jsonData = webPage;
98 | break;
99 | default:
100 | jsonData = techArticle;
101 | break;
102 | }
103 | return serialize(jsonData, { space: 2, isJSON: true });
104 | },
105 | },
106 | },
107 | };
108 |
--------------------------------------------------------------------------------
/src/content/documentation/develop/about-the-webextensions-api.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar.liquid
3 | title: About the WebExtensions API
4 | permalink: /documentation/develop/about-the-webextensions-api/
5 | topic: Develop
6 | tags: [webextensions, api, firefox]
7 | contributors: [rebloor, mconca, caitmuenster]
8 | last_updated_by: caitmuenster
9 | date: 2019-06-05
10 | ---
11 |
12 |
13 |
14 | {% capture page_hero_banner_content %}
15 |
16 | # About the WebExtensions API
17 |
18 | WebExtension APIs provide a user-controlled, web-focused extension development platform used to extend the features of Firefox. The APIs strike a balance between the functionality extensions bring to Firefox and the risks they introduce to the user experience.
19 |
20 | {% endcapture %}
21 | {% include modules/page-hero.liquid,
22 | content: page_hero_banner_content
23 | %}
24 |
25 |
26 |
27 | {% capture content %}
28 |
29 | Designed to offer cross-browser compatibility with Chromium-based browsers—such as Chrome, Edge, and Opera—the APIs:
30 |
31 | - Include features to extend the capabilities of Firefox to interact with web content.
32 | - Simplify the development and maintenance of extensions for Firefox and other browsers.
33 | - Make it easier for users to personalize Firefox, using extensions and themes.
34 | - Minimize the impact that changes to Firefox internals have on extensions.
35 | - Improve the performance, safety, and security of extensions in Firefox.
36 |
37 | Since its introduction, Mozilla has expanded the capabilities of the API as part of a commitment to push innovation and adoption of the API in browsers. These expanded capabilities include features such as the [Contextual Identities](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities) a.k.a. the containers API.
38 |
39 | {% endcapture %}
40 | {% include modules/one-column.liquid,
41 | id: "about-the-webextensions-api"
42 | content: content
43 | %}
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/src/content/documentation/develop/comparison-with-the-add-on-sdk.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Redirected - Comparison with the Add-on SDK
3 | ---
4 |
5 | Do not delete - This page is gone but we need to keep the file for the redirect, see /.utils/setup-object-redirection.sh
6 |
--------------------------------------------------------------------------------
/src/content/documentation/develop/comparison-with-xul-xpcom-extensions.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Redirected - Comparison with XUL/XPCOM extensions
3 | ---
4 |
5 | Do not delete - This page is gone but we need to keep the file for the redirect, see /.utils/setup-object-redirection.sh
6 |
--------------------------------------------------------------------------------
/src/content/documentation/develop/developing-extensions-for-firefox-for-android-fennec.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Redirected - Developing extensions for Firefox for Android (Fennec)
3 | ---
4 |
5 | Do not delete - This page is gone but we need to keep the file for the redirect, see /.utils/setup-object-redirection.sh
6 |
--------------------------------------------------------------------------------
/src/content/documentation/develop/known-issues.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Known issues
4 | permalink: /documentation/develop/known-issues/
5 | topic: Develop
6 | tags: [
7 | android,
8 | api,
9 | debugging,
10 | development,
11 | firefox,
12 | testing,
13 | web-ext,
14 | webextensions
15 | ]
16 | contributors: [dotproto]
17 | last_updated_by: dotproto
18 | date: 2023-11-20
19 | ---
20 |
21 |
22 |
23 | {% capture page_hero_banner_content %}
24 |
25 | # Known issues
26 |
27 | This page contains a list of significant known issues that affect the experience of developing extensions for Firefox and Firefox for Android.
28 |
29 | {% endcapture %}
30 | {% include modules/page-hero.liquid,
31 | content: page_hero_banner_content
32 | %}
33 |
34 |
35 |
36 |
37 | {% capture content_with_toc %}
38 |
39 | ### Content scripts don't appear in DevTools
40 |
41 | **Description:** Content scripts sometimes don't appear in the sources list when debugging a tab on Android.
42 |
43 | **Workaround:** Add a `debugger` statement to your content script to manually trigger a breakpoint when the content script first executes.
44 |
45 | **Tracking issue:** [Bug 1746718](https://bugzilla.mozilla.org/show_bug.cgi?id=1746718)
46 |
47 | {% endcapture %}
48 | {% include modules/column-w-toc.liquid,
49 | id: "invisible-content-scripts"
50 | content: content_with_toc
51 | %}
52 |
53 | {% capture content %}
54 |
55 | ### Extension source don't update in DevTools
56 |
57 | **Description:** Sources files open in DevTools are not updated after you edit the file on disk. This issue applies to temporary extensions installed in Firefox or on an Android device using `web-ext`.
58 |
59 | **Workaround:** Close and re-open DevTools.
60 |
61 | **Tracking issue:** [Bug 1857368](https://bugzilla.mozilla.org/show_bug.cgi?id=1857368)
62 |
63 | {% endcapture %}
64 | {% include modules/one-column.liquid,
65 | id: "devtools-updates-missing"
66 | content: content
67 | %}
68 |
69 | {% capture content %}
70 |
71 | ### "Destroyed actor" errors when debugging Android
72 |
73 | **Description:** While debugging an extension on Android, you may encounter an error in Firefox on your desktop that says something like:
74 |
75 | > Cannot connect to the debug target. See error details below:
76 | >
77 | > `Error: Protocol error (Error): Attempted to write a response containing a destroyed actor from: root (resource://devtools/shared/protocol/types.js:358:17)`
78 |
79 | **Workaround:** In the `about:debugging` page on your development computer, disconnect from and reconnect to the Android device.
80 |
81 | **Additional notes:** This issue appears to be related to simultaneous connections to the Android device from `web-ext` and Firefox's developer tools. To minimize the likelihood of this issue, set `web-ext` to auto-reload specific files only using the `--watch-files` flag. For example:
82 |
83 | ```bash
84 | web-ext run -t firefox-android \
85 | --android-device=emulator-5554 \
86 | --firefox-apk=org.mozilla.fenix \
87 | --watch-file manifest.json
88 | ```
89 |
90 | This approach also allows you to manually trigger a refresh by pressing `R` while the web-ext terminal window is focused.
91 |
92 | **Tracking issue:** [Bug 1856481](https://bugzilla.mozilla.org/show_bug.cgi?id=1856481)
93 |
94 | {% endcapture %}
95 | {% include modules/one-column.liquid,
96 | id: "android-destroyed-actor"
97 | content: content
98 | %}
99 |
100 |
101 |
--------------------------------------------------------------------------------
/src/content/documentation/develop/porting-a-google-chrome-extension.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Porting a Google Chrome extension
4 | permalink: /documentation/develop/porting-a-google-chrome-extension/
5 | topic: Develop
6 | tags: [webextensions]
7 | contributors:
8 | [
9 | jennyevans,
10 | blossomica,
11 | aseffasamson,
12 | rebloor,
13 | Uemmra3,
14 | Makyen,
15 | wbamberg,
16 | andrewtruongmoz,
17 | AndreiPetcu,
18 | kumar303,
19 | yfdyh000,
20 | ]
21 | last_updated_by: jennyevans
22 | date: 2019-05-19 11:54:36
23 | ---
24 |
25 |
26 |
27 | {% capture page_hero_banner_content %}
28 |
29 | # Porting a Google Chrome extension
30 |
31 | {% endcapture %}
32 | {% include modules/page-hero.liquid,
33 | content: page_hero_banner_content
34 | %}
35 |
36 |
37 |
38 |
39 |
40 | {% capture content %}
41 |
42 | The browser extension APIs are designed to promote cross-browser compatibility among extensions. The WebExtension APIs is therefore, to a large extent, code-compatible with the [extension API](https://developer.chrome.com/extensions) supported by Google Chrome and Opera. Extensions written for these browsers will, in most cases, run in Firefox with just a few changes. Almost all of the [WebExtension APIs](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API) provide support for callback functions under the `chrome` namespace, the same as Chrome. The only APIs that aren't supported in the `chrome` namespace are those that are intentionally incompatible with Chrome. In those cases, the API documentation page states that support is provided only in the `browser` namespace. The process of porting an extension from Chrome or Opera is, therefore, relatively straightforward:
43 |
44 | 1. Review your use of `manifest.json` features and Chrome extension APIs against the [Chrome incompatibilities reference](https://developer.mozilla.org/Add-ons/WebExtensions/Chrome_incompatibilities). Mozilla provides a service that can help to automate this step within the [Add-on Developer Hub](https://addons.mozilla.org/developers/addon/validate). If you're using features or APIs that aren't supported in Firefox, you might not be able to port your extension.
45 | 2. Install your extension in Firefox by using [`about:debugging`](https://developer.mozilla.org/docs/Tools/about:debugging) or the [web-ext tool](/documentation/develop/getting-started-with-web-ext#testing-out-an-extension) (similar to Chrome’s command-line tools).
46 | 3. [Test your extension](/documentation/develop/debugging).
47 | 4. If you have any problems, contact us on the [dev-addons mailing list](https://mail.mozilla.org/listinfo/dev-addons) or [Add-ons](https://mzl.la/2u8ZGbg) channel on [Matrix](https://wiki.mozilla.org/Matrix).
48 | 5. Package your extension, [manually](/documentation/publish/package-your-extension) or using the [web-ext](/documentation/develop/getting-started-with-web-ext#packaging-your-extension) tool.
49 | 6. [Create an account on addons.mozilla.org then submit your add-on for signing and distribution](/documentation/publish/submitting-an-add-on).
50 |
51 | If you use the Chrome command-line option for loading an unpacked extension, check out the [web-ext](/documentation/develop/getting-started-with-web-ext/) tool which automates temporary installation in Firefox for development.
52 |
53 | {% endcapture %}
54 | {% include modules/one-column.liquid,
55 | id: "create-a-privacy-policy"
56 | content: content
57 | %}
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/src/content/documentation/develop/porting-a-legacy-firefox-extension.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Redirected - Porting a legacy Firefox extension
3 | ---
4 |
5 | Do not delete - This page is gone but we need to keep the file for the redirect, see /.utils/setup-object-redirection.sh
6 |
--------------------------------------------------------------------------------
/src/content/documentation/enterprise.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Enterprise
4 | permalink: /documentation/enterprise/
5 | tags: [enterprise]
6 | contributors: [caitmuenster, mkaply]
7 | last_updated_by: mkaply
8 | date: 2019-07-09 09:00:00
9 | ---
10 |
11 |
12 |
13 | {% capture page_hero_banner_content %}
14 |
15 | # Extensions for your enterprise
16 |
17 | Firefox gives your enterprise a high-performance, standards compliant, manageable browser environment.
18 |
19 | {% endcapture %}
20 | {% include modules/overview-page-hero.liquid,
21 | content: page_hero_banner_content
22 | background: "develop-overview-hero-bg.jpg"
23 | %}
24 |
25 |
26 |
27 |
28 |
29 | {% capture content_with_toc %}
30 |
31 | Extensions give you the ability to complement standard browser features and provide richer interfaces to enterprise web applications.
32 |
33 | {% endcapture %}
34 | {% include modules/column-w-toc.liquid,
35 | id: "introduction"
36 | content: content_with_toc
37 | %}
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | {% capture content %}
48 |
49 | ## Developing your enterprise extension
50 |
51 | {% endcapture %}
52 | {% include modules/one-column.liquid,
53 | content: content
54 | %}
55 |
56 |
57 |
58 |
59 |
60 | {% capture col_1_content %}
61 |
62 | 
63 |
64 | {% endcapture %}
65 | {% capture col_2_content %}
66 |
67 | Developing extensions for your enterprise is straightforward – you can follow the standard extension development path. You can also [add policy support](/documentation/enterprise/enterprise-development/#how-to-add-policy) to your extension to allow enterprises to preconfigure settings for your extension.
68 |
69 | [Some Firefox enterprise policies](/documentation/enterprise/enterprise-policies-that-impact-extensions/) might affect the installation, behavior, and update of extensions.
70 |
71 | {% endcapture %}
72 | {% include modules/two-column.liquid,
73 | col_1: col_1_content
74 | col_2: col_2_content
75 | reverse: false
76 | %}
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 | {% capture content %}
87 |
88 | ## Distributing your enterprise extension
89 |
90 | Extensions for enterprise deployments of Firefox Extended Support Release (ESR) should be distributed outside of [addons.mozilla.org](https://addons.mozilla.org).
91 |
92 | Once your extension is developed and tested, you can use one of the [enterprise distribution](/documentation/enterprise/enterprise-distribution/) methods to install it in Firefox.
93 |
94 | {% endcapture %}
95 | {% include modules/one-column.liquid,
96 | id: "distributing-your-enterprise-extension"
97 | content: content
98 | aside: ""
99 | %}
100 |
101 |
102 |
--------------------------------------------------------------------------------
/src/content/documentation/enterprise/adding-policy-support-to-your-extension.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Redirected - Adding Policy Support to your Extension
3 | ---
4 |
5 | Do not delete - This page is gone but we need to keep the file for the redirect, see /.utils/setup-object-redirection.sh
6 |
--------------------------------------------------------------------------------
/src/content/documentation/enterprise/enterprise-distribution.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Enterprise distribution
4 | permalink: /documentation/enterprise/enterprise-distribution/
5 | topic: Enterprise
6 | tags: [enterprise, policies, distribution, guide, installation]
7 | contributors:
8 | [
9 | rebloor,
10 | irenesmith,
11 | hellosct1,
12 | wbamberg,
13 | kmaglione,
14 | mconca,
15 | championshuttler,
16 | TriMoon,
17 | aswan,
18 | Makyen,
19 | andrewtruongmoz,
20 | ]
21 | last_updated_by: rebloor
22 | date: 2023-08-04
23 | ---
24 |
25 |
26 |
27 | {% capture page_hero_banner_content %}
28 |
29 | # Enterprise distribution
30 |
31 | As an enterprise IT administrator, you may want to install add-ons automatically for your users. This page discusses the options.
32 |
33 | {% endcapture %}
34 | {% include modules/page-hero.liquid,
35 | content: page_hero_banner_content
36 | %}
37 |
38 |
39 |
40 |
41 |
42 | {% capture content_with_toc %}
43 |
44 | ## Signed vs. unsigned extensions
45 |
46 | All add-ons must be signed before they can be installed into Firefox's standard or beta versions. Unsigned add-ons can be installed in the [Developer Edition](https://www.mozilla.org/firefox/developer/), [Nightly](https://www.mozilla.org/firefox/nightly/all/), and [ESR](https://www.mozilla.org/firefox/enterprise/) versions of Firefox, after toggling the `xpinstall.signatures.required` preference in `about:config`.
47 |
48 | If you want to install unsigned add-ons, deploying an [ESR](https://www.mozilla.org/firefox/enterprise/) version of Firefox is recommended. When deployed, unsigned add-ons can be installed using any method, including opening the add-on file from a web page.
49 |
50 | The recommended alternative approach is to use the option for self-distributed add-ons on [addons.mozilla.org](https://addons.mozilla.org) (AMO). This option means you can get a signed add-on without it being listed in the public add-ons directory. This signed add-on can then be installed from a web page behind the firewall or using one of the options described here.
51 |
52 | {% endcapture %}
53 | {% include modules/column-w-toc.liquid,
54 | id: "signed-vs-unsigned"
55 | content: content_with_toc
56 | %}
57 |
58 |
59 |
60 |
61 |
62 | {% capture content %}
63 |
64 | ## Using an ExtensionSettings policy
65 |
66 | This is the recommended approach to installing add-ons automatically. The ExtensionSettings policy enables you to set default behavior for the browser and installation behavior for extensions. For example, you could disable extension installation generally, then automatically install or allow installation of specific extensions.
67 |
68 | See [ExtensionSettings](https://mozilla.github.io/policy-templates/#extensionsettings) for details.
69 |
70 | {% endcapture %}
71 | {% include modules/one-column.liquid,
72 | id: "using-an-extensionsettings-policy"
73 | content: content
74 | %}
75 |
76 |
77 |
78 |
79 |
80 | {% capture content %}
81 |
82 | ## Bundling add-ons with a custom Firefox
83 |
84 | You can bundle add-ons within a customized Firefox, and they are installed automatically when the user starts up the application for the first time.
85 |
86 | See [Deploying Firefox with extensions](https://support.mozilla.org/kb/deploying-firefox-with-extensions) for details.
87 |
88 | {% endcapture %}
89 | {% include modules/one-column.liquid,
90 | id: "bundling-add-ons-with-custom-Firefox"
91 | content: content
92 | %}
93 |
94 |
95 |
--------------------------------------------------------------------------------
/src/content/documentation/manage/resources-for-publishers.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Resources for publishers
4 | permalink: /documentation/manage/resources-for-publishers/
5 | topic: Manage
6 | tags: [publish, manage, distribution]
7 | contributors: [One, sideshowbarker, kingleo713, rebloor]
8 | last_updated_by: One
9 | date: 2019-06-06 07:39:19
10 | ---
11 |
12 |
13 |
14 | {% capture page_hero_banner_content %}
15 |
16 | # Resources for publishers
17 |
18 | Now that your add-on is published on [addons.mozilla.org](https://addons.mozilla.org/) (AMO), check out the following resources.
19 |
20 | {% endcapture %}
21 | {% include modules/page-hero.liquid,
22 | content: page_hero_banner_content
23 | %}
24 |
25 |
26 |
27 |
28 |
29 | {% capture content_with_toc %}
30 |
31 | - Your add-on is subject to review at any time. [Get to know the AMO review process and policies](/documentation/publish/add-on-policies/).
32 |
33 | - The add-ons team brings you regular news and updates about the latest and greatest add-on features, tools, and technology. [Follow the Mozilla Add-ons Blog](https://blog.mozilla.org/addons/).
34 |
35 | - Get information about add-on news and events, as well as the `about:addons` newsletter, delivered straight to your inbox. [Sign up for notifications and the newsletter](https://addons.mozilla.org/firefox/users/edit#acct-notify/).
36 |
37 | - A high-quality product page (also known as a listing page) on AMO makes it more likely that users will discover and install your extension. [Learn how to create an appealing listing](/documentation/develop/create-an-appealing-listing/).
38 |
39 | - Need to get in touch with the administrators of AMO? [Contact them by email](mailto:amo-admins@mozilla.com).
40 |
41 | - Join the conversation on the [community forum](https://discourse.mozilla.org/c/add-ons) and on [Twitter](https://twitter.com/mozamo).
42 |
43 | {% endcapture %}
44 | {% include modules/column-w-toc.liquid,
45 | id: "security-over-choice"
46 | content: content_with_toc
47 | %}
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/content/documentation/publish/add-on-ownership.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Add-on ownership
4 | permalink: /documentation/publish/add-on-ownership/
5 | topic: Publish
6 | tags: [development, ownership, code, dispute]
7 | contributors: [caitmuenster, rebloor]
8 | last_updated_by: caitmuenster
9 | date: 2019-06-05 14:56:00
10 | ---
11 |
12 |
13 |
14 | {% capture page_hero_banner_content %}
15 |
16 | # Add-on ownership
17 |
18 | Add-ons are often the result of the work of a team of developers, which is why add-ons on AMO can have multiple authors. Authors may be designated as owners or developers. Both types of author can update and manage the add-on and its listing, but only owners can add authors to the add-on. The owners of an add-on can transfer ownership and add authors to an add-on through the [Developer Hub](https://addons.mozilla.org/developers/).
19 |
20 | {% endcapture %}
21 | {% include modules/page-hero.liquid,
22 | content: page_hero_banner_content
23 | %}
24 |
25 |
26 |
27 | {% capture content_with_toc %}
28 |
29 | ## Transfer ownership
30 |
31 | No interaction with Mozilla representatives is necessary for a transfer of ownership, follow these steps:
32 |
33 | - Make sure the new owner has an account on [addons.mozilla.org](https://addons.mozilla.org). New accounts can be created using **Register** or **Log in**, found in the top right of the homepage. The new owner must confirm their email address before continuing.
34 | - Sign into your account on the [Add-on Developer Hub](https://addons.mozilla.org/developers/), and click **Edit Listing** for the add-on you want to transfer.
35 | - In the left-hand menu, click **Manage Authors & License**.
36 | - Add the new owner’s email address in the box with the hint **Enter a new author‘s email address**. By default, this new address is set as an owner, with the **Listed** box checked. Don’t change these defaults.
37 | - Click the X icon next to your email address to remove yourself from the list of authors.
38 | - Click **Save Changes**.
39 |
40 | The new owner can now manage updates, listing information, and perform all the other add-on listing tasks.
41 |
42 | {% endcapture %}
43 | {% include modules/column-w-toc.liquid,
44 | id: "transfer-ownership"
45 | content: content_with_toc
46 | %}
47 |
48 |
49 |
50 |
51 |
52 | {% capture content %}
53 |
54 | ## Code disputes
55 |
56 | The nature of add-ons means that their source code to be viewed. This visibility does not mean that the source code is open source or available for use in another add-on. The original author of an add-on retains copyright to their work unless otherwise noted in the add-on’s license.
57 |
58 | If we're notified of a copyright or license infringement, we will take steps to address the situation in line with the provisions of the Digital Millennium Copyright Act (DMCA), which may include taking down the add-on listing. Details about this process and how to report trademark or licensing issues are [found here](https://www.mozilla.org/about/legal/report-abuse/).
59 |
60 | If you are unsure of the current copyright status of an add-on’s source code, contact the author and get permission before using the source code.
61 |
62 | {% endcapture %}
63 | {% include modules/one-column.liquid,
64 | id: "code-disputes"
65 | content: content
66 | %}
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/src/content/documentation/publish/developer-accounts.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Developer accounts
4 | permalink: /documentation/publish/developer-accounts/
5 | topic: Publish
6 | tags: [development, extensions, publishing]
7 | contributors: [One, rebloor]
8 | last_updated_by: One
9 | date: 2019-06-06 07:38:43
10 | ---
11 |
12 |
13 |
14 | {% capture page_hero_banner_content %}
15 |
16 | # Developer accounts
17 |
18 | Developer accounts for addons.mozilla.org are integrated with [Mozilla accounts](https://accounts.firefox.com/signup), which lets you access and manage multiple Mozilla services from one account. You can manage your Mozilla account from [accounts.firefox.com/settings](https://accounts.firefox.com/settings).
19 |
20 | {% endcapture %}
21 | {% include modules/page-hero.liquid,
22 | content: page_hero_banner_content
23 | %}
24 |
25 |
26 |
27 | {% capture content_with_toc %}
28 |
29 | ## Setting a display name
30 |
31 | It’s important to set a display name on your profile on [addons.mozilla.org](https://addons.mozilla.org) to increase transparency with users, add-on reviewers, and the greater community.
32 |
33 | ::: note
34 | Your Mozilla account display name will not sync to your profile on addons.mozilla.org. You will need to set your developer account display name from your profile on addons.mozilla.org.
35 | :::
36 |
37 | {% endcapture %}
38 | {% include modules/column-w-toc.liquid,
39 | id: "setting-a-display-name"
40 | content: content_with_toc
41 | %}
42 |
43 |
44 |
45 |
46 |
47 | {% capture content %}
48 |
49 | ## Blocked accounts
50 |
51 | To mitigate malicious actors from submitting spam to addons.mozilla.org, we will not accept submissions from accounts that use a disposable temporary email address, or that have submitted multiple add-ons that violate our [Add-on Policies](/documentation/publish/add-on-policies).
52 |
53 | If you believe your account has been incorrectly blocked, please email amo-admins [at] mozilla [dot] com and include a link to your developer profile.
54 |
55 | {% endcapture %}
56 | {% include modules/one-column.liquid,
57 | id: "blocked-accounts"
58 | content: content
59 | %}
60 |
61 |
62 |
63 |
64 | {% capture content %}
65 |
66 | ## Issues receiving emails from AMO
67 |
68 | If you're expecting but haven't received emails from the https://addons.mozilla.org (AMO) platform, check that:
69 |
70 | 1. Your Mozilla account's primary email address is correct. To update it, see the support article [Change primary email address on Mozilla account](https://support.mozilla.org/en-US/kb/change-primary-email-address-firefox-accounts).
71 | 1. The email isn't in your spam or junk folder. If it is, consider adding the AMO email domain (@mozilla.org) to your [approved senders](https://clean.email/blog/email-security/how-to-whitelist-an-email) list.
72 | 1. Your inbox isn't full.
73 | 1. Your mail provider hasn't implemented a security filter that blocked the email delivery.
74 |
75 | If you're still experiencing issues after making these checks, posting details of your issue to the [add-ons community forum](https://discourse.mozilla.org/c/add-ons/35) may help.
76 |
77 | {% endcapture %}
78 | {% include modules/one-column.liquid,
79 | id: "email-issues"
80 | content: content
81 | %}
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/src/content/documentation/publish/distribute-for-desktop-apps.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Add-ons for desktop apps
4 | permalink: /documentation/publish/distribute-for-desktop-apps/
5 | topic: Publish
6 | tags: [add-on, distribution, apps, desktop, guide, installation]
7 | contributors: [SphinxKnight, irenesmith, rebloor, ani-sha]
8 | last_updated_by: ani-sha
9 | date: 2020-03-20 22:38:00
10 | ---
11 |
12 |
13 |
14 | {% capture page_hero_banner_content %}
15 |
16 | ## Add-ons for desktop apps
17 |
18 | {% endcapture %}
19 | {% include modules/page-hero.liquid,
20 | content: page_hero_banner_content
21 | %}
22 |
23 |
24 |
25 |
26 |
27 | {% capture content %}
28 |
29 | ::: note alert
30 | Starting with Firefox 74, it is no longer be possible to have an extension be automatically installed as part of another application install. See the [Add-ons Blog](https://blog.mozilla.org/addons/2020/03/10/support-for-extension-sideloading-has-ended/) for more information.
31 | :::
32 |
33 | If you have developed an add-on to complement a desktop application, you will need to provide a way for users to install your extension. You can direct the user to install the add-on from your website or list it on [addons.mozilla.org (AMO)](https://addons.mozilla.org)
34 |
35 | Of these options, directing the user to install from AMO is recommended. It avoids any issues with the installation process; the user will not get an interstitial messages during the installation of the add-on, find the add-on installed but disabled, or find that the add-on was not installed.
36 |
37 | If you would like to direct users to install the add-on from your website, please read this article on [self-distribution](/documentation/publish/submitting-an-add-on/#self-distribution) to learn how to prepare the `.xpi` file for web installs.
38 |
39 | Enterprise administrators and people who distribute their builds of Firefox (such as some Linux and Selenium distributions) can continue to deploy extensions to users. Enterprise administrators can do this using [policies](https://github.com/mozilla/policy-templates#extensionsettings). Additionally, Firefox Extended Support Release (ESR) continues to support sideloading as an extension installation method.
40 |
41 | {% endcapture %}
42 | {% include modules/one-column.liquid,
43 | id: "what-cant-you-do"
44 | content: content
45 | %}
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/content/documentation/publish/distribute-pre-release-versions.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Distribute pre-release versions
4 | permalink: /documentation/publish/distribute-pre-release-versions/
5 | topic: Publish
6 | tags: [beta, alpha, testing, pre-release, publish, guide, how-to]
7 | contributors: [caitmuenster]
8 | last_updated_by: caitmuenster
9 | date: 2020-05-06
10 | ---
11 |
12 |
13 |
14 | {% capture page_hero_banner_content %}
15 |
16 | # Distribute pre-release versions
17 |
18 | Learn how to distribute an alpha or beta pre-release version of your extension for Firefox.
19 |
20 | {% endcapture %}
21 | {% include modules/page-hero.liquid,
22 | content: page_hero_banner_content
23 | %}
24 |
25 |
26 |
27 | {% capture content %}
28 |
29 | Pre-release channels are not supported on [addons.mozilla.org](https://addons.mozilla.org) (AMO), so if you would like to have a limited group of users test a beta version of your extension, you will need to take the following steps to set up your own channel using an self-hosted version of your extension:
30 |
31 | 1. In the `manifest.json` of the beta version, [specify the location of your update manifest](/documentation/manage/updating-your-extension/#enable-update). This will ensure that your beta users will receive future updates. If your release channel is also self-hosted, you will need to use a different update URL for the beta channel.
32 |
33 | 2. Submit your extension for signing on [addons.mozilla.org](https://addons.mozilla.org) using the [self-distribution workflow](/documentation/publish/submitting-an-add-on/#self-distribution). If you prefer to use the command line, you can [use web-ext to sign the extension](/documentation/develop/getting-started-with-web-ext).
34 |
35 | ::: note
36 | If your extension’s release version is listed on [addons.mozilla.org](https://addons.mozilla.org), you will need to [define which channel you are signing with web-ext](/documentation/develop/getting-started-with-web-ext/#signing-test-version-listed).
37 | :::
38 |
39 | 3. After the extension has been signed, host the `.xpi` file on a web property that you own, such as a Github repository or Wordpress site.
40 |
41 | 4. Direct your beta users to install the extension from the web property.
42 |
43 | You will need to follow the same process to add new versions to your beta channel. As long as you have set the location of the update manifest, beta users will automatically receive updates of the beta version as you make them available. Note that only beta users will get these updated versions. You will need to separately update your release channel to push updates to your release users.
44 |
45 | If you decide to discontinue your beta channel and your add-on is listed on AMO, you can release a final beta version without an update URL in the manifest. This will tell Firefox to check AMO for updates, and within a few days users will be migrated to the main update branch. If your release channel is also self-hosted, you must change the update URL of your final beta version to match the main release version.
46 |
47 |
48 | {% endcapture %}
49 | {% include modules/one-column.liquid,
50 | id: "listing-on-amo"
51 | content: content
52 | %}
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/src/content/documentation/themes.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Themes
4 | permalink: /documentation/themes/
5 | tags: [themes]
6 | contributors: [caitmuenster]
7 | last_updated_by: caitmuenster
8 | date: 2021-04-02
9 | ---
10 |
11 |
12 |
13 | {% capture page_hero_banner_content %}
14 |
15 | # Enable creative expression with themes
16 |
17 | You can use themes to customize how your browser looks by adding images and adjusting the color of various components.
18 |
19 | {% endcapture %}
20 | {% include modules/overview-page-hero.liquid,
21 | content: page_hero_banner_content
22 | background: "develop-overview-hero-bg.jpg"
23 | %}
24 |
25 |
26 |
27 |
28 |
29 | {% capture content %}
30 |
31 | With themes, you can customize the look of your Firefox by adding images to the header part of the section and changing the colors of the tab strip, address bar, toolbars, and [other supported areas](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme#colors).
32 |
33 | These themes use the [WebExtensions API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions), the technology used to modify or enhance the capability of Firefox. You can choose to create a [static theme](/documentation/themes/static-themes/), which don't change after installation, or a [dynamic theme](/documentation/themes/dynamic-themes/) if you would like to bundle your theme in an extension or programmatically control changes to theme.
34 |
35 | Not a coder? Not a problem! It's easy to create a static theme using the [AMO theme generator](/documentation/themes/using-the-amo-theme-generator) or [Firefox Color](https://color.firefox.com).
36 |
37 | {% endcapture %}
38 | {% include modules/one-column.liquid,
39 | id: "creating-themes"
40 | content: content
41 | %}
42 |
43 |
44 |
45 |
46 |
47 | {% capture content %}
48 |
49 | ## How to create themes
50 |
51 | There are four ways you can create themes:
52 |
53 | - **[Use the AMO theme generator](/documentation/themes/using-the-amo-theme-generator):** Use the theme wizard on [addons.mozilla.org](https://addons.mozilla.org?utm_source=extensionworkshop.com&utm_medium=referral&utm_content=themes) (AMO) to create themes that are hosted on AMO or that you [distribute yourself](/documentation/publish/self-distribution/).
54 |
55 | - **Use [Firefox Color](https://color.firefox.com):** Create on-the-fly themes in Firefox. You can generate a URL to share the theme or export the theme as an add-on package.
56 |
57 | - **[Code a theme yourself](/documentation/themes/static-themes/):** Take advantage of all the theme features available. For instance, add color to more UI components, or utilize the ability to use multiple images. You can then choose to host these themes on AMO or distribute them yourself.
58 |
59 | - **Include themes in your extension:** Use the [`theme` API](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/theme) in an extension. You can activate these themes based on user requests or dynamic information, like the time of day or the webpage the user is viewing.
60 |
61 | 
62 |
63 | {% endcapture %}
64 | {% include modules/one-column.liquid,
65 | id: "creating-themes"
66 | content: content
67 | %}
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/src/content/documentation/themes/cross-browser-compatibility.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Cross-browser compatibility
4 | permalink: /documentation/themes/cross-browser-compatibility/
5 | topic: Themes
6 | tags: [themes, compatibility, firefox]
7 | contributors: [caitmuenster]
8 | last_updated_by: caitmuenster
9 | date: 2021-04-02
10 | ---
11 |
12 |
13 |
14 | {% capture page_hero_banner_content %}
15 |
16 | # Cross-browser compatibility
17 | Themes for Firefox are not always compatible with other major browsers.
18 |
19 | {% endcapture %}
20 | {% include modules/page-hero.liquid,
21 | content: page_hero_banner_content
22 | %}
23 |
24 |
25 |
26 |
27 |
28 | {% capture content %}
29 |
30 | There is currently limited compatibility between themes in the major browsers. Opera takes an entirely different approach, and Microsoft Edge themes are not yet open to developers.
31 |
32 | There is good compatibility between Firefox [static themes](/documentation/themes/static-themes/) and Chrome themes, providing the ability to port a single header image theme from Firefox to Chrome. However, noting that `frame` and `tab_background_text` only support RGB color array definition on Chrome.
33 |
34 | So, in the single image theme example [(weta_fade)](https://github.com/mdn/webextensions-examples/tree/master/themes/weta_fade) could be supported in Chrome using the following manifest.json file:
35 |
36 |
37 |
38 | ```js
39 | {
40 | "manifest_version": 2,
41 | "version": "1.0",
42 | "name": "",
43 | "theme": {
44 | "images": {
45 | "theme_frame": "weta.png"
46 | },
47 | "colors": {
48 | "frame": [ 173 , 176 , 159 ],
49 | "tab_background_text": [ 0 , 0 , 0 ]
50 | }
51 | }
52 | }
53 | ```
54 |
55 |
56 | Also, note that Chrome tiles the `“theme_frame”:` image from the left of the header area:
57 |
58 | 
59 |
60 | For more information, see the notes on [Chrome compatibility](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme#chrome_compatibility) on MDN.
61 |
62 | {% endcapture %}
63 | {% include modules/one-column.liquid,
64 | id: "single-image-themes"
65 | content: content
66 | aside: ""
67 | %}
68 |
69 |
--------------------------------------------------------------------------------
/src/content/extension-basics.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: sidebar
3 | title: Extension Basics
4 | permalink: /extension-basics/
5 | tags: []
6 | contributors:
7 | - caitmuenster
8 | - rbrishabh
9 | last_updated_by: rbrishabh
10 | date: 2019-09-25 05:48:00
11 | ---
12 |
13 |
14 |
15 | {% capture page_hero_banner_content %}
16 | # Bring your extension to life
17 |
18 | Get how-tos, resources, and information to successfully build and ship your extension for Firefox.
19 | {% endcapture %}
20 |
21 | {% include modules/overview-page-hero.liquid,
22 | content: page_hero_banner_content
23 | background: "develop-overview-hero-bg.jpg"
24 | %}
25 |
26 |
27 |
28 |
29 |
30 | {% capture content_with_toc %}
31 | ## Getting started
32 |
33 | The Firefox Extension Workshop can help you develop extensions for Firefox and give your users simple, yet powerful ways to customize their browsing experience. You’ll find:
34 |
35 | - [Overview of the Firefox extension features](/#about)
36 | - [Tools and processes for developing and testing](/documentation/develop/)
37 | - [How to publish your extension on addons.mozilla.org or distribute it yourself](/documentation/publish/)
38 | - [How to manage your published extension](/documentation/manage/)
39 | - [An enterprise guide for developing and using extensions](/documentation/enterprise/)
40 | - [How to develop themes for Firefox](/documentation/themes/)
41 | - [Firefox developer communities](/community/)
42 | {% endcapture %}
43 |
44 | {% include modules/column-w-toc.liquid,
45 | id: "getting-started"
46 | content: content_with_toc
47 | %}
48 |
49 |
50 |
51 |
52 |
53 | {% capture content %}
54 |
55 | ## Mozilla Developer Network
56 |
57 | Documentation for the WebExtensions API can be found on the [Mozilla Developer Network](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions) (MDN).
58 |
59 | On MDN, you’ll find:
60 |
61 | - Tutorials to help you start
62 | - Explanations of key extension development concepts
63 | - A guide to extension UI components
64 | - How to use the extension Javascript APIs.
65 | - A reference guide for the extension Javascript APIs, including compatibility tables for other popular browsers.
66 | - A reference guide for the `manifest.json` file and its keys.
67 |
68 | {% endcapture %}
69 |
70 | {% include modules/one-column.liquid,
71 | id: "mozilla-developer-network"
72 | content: content
73 | %}
74 |
75 |
76 |
--------------------------------------------------------------------------------
/src/content/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | # Edit home sections content in the includes/home/ folder
3 | layout: home
4 | schemaType: webSite
5 | ---
6 |
7 | # Extend the Web
8 |
9 | Get help creating and publishing Firefox add-ons that make browsing smarter, safer, and faster.
10 |
11 | You’ll find the resources you need, whether you’re getting started with extension development, preparing to launch your innovation, or developing a custom enterprise solution.
12 |
--------------------------------------------------------------------------------
/src/content/pagesApi.11ty.js:
--------------------------------------------------------------------------------
1 | /*
2 | * This is a stand-in for the pages API as a quick fix to get the existing search using Lunr working
3 | * as it did under Jekyll.
4 | *
5 | */
6 | module.exports = class {
7 | data() {
8 | return {
9 | permalink: 'api/v1/pages.json',
10 | eleventyExcludeFromCollections: true,
11 | };
12 | }
13 |
14 | async render({ collections }) {
15 | const data = {
16 | entries: [],
17 | };
18 | collections.all.map((item, id) => {
19 | const page = {
20 | title: item.data.title,
21 | url: item.url,
22 | body: item.templateContent
23 | .replace(/\n/g, ' ')
24 | .replace(/\t/g, ' ')
25 | .replace(
26 | /|||<.*?>/g,
27 | ' '
28 | )
29 | .replace(/\s+/g, ' '),
30 | tags: item.data.tags,
31 | };
32 | if (!item.data.skip_index) {
33 | data.entries.push(page);
34 | }
35 | });
36 | return JSON.stringify(data);
37 | }
38 | };
39 |
--------------------------------------------------------------------------------
/src/content/robots.txt:
--------------------------------------------------------------------------------
1 | User-Agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/src/content/search-results.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: search-results
3 | title: Search Results
4 | permalink: /search-results/
5 | skip_index: true
6 | schemaType: webPage
7 | ---
8 |
9 | ### Search something else, or try a popular search:
10 |
11 | - [Community](/search-results/?q=community 'Community')
12 | - [Laser Cat](/search-results/?q=laser+cat 'Laser Cat')
13 |
--------------------------------------------------------------------------------
/src/content/tags.liquid:
--------------------------------------------------------------------------------
1 | ---
2 | layout: tag-search-results
3 | skip_index: true
4 | eleventyExcludeFromCollections: true
5 | pagination:
6 | data: collections
7 | size: 1
8 | alias: tag
9 | permalink: /tags/{{ tag | slugify }}/
10 | schemaType: webPage
11 | ---
12 |
13 | {% assign taglist = collections[ tag ] %}
14 |
{{ taglist.length }} results for tag “{{ tag }}”
15 |
16 | {% for post in taglist | reverse %}
17 |
6 |
7 | ## Need some extra help along the way?
8 |
9 | When you build on Firefox, you build with a community of add-on developers. And they’re eager to share their expertise and answer your questions.
10 |
11 |