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:
- http://wiki.mozilla.org/Calendar:Hacking
- http://wiki.mozilla.org/Calendar:Dev_Guide
- http://wiki.mozilla.org/Calendar:Dev...ent_Strategies
- http://wiki.mozilla.org/Calendar:Review_Process
- http://wiki.mozilla.org/Calendar:UI_Ownership
- http://wiki.mozilla.org/Calendar:Module_Ownership
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 http://www.mozilla.org/mailnews/arch...ntmanager.html for some information. There should be information about how to iterate over all accounts.
- Accounts
- Include information about how to get and change account settings.
- Identities
- How are identities saved in the preferences?
- Servers
- How are servers saved in the preferences?
- Folders
- ?
- 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?
- Messages
- How do you stream a message to see its contents? How do you create and use message selection listeners?
-
nsIMsgDBView - 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 http://wiki.mozilla.org/MailNews:Address_Book for some helpful information.
- General
- What is the process of sending a message (possibly automated)?
- Filters
- When and how does TB invoke filters? How could one add additional filter rule types?
Samples
We need some good samples. These should include:
- Iterating over all folders in all accounts
- See http://lxr.mozilla.org/mozilla/sourc...ervice.cpp#165 to get started.
- Opening a database and iterating over its message headers
- See http://lxr.mozilla.org/seamonkey/sou...kByDate.js#103 to get started.
- Streaming a message
- See http://lxr.mozilla.org/seamonkey/sou...rvice.cpp#1126 and http://forums.mozillazine.org/viewtopic.php?t=214824 to get started.
- Parsing a message
- See http://lxr.mozilla.org/seamonkey/sou...ervice.cpp#998 as a starting point.