This is an archived page. It's not actively maintained.


comm-central is a Mercurial repository of the Thunderbird, SeaMonkey, and Lightning extension code; it's located at: This article provides information about this repository and its use.

The relevant Treeherder (to see whether it does build) pages are located at:

Note: The comm-central code only includes a subset of the code required to build Thunderbird, SeaMonkey and Sunbird. See Comm-central source code (Mercurial) for how to get the other required code.

Nightly builds

If you're looking for Nightly Builds of comm-central, then see the links for Thunderbird, SeaMonkey (TBD) and Calendar (TBD).

Building comm-central applications

For the comm-central apps, see the following links:

comm-central tree rules

This section summarizes rules for the comm-central source code repository.



  • Automated unit tests must pass
  • Any Leak tests must not regress

Any regressions on tier-1 platforms are cause for immediate backout. Regressions on tier-2 platforms are usually not cause for backout, but you will be expected to help fix them if needed.

If you think your patch might cause regressions, land on the Thunderbird Try Server (read about what a try server is) first.

Pushing changes to comm-central

See How do I check stuff in? for help with hg commit and hg push. If you believe you should have access to mozilla-central but don't know your login details, file a bug.

  • Changes must not introduce multiple heads into comm-central.
  • Please try to keep history tidy. A single commit or a few independent changesets are preferable to many "work in progress" changesets which clutter history. Consider using Mercurial queues to manage patches before checkin.
  • At least the final changeset being pushed should list the bug number and reviewer for the relevant change.
  • Your commit comment must include the bug number and reviewers. It should contain the summary of the bug or a clear explanation of the fix.
  • If you are not the author of the code, make that clear, preferably using commit -u "Patch Author <>".

comm-central code layout

These directories are included in the comm-central repository:

Miscellaneous files used by the build process.
Lightning extension and Sunbird specific source code.
Files required for the comm-central build process.
An XPCOM wrapper for the LDAP c-sdk. Used for communicating with LDAP servers.
UI for the Compose window (Thunderbird/SeaMonkey) and the Composer part of SeaMonkey.
Thunderbird specific source code.
Source code specific to the Mail and Newsgroups part of Thunderbird and SeaMonkey.
Code that is not under the Mozilla tri-license (e.g. official branding) see for more info.
SeaMonkey specific source code.
These directories are included after has been run:
The LDAP C SDK code pulled from mozilla mecurial repository.
The Firefox/xulrunner code base pulled from the mozilla-central repository. See Mozilla_Source_Code_Directory_Structure for more details of its structure.
Code for the Chatzilla extension, pulled from Mercurial.
Code for the Venkman extension, pulled from Mercurial.
Code for the DOM Inspector extension, pulled from Mercurial.

Note: For the directories currently pulled from cvs, it is expected that some of these will be made obsolete and some will be migrated to Mercurial.


comm-central is branched at various times to provide a stable location for final development of comm-central applications and for security and stability releases. The branches to date are:

Branch Gecko Version Applications Base Tag Date Created 1.9.2 Thunderbird 3.1, Lightning 1.0b2 COMM_1_9_2_BASE Mon Apr 26 10:32:47 2010 -0700 1.9.1 Thunderbird 3.0, SeaMonkey 2.0, Sunbird 1.0b1, Lightning 1.0b1 COMM_1_9_1_BASE Thu Oct 22 05:41:21 2009 -0700

The Base Tag is applied to both the comm-central and comm-* repositories and shows where the branch actually took place.

As we cannot take string changes on a stable branch, the built-in extensions that are shipped by SeaMonkey (chatzilla, dom-inspector, venkman) also have a named branch called COMM_1_9_1_BRANCH based on a COMM_1_9_1_BASE in their Mercurial repositories, and the script in the comm-1.9.1 repository pulls from that (due to recognizing this somewhat late in this cycle, this was only introduced on December 17, 2009; see bug 534422.

See also