Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 19 additions & 17 deletions src/content/documentation/manage/retiring-your-extension.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ date: 2019-03-23 06:22:00

# Retiring your extension

There may be occasions where you want to retire one of your extensions. This article suggests the steps you might want to follow, as well as offering some pointers to a suitable timeline.
There may be occasions where you want to retire one of your extensions. This article outlines the steps to follow and offers suggestions for a suitable timeline.

{% endcapture %}
{% include modules/page-hero.liquid,
Expand All @@ -32,9 +32,9 @@ There may be occasions where you want to retire one of your extensions. This art

There are two main reasons why you might want to end-of-life your extension:

- You plan to remove support for a product or service. In this case, you’ll want to remove the extension from browsers when support ceases.
- You plan to remove support for a product or service. In this case, you should remove the extension from browsers when support ends.

- You're replacing the extension with a new one, which isn't a direct upgrade. In this case, you'll want to encourage existing users to install the new extension, before you remove the old extension from browsers.
- Youre replacing the extension with a new one, which isnt a direct upgrade. In this case, youll want to encourage existing users to install the new extension before removing the old one from their browsers.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

After writing this comment, I realized this is too big to tackle here. I'm mostly commenting so we can split this out into a separate ticket.

This line caught my eye in part because it swaps apostrophes (U+00027) for right single quotation marks (U+02019). I've seen style guides that mandate one over the other. In my training, I recall being told that HTML content should use an apostrophe rather than a special Unicode character.

I don't want to go into a ton of detail here, but considerations here include the character encoding for the source file, the HTML document, places Unicode or HTML entities can be used, etc.

In order to get a sense of the patterns used in our existing content, I searched the .md files in this repo for a variety of contractions using both characters. For each contraction, the regular expression used followed the pattern \w<Character><Abbreviation>, where <Character> is either ' or and <Abbreviation> was the abbreviated second word in the contraction. For example, \w's would match let's and \w’s would match let’s.

' (U+00027) regexp ' (U+00027) occurrences  (U+02019) regexp  (U+02019) occurrences
\w's 188 results, 45 files \w’s 238 results, 51 files
\w't 120 results, 31 files \w’t 77 results, 29 files
\w're 25 results, 17 files \w’re 19 results, 13 files
\w've 13 results, 8 files \w’ve 13 results, 10 files
\w'll 7 results, 6 files \w’ll 10 results, 8 files
\w'd 8 results, 3 files \w’d 5 results, 5 files
\w'(s|t|re|ve|ll) 353 results, 56 files \w’(s|t|re|ve|ll) 357 results, 57 files

The HTML entities &rsquo; and &#8217; do not appear source files.


{% endcapture %}
{% include modules/column-w-toc.liquid,
Expand All @@ -50,28 +50,30 @@ There are two main reasons why you might want to end-of-life your extension:

## Steps to retiring an extension

When you want to withdraw an extension, considered taking the following steps:
When you want to withdraw an extension, consider taking these steps:

1. Devise a timetable for your extension’s end-of-life. Consider including the following steps in a timetable for withdrawing your extension:
1. Devise a timetable for your extension’s end-of-life. Consider including these steps:

1. publish your extension’s end-of-life timetable, including an explanation of why you're retiring your extension.
1. publish your extension’s end-of-life timetable, including an explanation of why youre retiring your extension.
2. publish an update that removes installed copies of your extension.
3. make the extension unavailable for new installs, by making its AMO listing invisible.
3. make the extension unavailable for new installs.

2. Publish advice that you're planning to end-of-life your extension. Consider the following options to advise people of your intention to take down your extension:
2. Publish advice that youre planning to end-of-life your extension. Consider these options to advise people of your intention to take down your extension:

1. update your extension’s page on addons.mozilla.org (AMO) with its end-of-life timetable.
2. if your extension is being superseded by another, provide a link to the new extension. You could use [`management.onInstalled`](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/management/onInstalled) to listen for installation of the new extension to trigger the removal of the original extension using [`management.uninstallSelf`](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/management/uninstallSelf).
3. communicate the timetable through social media, forums, or where possible by email.
2. if your extension is being superseded, provide a link to the new extension. You can use [`management.onInstalled`](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/management/onInstalled) to listen for the installation of the new extension and then trigger the removal of the original extension using [`management.uninstallSelf`](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/management/uninstallSelf).
3. communicate the timetable through social media, forums, or, where possible, by email.

3. Publish a final, self-removing version of your extension. Use [`management.uninstallSelf()`](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/management/uninstallSelf) to cause your extension to uninstall itself. Before it does, provide a notice reminding the user about the removal of the extension. If your extension is being superseded by another, remember to provide a reminder about the link to the new extension. You might offer the user the option to remove the extension now or in a few days time.
3. Publish a final, self-removing version of your extension. Use [`management.uninstallSelf()`](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/management/uninstallSelf) to cause your extension to uninstall itself. Before it does, provide a notice reminding the user about the removal of the extension. If your extension is superseded, provide a reminder about the link to the new extension. You might offer the user the option to remove the extension now or in a few days.

The [sunset-extension](https://github.com/mozilla/sunset-extension) example illustrates one approach to the content for a final version of your extension.

4. Make your AMO listing invisible to prevent new installs. To hide your extension’s AMO listing:
1. open your extension’s listing in AMO.
2. from the sidebar menu, open Manage Status & Versions.
3. In the Listing Visibility section, click Invisible.
2. from the sidebar menu, open **Manage Status & Versions**.
3. in the Listing Visibility section, click **Invisible**.

Your hidden extension will not be available either to a search of AMO or an attempt to access it directly using the page’s AMO URL.
Your hidden extension is not listed in AMO searches or accessible using the page’s AMO URL.

{% endcapture %}
{% include modules/one-column.liquid,
Expand All @@ -87,13 +89,13 @@ Your hidden extension will not be available either to a search of AMO or an atte

## Suggested retirement timetable

There is no ideal period between publication of your end-of-life timetable and the removal of your extension from users’ browsers. In setting the timetable, you might wish to consider:
There is no ideal period between publication of your end-of-life timetable and the removal of your extension from users’ browsers. In setting the timetable, consider:

- if you’re not providing a replacement extension, you could consider a relatively short notice period, perhaps a couple of weeks.
- if you’re not providing a replacement extension, you can have a relatively short notice period, perhaps a couple of weeks.

- if you’re replacing the extension with an alternative version, you may wish to provide a longer notice period, with regular reminders about the new extension. In this case, you might want to leave weeks or months between the initial end-of-life advice and the final removal of installed copies.

When you’ve started retiring the extension, use the active user statistics on AMO to fine-tune your timing. For example, if the number of active users isn't declining significantly you may want to delay deploying your extension’s final version and send out a reminder about your plans. To access the active user statistics, open your extension in the AMO Developer Hub and click **View Statistics Dashboard** on the shortcut menu.
When you’ve started retiring the extension, use the active user statistics on AMO to fine-tune your timing. For example, if the number of active users isnt declining significantly, you may want to delay deployment of your extension’s final version and send out a reminder about your plans. To access the active user statistics, open your extension in the AMO Developer Hub and click **View Statistics Dashboard** on the shortcut menu.

{% endcapture %}
{% include modules/one-column.liquid,
Expand Down