LogoLogo
  • About Thunderbird
  • Contributing to Thunderbird
    • Getting Started Contributing
    • Setting Up A Build Environment
    • Building Thunderbird
      • Windows Build Prerequisites
      • Linux Build Prerequisites
      • macOS Build Prerequisites
      • Artifact Builds
    • Codebase Overview
      • Account Configuration
      • Address Book
      • Chat Core
        • Notifications
        • Message Styles
        • Keyboard shortcuts
        • Chat Core Protocols
        • Contacts
      • Mail Front-End
    • Tutorials and Examples
      • Hello World Example
      • Thunderbird Live Development Videos
    • Fixing a Bug
      • Bug Triaging 101
        • Bug Status Classicification
        • Bug Types
        • Garbage Collection
        • Narrow the Scope
      • Using Mercurial Bookmarks
      • Using Mercurial Queues
      • Lint and Format Code
      • Using ESLint to Format Javascript Code
      • Try Server
      • Landing a Patch
      • Care and Feeding of the Tree
    • Testing
      • Running Tests
      • Adding Tests
      • Writing Mochitest Tests
  • Planning
    • Roadmap
    • Android Roadmap
    • Supported Standards
  • Add-on Development
    • Introduction
    • What's new?
      • Manifest Version 3
    • A "Hello World" Extension Tutorial
      • Using WebExtension APIs
      • Using a Background Page
      • Using Content Scripts
    • A Guide to Extensions
      • Supported Manifest Keys
      • Supported UI Elements
      • Supported WebExtension APIs
      • Thunderbird's WebExtension API Documentation
      • Thunderbird WebExtension Examples
      • Introducing Experiments
    • A Guide to Themes
    • Developer Community
    • Documentation & Resources
      • Tips and Tricks
    • Add-on Update Guides
      • Update for Thunderbird 128
      • Update for Thunderbird 115
        • Adapt to Changes in Thunderbird 103-115
      • Update for Thunderbird 102
        • Adapt to Changes in Thunderbird 92-102
      • Update for Thunderbird 91
        • Adapt to Changes in Thunderbird 79-91
      • Update for Thunderbird 78
        • Adapt to Changes in Thunderbird 69-78
      • Update for Thunderbird 68
        • Adapt to Changes in Thunderbird 61-68
      • How to convert legacy extensions?
        • Convert wrapped WebExtensions to modern WebExtensions
        • Convert legacy WebExtensions to modern WebExtensions
        • Convert legacy overlay extension to legacy WebExtension
        • Convert legacy bootstrapped extension to legacy WebExtension
  • Releases
    • Thunderbird Channels
    • Release Cadence
    • Uplifting Fixes
    • Feature Flags
    • Tracking Fixes for Releases
    • Contributing to Release Notes
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
Export as PDF
  1. Contributing to Thunderbird

Codebase Overview

A high-level look at the project's architecture and a guide to where to find things.

PreviousArtifact BuildsNextAccount Configuration

Last updated 2 years ago

Was this helpful?

Overview of Comm Central

The following directories are included in the comm-central repository:

build Miscellaneous files used by the build process.

calendar The calendar component of Thunderbird (formerly known as the Lightning extension).

Files for the chat component of Thunderbird. There is also related code in mail/components/im.

The subdirectories are:

  • components Various chat features, includes the interfaces that each protocol must implement.

  • content User interface files which become chrome://chat/content/….

  • locales The user-visible strings, in US English. Files from this directory become chrome://chat/locale/….

  • modules JavaScript modules that are specific to chat.

  • protocols Various protocol implementations. Each of subdirectory implements a protocol to the interfaces found under components.

  • themes Common and platform-specific styling specific to chat. Files from this directory become chrome://chat/skin/….

mail Thunderbird specific source code. It's no coincidence that this folder is laid out a lot like the browser and toolkit directories on mozilla-central. Many of the subdirectories follow the same pattern:

  • content User interface files which become chrome://messenger/content/….

  • modules Javascript modules which become resource:///modules/….

  • test Mochitest and/or XPCShell tests.

The subdirectories are:

  • app Configuration and packaging instructions. Contains all-thunderbird.js, the default preferences.

  • base The main mail window and several miscellaneous dialogs. Also, things which are common to many parts of the program.

  • branding Icons and imagery.

  • components Various Thunderbird features, including:

    • accountcreation The account setup wizard.

    • addrbook The address book user front end. (Not the address book back end, which is in mailnews/addrbook).

    • cloudfile The cloud attachment feature (a.k.a. FileLink).

    • compose Email composition window.

    • extensions WebExtensions schema and implementation.

    • im The chat front end.

    • preferences The preferences tab.

  • config Build instructions, including the automation mozconfig files.

  • extensions

  • installer Packaging and installation instructions.

  • locales The user-visible strings, in US English. Files from this directory become chrome://messenger/locale/….

  • modules Shared JS modules. Files from this directory become resource:///modules/….

  • test The MozMill user interface tests and the code to run that test suite.

  • themes Common and platform-specific styling of Thunderbird user interface. Files from this directory become chrome://messenger/skin/….

mailnews Source code specific to the Mail and Newsgroups part of Thunderbird and SeaMonkey.

mozharness Files needed for Thunderbird's test infrastructure.

suite SeaMonkey-specific source code. Not used in Thunderbird.

taskcluster Files needed for Thunderbird's build infrastructure.

testing Files needed for Thunderbird's test infrastructure.

third_party Libraries developed elsewhere that are included in Thunderbird

actors Modules which handle communication between processes. .

other-licenses Code that is not under the Mozilla license. See for more info.

chat
See the Firefox documentation for information about actors
http://www.mozilla.org/MPL/