Building a Thunderbird extension 1: introduction

Thunderbird is a community managed open-source email application. It shares many of the technologies used by Mozilla Firefox, including JavaScript, the Gecko layout engine, the XUL XML User Interface Language and the XPCOM Cross-Platform Component Object Model. Similar to Firefox, Thunderbird functionality can be enhanced and customized via extensions.

Warning: This content is for older versions of Thunderbird. Much of it may no longer be relevant. See developer.thunderbird.net for newer information.

This tutorial will introduce you to the components of a Thunderbird extension and will show you how to build your own. The tutorial has the following pages:

  1. Introduction (this page)
  2. The extension filesystem (setting up your local system)
  3. Install manifest (the install.rdf file that contains meta-information about the extension)
  4. Chrome manifest (list of packages and overlays)
  5. XUL (the XML user interface language that is used to modify the Thunderbird user interface)
  6. Adding JavaScript (explains how to add some simple JavaScript to your Thunderbird extension)
  7. Installing locally (enabling the extension on your local Thunderbird instance)
  8. Packaging (making a distribution package that contains the extension)
  9. Distributing (from your own site or from http://addons.mozilla.org/)

This tutorial is compatible with Thunderbird versions 2,3 and 5. All Thunderbird builds are available from the ftp site.

References and resources

Tools and helper extensions

There are many tools available that help with developing Thunderbird extensions. At a minimum you will need:

  • Text editor: Any editor that is capable of writing plain text can be used to write extensions. However, most developers use an editing program optimized for writing code (also known as an Integrated Development Environment). These provide features like syntax highlighting and code coloration, indentation, auto-complete, etc.
  • File archive utility: Any utility that is capable of creating archive files can be used.

There are also a number of extension and applications that are useful for testing and debugging Thunderbird extensions, such as JavaScript consoles and XPCOM inspectors. These are described on the page "Setting up an extension development environment".

Documentation

Community

The Thunderbird development community has a mailing list with an extensive searchable archive with an extensive searchable archive. You can also talk with the community on the #maildev IRC channel.