Thunderbird Source Docs

Overview

  • Governance
  • Architectural Decision Records
  • Writing Documentation

Development

  • Building Thunderbird
  • Localization
  • Rust in Thunderbird
    • Managing Thunderbird’s Cargo workspace
    • Adding a Rust crate to Thunderbird
    • Using XPCOM within a Rust component

Front-End Components

  • Custom Element Conventions
  • State Management
  • Storybook

Mail Front End

  • Quick Filter Bar

Mail Back End

  • Email Protocols
  • Folder Compaction
  • Folder Storage
  • New Database (AKA Panorama)

Other Components

  • In-App Notifications
  • Telemetry
Thunderbird Source Docs
  • Rust in Thunderbird
  • Report an issue / View page source

Rust in Thunderbird

  • Managing Thunderbird’s Cargo workspace
    • Updating dependencies
    • Sync the vendored dependencies
  • Adding a Rust crate to Thunderbird
    • Building the crate
    • Managing a crate’s dependencies
      • Adding dependencies on internal crates
      • Synchronizing dependencies
  • Using XPCOM within a Rust component
    • Implementing an XPCOM interface in Rust
      • Implementing the interface in a struct
      • Using XPCOM-compatible types
      • Exposing the method as XPCOM
      • Writing a constructor for the struct
      • Registering the XPCOM component
    • Instantiating and using objects through XPCOM in Rust
      • The xpcom crate
      • References on new instances or existing services
      • Calling methods on XPCOM objects
        • Handling output with getter_addrefs
        • Mapping return values of XPCOM methods
      • Casting between XPCOM interfaces
    • Build the Cargo documentation for internal crates
Previous Next

Last updated on 2026-01-22.

Built with Sphinx using a theme provided by Read the Docs.