Supporting Exchange and beyond
3 days ago
- #Thunderbird
- #Microsoft Exchange
- #Rust
- Thunderbird's project to support Microsoft Exchange involved building a protocol client in Rust and integrating it with existing C++ code.
- The project required creating infrastructure for asynchronous network operations using Mozilla's XPCOM and Necko networking component.
- An HTTP client abstraction (moz_http::Client) was developed to simplify making web requests, reducing boilerplate compared to raw XPCOM usage.
- Custom XML serialization was implemented via the xml_struct crate to handle EWS SOAP requests efficiently, avoiding high boilerplate.
- The team faced challenges in integrating Rust code with Thunderbird's decades-old codebase, requiring extensive research into existing protocols.
- Email support for EWS was released in Thunderbird 145, marking the first new native protocol in over 20 years.
- Future work includes adding calendar and address book support, and migrating to the Microsoft Graph API due to EWS deprecation.
- Reusability efforts from the EWS project have accelerated Graph API implementation, reducing development time significantly.