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
2 changes: 1 addition & 1 deletion add-ons/resources/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Useful resources for converting legacy extensions or for creating Experiments.

| | Description |
| ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Searchfox](https://searchfox.org/) | An online viewer to search the Firefox code base ([_mozilla-central_](https://searchfox.org/mozilla-central/source/)) and the Thunderbird code base ([_comm-central_](https://searchfox.org/comm-central/source/)). |
| [Searchfox](https://searchfox.org/) | An online viewer to search the Firefox code base ([_mozilla-central_](https://github.com/mozilla-firefox/firefox/blob/main/)) and the Thunderbird code base ([_comm-central_](https://github.com/thunderbird/thunderbird-desktop/blob/main/)). |
| [Firefox Source Tree documentation](https://firefox-source-docs.mozilla.org/) | The current Firefox code documentation, which might be needed when converting legacy extensions. |
| [Thunderbird Source Tree documentation](../../thunderbird-development/codebase-overview/) | The current Thunderbird code documentation, in addition to comments in [idl files on comm-central](https://searchfox.org/comm-central/search?q=\&path=\*.idl). This is still work in progress. |
| [Archived XUL and XPCOM Documentation](https://udn.realityripple.com/docs/Mozilla) | <p>The archived Mozilla documentation includes information about internal components and functions used by legacy extensions. Please be aware, that those pages are not maintained and are potentially outdated. Some useful direct links:</p><ul><li><a href="https://udn.realityripple.com/docs/Mozilla/JavaScript_code_modules">Archived JavaScript Code Modules</a></li><li><a href="https://udn.realityripple.com/docs/Archive/Mozilla/XUL">Archived XUL Documentation</a></li><li><a href="https://udn.realityripple.com/docs/Mozilla/Tech/XPCOM/Reference/Interface">Archived XPCOM Interface Reference</a></li></ul> |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ The method to retrieve strings from the created bundle is slightly different, in

### calICalendar.\*

Since Thunderbird 96, [many calendar functions return Promises](https://searchfox.org/comm-central/source/calendar/base/public/calICalendar.idl). This includes:
Since Thunderbird 96, [many calendar functions return Promises](https://github.com/thunderbird/thunderbird-desktop/blob/main/calendar/base/public/calICalendar.idl). This includes:

* `getItem()`
* `addItem()`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ Removed in Thunderbird 115. Can be replaced as follows:
* `OS.Constants.Sys.Name` -> `Services.appinfo.OS`
* `OS.Constants.Path.profileDir` -> `PathUtils.profileDir`
* `OS.Constants.Path.tmpDir`-> `PathUtils.tempDir`
* `OS.File.*` -> [IOUtils.*](https://searchfox.org/comm-central/source/mozilla/dom/chrome-webidl/IOUtils.webidl)
* `OS.Path.*` -> [PathUtils.*](https://searchfox.org/comm-central/source/mozilla/dom/chrome-webidl/PathUtils.webidl)
* `OS.File.*` -> [IOUtils.*](https://github.com/thunderbird/thunderbird-desktop/blob/main/mozilla/dom/chrome-webidl/IOUtils.webidl)
* `OS.Path.*` -> [PathUtils.*](https://github.com/thunderbird/thunderbird-desktop/blob/main/mozilla/dom/chrome-webidl/PathUtils.webidl)

## Changed API

Expand Down
2 changes: 1 addition & 1 deletion add-ons/updating/tb68/changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ In order to use HTML elements in a XUL file, you must load the HTML namespace in
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
```

The following list also includes deprecated elements, which could still be used but Thunderbird has already started to purge their usage. In that case you must update your overlay files which are overlaying such elements, otherwise your overlay will not be applied. Check [SearchFox](https://searchfox.org/comm-central/source) for the current state of the files you are overlaying.
The following list also includes deprecated elements, which could still be used but Thunderbird has already started to purge their usage. In that case you must update your overlay files which are overlaying such elements, otherwise your overlay will not be applied. Check [SearchFox](https://github.com/thunderbird/thunderbird-desktop/blob/main) for the current state of the files you are overlaying.

{% hint style="info" %}
The replacements listed here might work in subtly different ways. Check your functionality!
Expand Down
8 changes: 4 additions & 4 deletions add-ons/updating/tb91/changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,9 +158,9 @@ The levels `Info`, `Trace` and `Log` are actually identical.

Interface has been dropped in favor of an observer based approach. See&#x20;

* [https://searchfox.org/comm-central/source/mail/base/content/msgHdrView.js#379-429](https://searchfox.org/comm-central/source/mail/base/content/msgHdrView.js#379-429)
* [https://searchfox.org/comm-central/source/mail/base/content/msgHdrView.js#277](https://searchfox.org/comm-central/source/mail/base/content/msgHdrView.js#277)
* [https://searchfox.org/comm-central/source/mail/base/content/msgHdrView.js#335](https://searchfox.org/comm-central/source/mail/base/content/msgHdrView.js#335)
* [https://github.com/thunderbird/thunderbird-desktop/blob/main/mail/base/content/msgHdrView.js#379-429](https://github.com/thunderbird/thunderbird-desktop/blob/main/mail/base/content/msgHdrView.js#379-429)
* [https://github.com/thunderbird/thunderbird-desktop/blob/main/mail/base/content/msgHdrView.js#277](https://github.com/thunderbird/thunderbird-desktop/blob/main/mail/base/content/msgHdrView.js#277)
* [https://github.com/thunderbird/thunderbird-desktop/blob/main/mail/base/content/msgHdrView.js#335](https://github.com/thunderbird/thunderbird-desktop/blob/main/mail/base/content/msgHdrView.js#335)

### nsIMsgFolder.listFoldersWithFlags

Expand Down Expand Up @@ -217,5 +217,5 @@ In Thunderbird 91, this is primarily affecting pages belonging to an Add-on, lik
In practical terms, this means that you may need to update your experiments:

* **If you create frames in Thunderbird's UI**, these frames now need the appropriate attributes to load content in the right process. You can find an example of required changes in [the E10S compatibility commit for the CustomUI experiment](https://github.com/rsjtdrjgfuzkfg/thunderbird-experiments/commit/11232201ff437e7bb293efdcb93ecc3963a8328d#diff-41cf834ce8c3fae411d5f4c18abf8c024630074e616cf98307e582cea5362be7).
* **If you exchange raw objects between WebExtension scopes / "child" experiment code and Thunderbird / "parent" experiment code**, you need to migrate to an indirect approach, usually based on explicit message passing. Depending on the complexity of your task, this can either happen through notifyTools, a custom experiment API or through custom experiment code directly using cross-process APIs (likely either [message managers](https://searchfox.org/mozilla-central/source/dom/chrome-webidl/MessageManager.webidl) or [actors](https://firefox-source-docs.mozilla.org/dom/ipc/jsactors.html)).
* **If you exchange raw objects between WebExtension scopes / "child" experiment code and Thunderbird / "parent" experiment code**, you need to migrate to an indirect approach, usually based on explicit message passing. Depending on the complexity of your task, this can either happen through notifyTools, a custom experiment API or through custom experiment code directly using cross-process APIs (likely either [message managers](https://github.com/mozilla-firefox/firefox/blob/main/dom/chrome-webidl/MessageManager.webidl) or [actors](https://firefox-source-docs.mozilla.org/dom/ipc/jsactors.html)).
* As a consequence, **if you load JavaScript modules in "child" experiment code**, you will now get separate instances of the JSM: each process has its own instance, and there could be multiple child processes. If you keep using JSMs from "child" code, you may furthermore need to manually unload these separate instances on API shutdown (`ExtensionAPI.onShutdown`), even if you use a catch-all unloading solution like CachingFix or the WindowListener API.
16 changes: 8 additions & 8 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.

#### **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 comm-release 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### 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
Loading