---
title: Guides
slug: Mozilla/Add-ons/SDK/Guides
translation_of: Archive/Add-ons/Add-on_SDK/Guides
---
This page lists more theoretical in-depth articles about the SDK.
-
Getting Started
-
Learn how to contribute to the SDK: getting the code, opening/taking a bug, filing a patch, getting reviews, and getting help.
-
Modules
-
Learn about the module system used by the SDK (which is based on the CommonJS specification), how sandboxes and compartments can be used to improve security, and about the built-in SDK module loader, known as Cuddlefish.
-
Classes and Inheritance
-
Learn how classes and inheritance can be implemented in JavaScript, using constructors and prototypes, and about the helper functions provided by the SDK to simplify this.
-
Private Properties
-
Learn how private properties can be implemented in JavaScript using prefixes, closures, and WeakMaps, and how the SDK supports private properties by using namespaces (which are a generalization of WeakMaps).
-
Content Processes
-
The SDK was designed to work in an environment where the code to manipulate web content runs in a different process from the main add-on code. This article highlights the main features of that design.
-
Module structure of the SDK
-
The SDK, and add-ons built using it, are of composed from reusable JavaScript modules. This explains what these modules are, how to load modules, and how the SDK's module tree is structured.
-
SDK API lifecycle
-
Definition of the lifecycle for the SDK's APIs, including the stability ratings for APIs.
-
Program ID
-
The Program ID is a unique identifier for your add-on. This guide explains how it's created, what it's used for and how to define your own.
-
Firefox compatibility
-
Working out which Firefox releases a given SDK release is compatible with, and dealing with compatibility problems.
-
Working With Events
-
Write event-driven code using the the SDK's event emitting framework.
-
Content scripts guide
-
An overview of content scripts, including: what they are, what they can do, how to load them, how to communicate with them.
-
Two Types of Scripts
-
This article explains the differences between the APIs available to your main add-on code and those available to content scripts.
-
XUL Migration Guide
-
Techniques to help port a XUL add-on to the SDK.
-
XUL versus the SDK
-
A comparison of the strengths and weaknesses of the SDK, compared to traditional XUL-based add-ons.
-
Porting Example
-
A walkthrough of porting a relatively simple XUL-based add-on to the SDK.