Extensions allow programmers to add new features to Mozilla applications or allow existing features to be modified. Typically, extensions modify the &amp;ldquo;chrome&amp;rdquo; of their target application&amp;mdash;the user interface and the scripts that add functionalty to that interface. However, it is also possible for extensions to include compiled code in the form of XPCOM components.

+

Extensions allow programmers to add new features to Mozilla applications or allow existing features to be modified. Typically, extensions modify the &ldquo;chrome&rdquo; of their target application&mdash;the user interface and the scripts that add functionalty to that interface. However, it is also possible for extensions to include compiled code in the form of XPCOM components.

==Extension technologies==

==Extension technologies==

Line 28:

Line 28:

* There is a minimal [http://yergler.net/blog/2004/05/20/writing-mozilla-extensions/ example extension] available at yergler.net.

* There is a minimal [http://yergler.net/blog/2004/05/20/writing-mozilla-extensions/ example extension] available at yergler.net.

* [http://www.mozilla.org/docs/tutorials/tinderstatus/ Creating a Mozilla Extension] is a document on mozilla.org which walks through the process of creating a simple extension. It has a particularly useful section on XUL Overlays which enable modifications to existing chrome without editing the existing file. However, it has not yet been updated to cover the new packaging system.

* [http://www.mozilla.org/docs/tutorials/tinderstatus/ Creating a Mozilla Extension] is a document on mozilla.org which walks through the process of creating a simple extension. It has a particularly useful section on XUL Overlays which enable modifications to existing chrome without editing the existing file. However, it has not yet been updated to cover the new packaging system.

Introduction

Extensions allow programmers to add new features to Mozilla applications or allow existing features to be modified. Typically, extensions modify the “chrome” of their target application—the user interface and the scripts that add functionalty to that interface. However, it is also possible for extensions to include compiled code in the form of XPCOM components.

Extension technologies

You will almost certainly need to use the following technologies, although it is not necessary to be an expert in them. You may be able to pick up much of what you need just by examining the source code for other extensions.

XPCOM/XPConnect. Mozilla packages together useful functions into XPCOM (Cross-Platform Component Object Model) components, which may then be accessed from external code, including JavaScript via XPConnect. This allows the extension developers access to the preferences database, the filesystem, and many other pieces of Mozilla technology (Extensions can be written in JavaScript, C++, or even Python with PyXPCOM).

Getting started

Setting up your environment

Please see Setting up extension development environment for development preferences you can set and extensions you can install. It also contains information about running a separate instance of Firefox using a development profile.

Getting started with extension development contains tips on easily setting up extensions development environment in Firefox/Thunderbird 1.5 (so that you no longer have to recreate the JAR and/or XPI files each time you make a change in your extension). It is also a quickstart guide containing useful links for beginners and the obligatory helloworld extension, which can be used as a basis of your extensions.

Tutorials

There is a variety of tutorials available which will help with general extension development or with learning specific technologies. You don't have to read all of them before starting hacking.

XULPlanet (mirror) is the premier resource on the internet for XUL and XPCOM. It contains an extensive tutorial which will walk you through XUL.

roachfiend.com has a HowTo that walks through the entire extension development process. The tutorial covers creating extensions for Firefox 1.0 and later versions. (Some content is Windows specific.)

Creating a Mozilla Extension is a document on mozilla.org which walks through the process of creating a simple extension. It has a particularly useful section on XUL Overlays which enable modifications to existing chrome without editing the existing file. However, it has not yet been updated to cover the new packaging system.

Books

As well as web resources, there are a couple of books available describing Mozilla technologies and their usage. Both books cover a comprehensive range of Mozilla technologies. They are available both online and in a more user-friendly dead-tree format.

Creating Applications With Mozilla. O'Reilly's reference, released at about same time as Seamonkey (the Mozilla suite) 1.0 and avaliable online as a collection of HTML files.

Other resources

Getting help

MozillaZine provides a Development forum which is the place for technical questions and an Extensions forum which occasionally has technical discussion but is more useful for releasing extensions to get testing and feedback.

The netscape.public.mozilla newsgroups are the official location for code-related queries. They are particularly useful if you're implementing an XPCOM component or have a question that MozillaZine posters can't answer. See the developer forums page for a description of each newsgroup.

IRC (see also this). Live Developers! Get satisfaction online from red hot developers! (Note: this is not a dating service.)

Get involved

Help maintaining the Extension development knowledge base. Post your tips and code snippets for others to use. (You may use the MozillaZine forums (preferably Development or Extensions) to discuss the tips.) Also consider helping the Devmo project.