Thunderbird documentation list

This page is a checklist of sorts for planning and organizing an effort to write proper Thunderbird developer documentation. Once we come up with a good, logical list, we can start writing real documentation.

If you'd like to help, please feel free to edit this page to help organize the needed contents, add ideas for needed articles, and notes on where to find useful information.

Introduction to Thunderbird development

This document (or possibly a set of documents, depending on length) would cover basic concepts that are useful for Thunderbird developers (or potential developers) to know.

History of Thunderbird

A historical overview of the project.

Project goals

What the Thunderbird project wants to achieve.

Primary developers

Who's involved in the project? Who do you go to for help with specific topics? This will be helpful both for new developers and for writers, to find the people to go to when you're trying to get a specific piece of code documented.

Getting started with Thunderbird development

This article would include links to articles on getting and building the code, the build system, and so forth. Consider the following examples from the Calendar project:

See this page for some useful information.

Policies in <tt>all.js</tt>

Documentation of the policies in the TB all.js will be nice for script writers trying to develop dynamic HTML & CSS for mail/news. Currently it's a lot of trial and error toggling policies from "noAccess" to "allAccess" to get script functions activated for dynamic layout.

Thunderbird architecture

This series of articles should include API references as well as sample code snippets.

Account manager
See for some information. There should be information about how to iterate over all accounts.
Include information about how to get and change account settings.
How are identities saved in the preferences?
How are servers saved in the preferences?
Message database
Message headers
How do you get the account for a message? How do you change headers and how they're displayed in the UI?
How do you stream a message to see its contents? How do you create and use message selection listeners?
This drives the thread pane.
Compose window
How do you manipulate and extend the compose window?
Address book
How do you iterate across address books? Search them? Modify or add entries? Delete entries? standard8 knows about this stuff. See for some helpful information.
What is the process of sending a message (possibly automated)?
When and how does TB invoke filters? How could one add additional filter rule types?


We need some good samples. These should include:

Iterating over all folders in all accounts
See to get started.
Opening a database and iterating over its message headers
See to get started.
Streaming a message
See and to get started.
Parsing a message
See as a starting point.