AMO:Editors/EditorGuide/SpecialAddonTypes

Reviewing Special Add-on Types

An overwhelming majority of add-ons are extensions, so our policies are mostly oriented to those. However, there are checks that are important to keep in mind when reviewing other types of add-ons.

Bootstrapped (Restartless) Add-ons

Bootstrapped add-ons are extensions for Gecko 2 (Firefox 4) which are installed, upgraded, enabled, and disabled all without an aplication restart. They can be identified by the presence of the em:bootstrapped flag in install.rdf.

The main challenge for boostrapped add-ons is to clean up after themselves. They are not allowed to register chrome or overlays because they have no inverse operation. Bootstrapped add-ons that don't perform proper cleanup should receive a Preliminary Approval at most.

Some things to look for:

  • The add-on must not require a restart for any of its features to fully work.
  • The add-on must not require a restart after being disabled or uninstalled.
  • Unregister all observers when disabled or uninstalled.
  • Remove all event listeners when disabled or uninstalled.
  • Remove all UI when disabled or uninstalled.

The add-on should be installed, uninstalled, disabled and enabled a couple of times during a single session to test the main entry points.

A more detailed treatment of this topic by a member of our team can be found here.

Themes

  • Themes have limited capabilities to run code, but this is generally not allowed. Make sure to run the validator to see if there is any JS in the theme. If there is, it should be admin-reviewed.
  • Go through all menus to check that the theme is complete.
  • Add a livebookmark to your bookmarks toolbar if you don't have one.
  • Go to an extended validation secure site like and a "plain" HTTPS site like wiki.mozilla.org. Make sure there's a clear distinction in the identity button for these two, and between the two and regular HTTP sites.
  • Check all the icons are there under View -> Toolbars -> Customize.
  • Open the History and Bookmarks windows, as well as the sidebars.
  • Make sure the theme looks good. Text should be easy to read and buttons should be clear and concise. As well as just looking stylish, make sure it all looks stylish in the same way.
  • Another important aspect of a theme is to make sure it "fits." This is relevant for menus and dialogs - check to make sure that all the UI elements fit within the default boundaries and do not appear "clipped". If anything's clipped and/or if resizing is required to see it completely, make a note of it and request the author to change it.
  • While testing a theme, don't forget to check that the author has included a suitable preview image.

Test Pages

All these URLs should be viewed

Widgets / Dialogs

  • Tab strip scrolling (open enough tabs to force the tab script to scroll) - make sure it scrolls properly and has scroll arrows at each end of tab strip.
  • Pinned Tabs (verify pinned tabs function correctly)
  • Tab Groups / Panorama
  • Side bar (ctrl+B)
  • Customize toolbar (verify small and large icons function properly)
  • Customize toolbar (verify show: icons, icons and text, & text options function properly for both large and small icons)
  • Places (All History / All Bookmarks) - some themes break the toolbar buttons in these when set to small / large
  • Turn on all toolbars
  • Place tabs on top and disable menu bar, maximize and restore browser window. Ensure tabs display in title bar correctly when browser window maximized (Windows/Linux)
  • When menu bar is turned off, make sure window controls on right side of title bar (min/max/restore/close) display and function correctly
  • Web Developer tools (Web console, Inspect, Scratchpad, etc.)
  • Page Info
  • Private Browsing
  • Option. Make sure Options / Advanced / Network / Limit Cache > spin buttons are styled as well!
  • About Firefox - the logo should not be replaced (but a custom made logo can be added)

Important Add-Ons

  • DOM Inspector (make sure the syntax highlighting doesn't make items unreadable - especially with dark themes
  • console2
  • Venkmann (Javascript Debugger)

Usability Tests

  • The Theme should be usable without Mouse - widgets have to change their appearance when tabbed through them with the keyboard. (e.g. checkboxes, radio buttons, tabs, should indicate key focus)

Special Screen States

  • Full screen mode - there must be restore and minimize buttons!
  • Tabs on Top - Tabs may be above the Address bar or on the Caption of the Window, this is a matter of choice for the Theme author
  • Try to move the search box to a different toolbar (e.g. menu bar); this is what people with narrow screens would do
  • Sync Now

Search Engines

It is required for search engines to have a relevant icon, and a clear, concise name.

We should only approve those search engine add-ons that provide unique access to a given engine. For example, only one eBay.de engine should be allowed to be public, but there can be multiple add-ons that search for online charities (as long as each uses a different domain for the search).

If a nominated search engine is identical to an already public search engine, it should only be approved (and the other must be downgraded to Preliminary Review) if:

1) It provides better functionality, like Search Suggestions, or direct access to the search site (instead of Google Custom Search or other intermediate search pages).

2) It's free of referral codes or unnecessary advertising.

3) It is provided by the official search engine creator.

These rules are ordered by priority, so if (1) applies, there's no need to look at (2) or (3). If none of these rules apply, the oldest add-on should be the one we allow to be public.

It's forbidden to submit search engines that ping third parties, be it through the search suggestions feature or redirecting the search through an intermediate page. It's acceptable if the third party is well-known, like Google Suggestions, and the add-on description is clear about it.

Dealing with referral codes:

  • The author should disclose any referral tracking in the add-on description and Privacy Policy.
  • How to see if referrals are being used?
    • Perform a "pure search" directly on the site and see what URL is generated and compare to the URL generated by the plugin - compare URL parameters and note differences.
    • Are there "extra" parameters in the plugin that happen to match the name of the author or author's company?
    • Are there URL parameters such as ref= or affiliate= or something similar?

Changing add-ons' statuses

Only senior editors can change the status of an add-on. If you can't modify the search engine status yourself, you can send a message to the mailing list and somebody else will handle this for you.

If you can do this, make sure you send a message to the add-on author explaining why this happened.

Dictionaries

A dictionary is used by Firefox for the built-in spellchecker, and it supports multiple dictionaries. Dictionaries are .xpi files.

Multiple dictionaries for a single locale are fine as long as they all provide value. See for example the multiple French dictionaries available.

One way to test dictionaries is to find the corresponding locale Wikipedia and then open a page for editing. This will give you a good idea of the words that the dictionary includes or doesn't include. You can also type a little and see the word suggestions it gives you. They should generally be approved, unless something is really wrong with the add-on.

If an author wants a dictionary to be featured in the main dictionaries page at AMO, they should contact the mailing list. Admin editors will review the add-on and add the add-on to the list if appropriate.

Language Packs

A language pack is an add-on that enables support for additional language(s) in one Firefox installation. Do not confuse with locales in extensions. Language packs are typically separate XPI or JAR files that contain only locale files.

  • Language packs should only include strings and not JavaScript. If they do, they should be flagged for Admin Review. The code validator has a check for this.
  • Deny if: XML parsing errors in opening all menus, all pref-dialog panes, Error console and Add-on manager.
  • Suggested Tools: run a completeness test using compare-packs.
  • Lang packs must not break application updates, in particular they should not override the general.useragent.locale pref.

If an author wants a language pack to be featured in the main language pack page at AMO, they should contact the mailing list. Admin editors will review the add-on and add the add-on to the list if appropriate.

Next: Editor Ethics