This glossary contains a list of terms used in the Add-on SDK.

Add-on: A software package that adds functionality to a Mozilla application, which can be built with either Mozilla's traditional add-on platform or the SDK.

Add-on SDK: A toolchain and associated applications for developing add-ons.

API Utils: A small, self-contained set of low-level modules that forms the base functionality for the SDK. The library can be "bootstrapped" into any Mozilla application or add-on.

CFX: A command-line build, testing, and packaging tool for SDK-based code.

CommonJS: A specification for a cross-platform JavaScript module system and standard library. Web site.

Extension: Synonym for Add-on.

Globals: The set of global variables and objects provided to all modules, such as console and memory. Includes CommonJS globals like require and standard JavaScript globals such as Array and Math.

Host Application: Add-ons are executed in the context of a host application, which is the application they are extending. Firefox and Thunderbird are the most obvious hosts for Mozilla add-ons, but at present only Firefox is supported as a host for add-ons developed using the Add-on SDK.

Jetpack Prototype: A Mozilla Labs experiment that predated and inspired the SDK. The SDK incorporates many ideas and some code from the prototype.

Loader: An object capable of finding, evaluating, and exposing CommonJS modules to each other in a given security context, while providing each module with necessary globals and enforcing security boundaries between the modules as necessary. It's entirely possible for Loaders to create new Loaders.

Low-Level Module: A module with the following properties:

  • Has "chrome" access to the Mozilla platform (e.g. Components.classes) and all globals.
  • Is reloadable without leaking memory.
  • Logs full exception tracebacks originating from client-provided callbacks (i.e., does not allow the exceptions to propagate into Mozilla platform code).
  • Can exist side-by-side with multiple instances and versions of itself.
  • Contains documentation on security concerns and threat modeling.

Module: A CommonJS module that is either a Low-Level Module or an Unprivileged Module.

Package: A directory structure containing modules, documentation, tests, and related metadata. If a package contains a program and includes proper metadata, it can be built into a Mozilla application or add-on.

Program: A module named main that optionally exports a main() function. This module is intended either to start an application for an end-user or add features to an existing application.

Unprivileged Module: A CommonJS module that may be run without unrestricted access to the Mozilla platform, and which may use all applicable globals that don't require chrome privileges.