Showing results for 
Show  only  | Search instead for 
Did you mean: 

Thunderbird Extensions

Making moves

As someone who has been in the technology business for a very long time, I am very puzzled by Mozilla's attitude towards Thunderbird extensions and in particular their developers. It seems to be very insular at best and arrogant at worst.

One of the beauties and advantages of Thunderbird is its extensive list of extensions and the army of volunteers who  develope them. To deliberately create a discontinuity and then not also provide information and help to that army is unconscionable and disappointing.

Providing a way around such discontinuities is or ought to be part of a "professional" development effort.



Hey Rob, I'm sorry you feel that way. We have various members of the team now dedicated to helping create new APIs for extensions and engage with the add-on developer community. There is quite comprehensive documentation available for them here:

We also have a team who can work directly with add-on developers to update their add-ons.

The change from legacy extensions to the modern MailExtensions was painful, and was not handled correctly when Thunderbird underwent that change. The primary reason it went so poorly is because the project had little money and staff to oversee that change-over, and volunteers were too limited on time to help out at the level that was needed. Since then, donations to the project have allowed us to hire staff who document how to update add-ons and engage with add-on developers in that effort. If you know of add-on developers who need help, please let me know. (I'm the Thunderbird Product Manager).

Hello, i use experiment apis because there is no proper documentation.
For example, "permissions" are very poorly described. 
I still don't understand how to figure out what permissions I need.

I use next events:
window.addEventListener("load",()=>{/*mycode*/}, true);
document.getElementById("messagepane").addEventListener("DOMContentLoaded",()=>{/*mycode*/}, true);
document.getElementById("folderTree").addEventListener("select",()=>{/*mycode*/}, true);
MailServices.mailSession.AddFolderListener({onMessageAdded:()=>{/*mycode*/}}, Ci.nsIFolderListener.added);
gDbService.registerPendingListener(msgHdr.folder, {onHdrPropertyChanged:()=>{/*mycode*/}});}

And i add my buttons to interface elements:


How i can do this in MailExtensions without experiment_apis?