Many users know Thunderbird to be one of the best email clients for Linux, and rightly so. It has been around since 2003, consistently coping with changes in the Internet mail standards and other trends in the electronic mail world.
Continuing on that lineage, Thunderbird is now stepping into a new chapter, with Rust powering it all. Let's see what's going on.
Thunderbird and Rust: A Good Pairing?
Thunderbird is all set to provide native support for Microsoft Exchange via the Exchange Web Services API (EWS).
Doing so will most likely end the need for a paid add-on such as Owl for Exchange, which happens to be one of the popular ways of using Exchange with Thunderbird.
Native support for Exchange is being made possible with the use of Rust. But, seeing that Thunderbird features a lot of old code that dates back to the days of Netscape Communicator, the developers have had to improvise a lot.
Why go with Rust?
The developers went with Rust because they wanted something powerful to develop complex features quickly, with long-term maintenance in mind. Rust provides advantages such as memory safety, robust performance, and a modular nature that is supported by a vast ecosystem of users.
There's also things like the shared CI infrastructure with Firefox that supports Rust, a set of powerful tools, support for a wide variety of platforms, and the ability to create modular crates that enable code reusability.
However, the transition has not been smooth.
Thanks to Thunderbird's huge codebase, a lot of existing code doesn't play nice with Rust. Take, for instance, the build system, which had to be given a tweak where Thunderbird would define its workspace and add its config to mach, Mozilla's upstream build tool.
Then there's XPCOM, for which Thunderbirds' developers had to implement a bridge to get it working with Rust.
As to how they intend to implement Exchange support, they are banking on using the Necko networking component found on Firefox. But, that is written in C++.
They implemented two key things to overcome the compatibility issues. First, they added support for a native Rust async/await syntax, and the second is that they added an idiomatic HTTP API to take care of the creation of XPCOM objects and Rustic error handling.
There are a few more things that they did, but I am skipping over those to keep things concise.
After going through the above, naturally, one question comes to mind.
When will Thunderbird feature support for Microsoft Exchange?
In the upcoming ESR release of Thunderbird, which is scheduled to be released in July 2024. As this is a big undertaking, the developers are only implementing native Exchange support for email, with calendar and address book support arriving later.
If you have any further questions regarding this, you can refer to the announcement blog.
There's also a community interaction taking place for the Rust endeavor on Thunderbird. You can refer to the official details on when they share more details through video chat/stream.
Suggested Read 📖
Here's why you should opt for It's FOSS Plus Membership
- Even the biggest players in the Linux world don't care about desktop Linux users. We do.
- We don't put content behind paywall. Your support keeps it open for everyone. Think of it like 'pay it forward'.
- Don't like ads? With the Plus membership, you get an ad-free reading experience.
- When millions of AI-generated content is being published daily, you read and learn from real human Linux users.
- It costs just $2 a month, less than the cost of your favorite burger.