I am pleased to announce that, unless something crazy happens, the next Daily will use more than one process. This builds on the work to make Firefox multi-process capable (AKA the Electrolysis project) and is the result of my work over the last few months.
Don't get too excited… this is more about enabling potential
improvements in the future than noticeable improvements now.
Users should not notice any changes. This change is
entirely in the background and shouldn't make any difference to
what the user interface does.
This won't affect most of what developers are working on. However if you need to do something with the contents of a web page, your life just became more complicated. You'll need to reach across the process boundary, probably using actors. This may seem complicated compared to using contentDocument etc. but is pretty easy once you get the hang of it. The Firefox docs have some good information or you can ask me for help.
The same applies to tests looking at the content of web pages. In most cases, SpecialPowers.spawn will be all you need.
When loading or changing URLs in a <browser>
element, please use MailE10SUtils.loadURI.
This will handle the transition between parent and child
processes, if necessary.
One other thing to note is that the "content" tab type has
changed. Where once you would open a content tab and specify how
clicks on links in that tab should behave, this now happens
automatically. By default links to URLs on the same website will
open in Thunderbird and all others in an external browser, but
you can make this more restrictive (only URLs on the same page)
or less restrictive (any URLs). See the JSDoc on specialTabs.contentTabType.openTab for
You might notice some changes, depending on what your extension
I've just landed the changes. They'll be in the next
Daily build. Unless something serious happens, I expect they
will be in 86 beta 1 next week, and then in 2021's ESR.
If you must, yes, technically it will be possible to return to
using a single process. However, it's not possible to run our
automated testing on both single-process and multi-process
Thunderbird at the same time, so the default will be
The preferences to change are browser.tabs.remote.autostart
Set them to false to go back to single-process.
While the changes I've made today don't do a lot, it does bring us a lot closer to what Firefox does so we can take advantage of what they have been working on for the last few years. (It also means there should be fewer problems caused by the differences between our code and theirs.)
I haven't really looked into what could now be possible, but
theoretically it should allow us to move things out of the main
process for performance and security advantages. For example,
loading network calendars or CardDAV address books should be
possible in a child process. Potentially we could move mail
operations to another process (don't hold your breath).
Report bugs as per usual, and if you're convinced today's changes are the cause, mark as regressed by bug 1646648. If you're not convinced of the cause but suspicious, CC/NI me and ask.