Marketplace/add-ons

From MozillaWiki
Jump to: navigation, search
Stop (medium size).png
The Marketplace has been placed into maintenance mode. It is no longer under active development. You can read complete details here.

Overview

Add-ons are a well-known concept in the world of web browsers, and this concept has been added to Firefox OS too. A single Firefox OS add-on can extend just one app, several, or all of them. As a prototype there is an app on the latest builds of FirefoxOS called HackerSpace which holds add-ons. We would like to deprecate that app and replace it with the Marketplace officially supporting add-ons.


Proposed Phases

  • beta phase (open for foxfooding of consumer pages, submission process): starting 2015/10/06
  • MVP phase (open for consumer pages, submission process, review process): starting 2015/11/02
  • version 1.1


Engineering Considerations

This affects:

  • Developer Tools
    • Modify required fields (categories, icons, etc.)
  • Validator
  • Reviewer Tools
  • Add an API revealing add-ons
  • Add a new page for displaying add-ons
    • Gaia will bookmark this on their home screen
  • Bonus: Gaia would like to upload add-ons programmatically from FxOS


Implementation

Add-ons for FxOS were implemented via Marketplace (rather than AMO), due to the timeline and the similarity between webapps and extensions (in the context of FxOS).

This required several major efforts:

  1. back-end (model and API) support for this new "content type"
  2. consumer-side (front-end) support for add-ons in Marketplace
  3. updated navigation to promote add-ons (and homescreens)
  4. new submission tools for add-ons
  5. new review tools for add-ons
  6. blocklisting using addons.mozilla.org (rather than the faux blocklisting of webapps on Marketplace)


Process

In addition, a new process was applied, leveraging an Agile process (using Pivotal tracker) and the concept of a functional Walking Skeleton.

The functional walking skeleton establishes basic functionality early and attempts to maintain that functionality as more details of the overall implementation are fleshed out. In theory this allows for earlier and more iterative QA, integration, and development.


Background materials

(posterity)


Compatibility

Because add-ons are not supported prior to 2.5, support is determined using navigator.hasFeature('web-extensions').

Note that feature detection is only supported within the Marketplace app (because the API is privileged), so the consumer pages portion add-ons in Marketplace are not visible – even on 2.5 – in the Marketplace via the browser. Navigation items are hidden, and direct links still work; we are relying on button status to enforce compatibility in that case (1221345).

Add-ons are similar in structure and functionality to webapps, but have a few key differences:


Firefox OS integration

In Firefox OS, under Settings->Add-ons, a web activity is used to launch Marketplace and bring up the Add-ons "category" page. This uses name="marketplace-category" and slug="addons" to imitate the similar behavior for category pages, langpacks, and homescreens.


Submission and Review tools

New submission and review tools were built at /content using React – this served as both a beta for React (to replace our proprietary Commonplace) as well as an initial step towards a re-architecture of DevHub (analogous tools currently only supporting webapps).


Blocklisting

Because Marketplace's blocklisting for webapps is actually the pushing of an empty app update, and because add-ons have more power than webapps, it was decided that add-ons would have true blocklisting, implemented as:

  • basic functionality in Marketplace (blocklisting disables further access/install of the add-on, except to administrators), but would then
  • follow the existing circuit of Desktop add-ons (blocklisted item is added to the blocklist service (https://blocklist.addons.mozilla.org/etc), which is queried daily by FxOS using application IDs to identify and enforce disabling of matching add-ons on the device).


Tracking bugs

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);