The goal of this repository is to provide useful information, code snippets, examples, scripts, APIs and tools to add-on developers in order to better "weather" the transition to the new extension structure of Thunderbird 78: MailExtensions.
- Introduction to MailExtensions, WebExtension APIs and Experiments
- Converting legacy add-ons to MailExtensions
To get started with MailExtensions, we suggest to read our Thunderbird MailExtension guide first. You will learn, how MailExtensions use a set of well-defined APIs (called WebExtension APIs), which will be mostly stable, even if the underlying Thunderbird code base is changed. In the past, these internal changes have led to heavy add-on breakages on each new Thunderbird release and the WebExtension API approach aims to minimize that.
You will also learn, that the current set of available WebExtension APIs is far from being complete. Many aspects of Thunderbird which are of interest for add-ons, cannot be accessed by them. To overcome this limitation, add-on developers can write Experiment APIs, which have direct access to internal Thunderbird functions and components and can make them available to MailExtensions.
The different methods to update legacy add-ons to MailExtensions are covered in our Thunderbird add-on update guide. You will learn, that they can be converted by removing all legacy parts at once, or step-by-step by using two special wrapper Experiment APIs. To simplify the add-on conversion process, this repository includes the following resources:
Description | |
---|---|
WindowListener API BootstrapLoader API | Wrapper Experiment APIs to simplify the process to update legacy add-ons to MailExtensions. |
Update Tutorials | Updating add-ons using the wrapper APIs should only be the first step. We encourage add-on developers to continue the update process to pure MailExtensions, following the listed tutorials. These tutorials are each designed to be completed in a short amount of time, to get the legacy components out piece by piece. |
Scripts | Scripts used by conversion steps after the initial update using the wrapper APIs. |
Tools | Tools to help developers update their add-ons more easily. |