Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .gitbook/assets/tb-channels.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 0 additions & 2 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@
* [Bug Types](thunderbird-development/fixing-a-bug/bug-triaging/bug-types.md)
* [Garbage Collection](thunderbird-development/fixing-a-bug/bug-triaging/garbage-collection.md)
* [Narrow the Scope](thunderbird-development/fixing-a-bug/bug-triaging/narrow-the-scope.md)
* [Using Mercurial Bookmarks](thunderbird-development/fixing-a-bug/using-mercurial-bookmarks.md)
* [Using Mercurial Queues](thunderbird-development/fixing-a-bug/using-mercurial-queues.md)
* [Lint and Format Code](thunderbird-development/fixing-a-bug/lint-and-format-code.md)
* [Using ESLint to Format Javascript Code](thunderbird-development/fixing-a-bug/using-eslint.md)
* [Try Server](thunderbird-development/fixing-a-bug/try-server.md)
Expand Down
4 changes: 2 additions & 2 deletions add-ons/mailextensions/experiments.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ Since Experiments directly interact with Thunderbird's core functions, it is nec
{% endhint %}

{% hint style="info" %}
Thunderbird does contain a few useful features related to Experiments [whose documentation is no longer generated](https://bugzilla.mozilla.org/show\_bug.cgi?id=1556460#c23). Especially if you're writing an Experiment with complex interactions between the WebExtension and your Experiment, it may be helpful to read the documentation blocks within [ExtensionCommon.sys.mjs](https://searchfox.org/mozilla-central/source/toolkit/components/extensions/ExtensionCommon.sys.mjs) and possibly other modules in the same source code folder.
Thunderbird does contain a few useful features related to Experiments [whose documentation is no longer generated](https://bugzilla.mozilla.org/show\_bug.cgi?id=1556460#c23). Especially if you're writing an Experiment with complex interactions between the WebExtension and your Experiment, it may be helpful to read the documentation blocks within [ExtensionCommon.sys.mjs](https://github.com/mozilla-firefox/firefox/blob/main/toolkit/components/extensions/ExtensionCommon.sys.mjs) and possibly other modules in the same source code folder.
{% endhint %}

{% hint style="info" %}
For reference, the parent implementations of all built-in APIs can be found in\
[/comm/mail/components/extensions/parent](https://searchfox.org/comm-central/source/mail/components/extensions/parent).
[/comm/mail/components/extensions/parent](https://github.com/thunderbird/thunderbird-desktop/blob/main/mail/components/extensions/parent).
{% endhint %}

{% hint style="danger" %}
Expand Down
18 changes: 9 additions & 9 deletions releases/cadence.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
Thunderbird follows a release train model to ensure timely and predictable releases. This approach allows for regular feature rollouts, stability improvements, and bug fixes.

### General Release Cadence
The general release cadence consists of 4-week cycles, with each branch corresponding to a specific release channel. Each branch, starting from comm-central, is based on the previous branch.
The general release cadence consists of 4-week cycles, with each branch corresponding to a specific release channel. Each branch, starting from main, is based on the previous branch.

![](../.gitbook/assets/tb-channels.png)

Expand All @@ -15,35 +15,35 @@ The general release cadence consists of 4-week cycles, with each branch correspo

#### **Thunderbird Daily**
- **Release Timeline**: A new major version of Thunderbird Daily begins every 4 weeks.
- **Releases**: Thunderbird Daily is automatically released on a daily basis from comm-central.
- **Releases**: Thunderbird Daily is automatically released on a daily basis from main.

#### **Thunderbird Beta**
- **Release Timeline**:
- A new major version of Thunderbird Beta begins every 4 weeks.
- 4 weeks after Daily starts for a new version, comm-central is merged into comm-beta.
- 4 weeks after Daily starts for a new version, main is merged into beta.
- **Releases**: Thunderbird Beta for this version is released weekly for the next 3 weeks.
- **Beta 1**: Includes the merged code.
- **Beta 2 and above**: Include any new uplifts.

#### **Thunderbird Release**
- **Release Timeline**:
- A new major version of Thunderbird Release begins every 4 weeks.
- 3 weeks after Beta starts for a new version, comm-beta is merged into comm-release.
- 3 weeks after Beta starts for a new version, beta is merged into release.
- 1 week after this merge, the monthly Thunderbird Release is published.
- **Releases**: Thunderbird Release is released every 4 weeks, with point releases as needed every 2 weeks.
- **Releases**: Thunderbird Release is released every 4 weeks, with a point release, as needed, 2 weeks after release.

#### **Thunderbird ESR (Extended Support Release)**
- **Release Timeline**: The code from comm-release is merged into comm-esr\<version\> once a year.
- **Release Timeline**: The code from the release branch is merged into esr\<version\> once a year.
- **Releases**: Thunderbird ESR is released every year, typically in July, with point releases as needed every 2 weeks.

---

### **Stabilization Milestones**

#### **Daily Soft Code Freeze**
- A 1-week soft code freeze occurs for comm-central prior to merging into comm-beta.
- A 1-week soft code freeze occurs for main prior to merging into beta.
- During this time:
- Risky code should not land in comm-central.
- Risky code should not land in main.
- Features controlled by a feature flag that were disabled in Daily should not be enabled.

#### **Pre-Merge Reviews**
Expand All @@ -63,7 +63,7 @@ The general release cadence consists of 4-week cycles, with each branch correspo
| Thunderbird 136.0a1 starts | Jan 6 |
| Thunderbird 136.0a1 soft code freeze | Jan 27–Feb 3 |
| Thunderbird 136.0a1 pre-merge review | Jan 30 |
| Thunderbird merge 136.0a1 central → beta | Feb 3 |
| Thunderbird merge 136.0a1 main → beta | Feb 3 |
| Thunderbird 136.0b1 | Feb 5 |
| Thunderbird 136.0b2 | Feb 12 |
| Thunderbird 136.0b3 | Feb 19 |
Expand Down
8 changes: 4 additions & 4 deletions releases/channels.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

Thunderbird provides releases through four distinct channels, each serving a unique purpose. Below are the channels, their corresponding branches, and a summary of their purpose:

- **Thunderbird Daily (comm-central)**: Where development and testing begin, and new features are developed.
- **Thunderbird Beta (comm-beta)**: The monthly stabilization release.
- **Thunderbird Release (comm-release)**: The official monthly release.
- **Thunderbird ESR (comm-esr)**: The official annual extended support release.
- **Thunderbird Daily (main branch)**: Where development and testing begin, and new features are developed.
- **Thunderbird Beta (beta branch)**: The monthly stabilization release.
- **Thunderbird Release (release branch)**: The official monthly release.
- **Thunderbird ESR (esr\<version\> branch)**: The official annual extended support release.

These four channels offer increasing levels of stability, increasing as code moves from Daily to Beta and being the highest in Release and ESR.
6 changes: 3 additions & 3 deletions releases/feature-flags.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

Feature Flags are used to manage features that are not yet ready for general use. Their behavior varies depending on the branch:

### **comm-central**
### **main**
Feature flags are enabled once all related code for the feature have landed.

### **comm-beta**
### **beta**
Feature flags remain enabled once the feature is complete unless the developers decide to temporarily pause it.

### **comm-release and comm-esr**
### **release and esr**
Feature flags are disabled by default until an explicit decision is made to enable the feature for all users.
4 changes: 2 additions & 2 deletions releases/uplifting-fixes.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ Uplifts to Beta, Release, and ESR are limited to high-impact bug fixes. Features

**Patches nominated for uplift should:**
- Be limited to stability, security, or high-impact bugs.
- **For Beta uplifts:** Already have landed, tested, and stabilized in comm-central.
- **For Release/ESR uplifts:** Already have landed, tested, and stabilized in comm-beta.
- **For Beta uplifts:** Already have landed, tested, and stabilized in main.
- **For Release/ESR uplifts:** Already have landed, tested, and stabilized in beta.
- Include tests or provide a strong justification for the absence of tests.
- Not change any localizable strings.

Expand Down
16 changes: 8 additions & 8 deletions thunderbird-development/building-thunderbird/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Depending on your Operating System you will need to carry out a different proces

## Build Configuration

To build Thunderbird, you need a file named `mozconfig` in the root directory of the mozilla-central checkout that contains the option `comm/mail` enabled. If you do not already have this file, then you can create it with this line by doing this in the `source/` directory:
To build Thunderbird, you need a file named `mozconfig` in the root directory of the firefox checkout that contains the option `comm/mail` enabled. If you do not already have this file, then you can create it with this line by doing this in the `source/` directory:

```
echo 'ac_add_options --enable-project=comm/mail' > mozconfig
Expand All @@ -44,7 +44,7 @@ For more info on configuration options, see the page [Configuring build options]
## Building

{% hint style="warning" %}
Before you start, make sure that the version you checked out is not busted. For `hg` tip, you should see green Bs on [https://treeherder.mozilla.org/#/jobs?repo=comm-central](https://treeherder.mozilla.org/#/jobs?repo=comm-central)
Before you start, make sure that the version you checked out is not busted. For `git` tip, you should see green Bs on [https://treeherder.mozilla.org/#/jobs?repo=comm-central](https://treeherder.mozilla.org/#/jobs?repo=comm-central)
{% endhint %}

After you have met the [build prerequisites](./#build-prerequisites) for your OS, the build is started in the `source` directory with:
Expand All @@ -71,29 +71,29 @@ To run your build, you can use:

There are various command line parameters you can add, e.g. to specify a profile.

Various temporary files, libraries, and the Thunderbird executable will be found in your object directory (under `comm-central/`), which is prefixed with `obj-`. The exact name depends on your system and OS. For example, a Mac user may get an object directory name of `obj-x86_64-apple-darwin10.7.3/`.
Various temporary files, libraries, and the Thunderbird executable will be found in your object directory (under `comm/`), which is prefixed with `obj-`. The exact name depends on your system and OS. For example, a Mac user may get an object directory name of `obj-x86_64-apple-darwin10.7.3/`.

The Thunderbird executable in particular, and its dependencies are located under the `dist/bin` folder under the object directory. To run the executable from your `comm-central` working directory:
The Thunderbird executable in particular, and its dependencies are located under the `dist/bin` folder under the object directory. To run the executable from your `comm` working directory:

* Windows: `obj-.../dist/bin/thunderbird.exe`
* Linux: `obj-.../dist/bin/thunderbird`
* macOS: `obj-.../dist/Daily.app/Contents/MacOS/thunderbird`

## Update and Build Again

To pull down the latest changes, in the mozilla directory run the following commands:
To pull down the latest changes, in the firefox directory run the following commands:

```
hg pull -u
git pull --rebase
cd comm
hg pull -u
git pull --rebase
cd ..
```

or to do it via one command:

```
hg pull -u; (cd comm; hg pull -u)
git pull --rebase && git -C comm pull --rebase
```

Then just run the `./mach build` command detailed in the [Building](./#building) instructions above. This will only recompile files that changed, but it may still take a long time.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,50 +41,42 @@ You can check with `python3 --version` to see if you have it already. If not, yo

You will also need `python3-distutils` and `python3-pip` installed from your distribution's package manager.

### Mercurial
### Git

As noted in the [Setting up a build environment page](../setting-up-a-build-environment.md), both `mozilla-central` and `comm-central` are repositories using the Mercurial version control system. This means you will need to install Mercurial. Here are the quick commands to use for common Linux based operating systems but for a more complete list of instructions (if neither of these works for your use case), please see [Mercurial's download page on their wiki](https://www.mercurial-scm.org/wiki/Download).
As noted in the [Setting up a build environment page](../setting-up-a-build-environment.md), both Firefox and Thunderbird source are stored in Git repositories. This means you will need to install Git if it is not already available. Here are some quick commands to install on common distributions:

#### Ubuntu/Debian

```
sudo apt install mercurial
sudo apt install git
```

#### Fedora

```
sudo dnf install mercurial
sudo dnf install git
```

## Getting the Code

Once you have Mercurial installed, you are ready to grab the source code. There are a couple of different methods to do this.

{% hint style="warning" %}
Mozilla-central will build Firefox without the comm-central repo present and a few options set. Mozilla-central is the Firefox codebase and comm-central features the additions that turn Firefox into Thunderbird.
{% endhint %}
Once you have Git installed, you are ready to grab the source code. There are a couple of different methods to do this.

### Scripted

The [`bootstrap.py`](https://hg.mozilla.org/comm-central/raw-file/tip/python/rocboot/bin/bootstrap.py) script will grab the two source repos you need, run `./mach bootstrap` for you, and sets up a necessary `mozconfig` file. Download this file to the directory where you would like your source code folder to live, either by clicking the link and moving the file to the appropriate location or using `wget`. Then make it executable and run it.
The [`bootstrap.py`](https://raw.githubusercontent.com/thunderbird/thunderbird-desktop/main/python/rocboot/bin/bootstrap.py) script will grab the two source repos you need, run `./mach bootstrap` for you, and sets up a necessary `mozconfig` file. Download this file to the directory where you would like your source code folder to live, either by clicking the link and moving the file to the appropriate location or using `wget`. Then make it executable and run it.

```
mkdir tb-build && cd tb-build
wget https://hg.mozilla.org/comm-central/raw-file/tip/python/rocboot/bin/bootstrap.py
wget https://raw.githubusercontent.com/thunderbird/thunderbird-desktop/main/python/rocboot/bin/bootstrap.py
chmod +x bootstrap.py
./bootstrap.py
```

This will create a `mozilla-unified` directory with both a `mozconfig` and a `comm/` folder inside.
This will create a `source/` directory with both a `mozconfig` and a `comm/` folder inside.

The `mozilla-unified` repository has several bookmarks (akin to a git branch) and you will by default be on the `autoland` bookmark. You will need to be on the `central` bookmark and you can change by going into this directory and changing to that bookmark:

```
hg up central
```
The `source/` repository contains the Firefox source and defaults to the `main` branch.

The `mozilla-unified/comm` repository has several bookmarks and you will by default be on the `comm` bookmark. This is where you want to be, unless you are specifically working on a past ESR.
The `source/comm` repository also defaults to the `main` branch.

The `mozconfig` file is setup to build Thunderbird and you can verify this with `cat mozconfig`; the `--enable-project` parameter should be `comm/mail`:

Expand All @@ -98,12 +90,12 @@ If you would rather manually gather the source code, perform the bootstrap, and

#### Checkout the Source Code

Get the latest Mozilla source code from Mozilla's `mozilla-central` Mercurial code repository, and check it out into a local directory `source` (or however you want to call it). Then, get the latest Thunderbird source code from Mozilla's `comm-central` Mercurial code repository. It needs to be placed **inside** the Mozilla source code, in a directory named `comm/`:
Get the latest Firefox source code, and check it out into a local directory `source` (or however you want to call it). Then, get the latest Thunderbird source code. It needs to be placed **inside** the Mozilla source code, in a directory named `comm/`:

```
hg clone https://hg.mozilla.org/mozilla-central source/
git clone https://github.com/mozilla-firefox/firefox source/
cd source/
hg clone https://hg.mozilla.org/comm-central comm/
git clone https://github.com/thunderbird/thunderbird-desktop comm/
```

#### Create `mozconfig` file
Expand Down
Loading