# Guides # This page lists more theoretical in-depth articles about the SDK.
Module structure of the SDKThe 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. |
Program IDThe 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 compatibilityWorking out which Firefox releases a given SDK release is compatible with, and dealing with compatibility problems. |
|
SDK API lifecycleDefinition of the lifecycle for the SDK's APIs, including the stability ratings for APIs. |
Working With EventsWrite event-driven code using the the SDK's event emitting framework. |
Two Types of ScriptsThis article explains the differences between the APIs available to your main add-on code and those available to content scripts. |
Introducing content scriptsAn overview of content scripts. |
Loading content scriptsLoad content scripts into web pages, specified either as strings or in separate files, and how to control the point at which they are executed. |
Accessing the DOMDetail about the access content scripts get to the DOM. |
Communicating with other scriptsDetail about how content scripts can communicate with "main.js", with other content scripts, and with scripts loaded by the web page itself. |
Using "port"Communicating between a content script and the rest of your add-on using theport object.
|
Using "postMessage()"Communicating between a content script and the rest of your add-on using thepostMessage() API, and a comparison between
this technique and the port object.
|
Reddit exampleA simple add-on which uses content scripts. |
XUL Migration GuideTechniques to help port a XUL add-on to the SDK. |
XUL versus the SDKA comparison of the strengths and weaknesses of the SDK, compared to traditional XUL-based add-ons. |
Porting ExampleA walkthrough of porting a relatively simple XUL-based add-on to the SDK. |