An inside look at the making of Mozilla Thunderbird, and community-driven conversations with our friends in the open-source software space.
Hey, Thunderbird family. This is Jason. If you're listening to this, you've no doubt realized that our podcast is on a bit of a hiatus. We're still figuring out really the best way to bring it back and the most effective format to use. But to keep the feet alive, here is a lightly edited version of our recent community office hour session.
Jason:Most of the questions that we answered here were about Thunderbird for Android, as well as Exchange Support, which is coming to both the desktop and mobile versions of of Thunderbird. It's a good varied q and a, and I think you'll appreciate what's here. So thank you as always for using Thunderbird. There's so much exciting stuff coming this year, and there's never been a better time to be on this journey with us. Okay.
Jason:Here's the question and answer session. Take care, and take care of each other, and thank you so much for listening. Talk to you soon.
Heather:Welcome, everybody. I see some familiar faces in here from both inside the company and outside. This is the March edition of the community office hours. And so Monica and I and team are going to answer some frequently asked questions that we got at a couple of conferences we were at recently. So we were at Fostem in Brussels at the beginning of February, and then most recently, SCALE.
Heather:Very different attendees, some overlap in questions, and some just common in general for that conference. So, I guess one disclaimer is that we talked a lot about k nine and Thunderbird for Android at these two conferences. So that is where most of the questions and answers are. But if you have any questions, feel free to put them in the chat, and we will make sure to answer them about Android or desktop or any anything Thunderbird. Okay.
Heather:So the first question, will there be exchange support for Android or Thunderbird for Android? The answer is yes. And, one of our well, our engineers that are working on the Rust implementation of Exchange support for Thunderbird desktop are writing it in such a way, using modular and reusable architecting of the Rust libraries for desktop such that we can probably use that in Thunderbird for Android. That's exciting because lots of people need Exchange support. Alex, do you have anything to add to that?
Alex:Yes. Other than servicing ourselves, our goal is also to make these Rust crates, which I think is that's the technical term of, Rust library crate, completely open source available in our GitHub repository, of course, which means that not just desktop or Android can use this, but anyone that needs, I need a Rust crate that works with Microsoft Exchange Office 365. They can use it in their own tools or their own competitor email client if they wanna do it. So, sharing is caring. That's why we're doing this.
Heather:Will Thunderbird add ons be available on Android? There's a rich history of Thunderbird add ons available for desktop. And so it makes sense that people would want to leverage their favorite add ons, in the Android app. The answer is not in the immediate future, but there are ways to support them. If we implement GeckoView, then there's a path to getting some of the add ons to work.
Heather:But I would guess that that's kind of out of scope right now.
Alex:Yeah. Currently, just to give a little background, k nine is its own code base written in Kotlin. We don't build on top of Firefox, like Firefox does their releases for Android and iOS. It's it's better for us. It's easier that way to maintain, separate codebase and have shared libraries, which means that implementing the GECO view is borderline impossible at this stage.
Alex:But add ons are sort of like an implementation agnostic, technology. They use, like, manifest v2, v3. We can implement and support add ons inside any application. The question is, aren't Thunderbird Desktop add ons? Are they even compatible with the way that mobile behaves from a pure, like, user interface or user experience point of view, or just like back end technologies.
Alex:Right now, like all the, Thunderbird add ons are primarily written in JavaScript, which if I'm not wrong, it doesn't run on k nine at all. So, yeah, we definitely want add ons for mobile, but that's something that it's gonna happen much, much later in the future. We don't have a timeline for it, but definitely not in the next year or probably 2.
Heather:A follow-up question would be, if we don't implement GECO VUE, would we maybe consider, having our own have having a new, like, add on space specifically for Thunderbird for Android?
Alex:Yeah. For sure. We are waiting and seeing, as you probably a lot of you know, Firefox just recently enabled the, installation of add ons on, on Android. Now you can, you can use them, extensions. So it's, it's a new thing there as well.
Alex:And we're waiting how it be it behaves. And if they spotted something like crazy downfalls or performance issues or any other, potential problems. We're gonna learn from what they did and see how we can implement it on our end. But definitely after we have a solid thunderbird for Android version that is on par with our competition, and it all has all the features that, right now we're missing by default.
Monica:Yeah. And that's a pretty good segue into the next question. When Thunderbird for Android is ready to be released, what is the upgrade path going to be?
Alex:Yes. So this is gonna be a long winded answer. I'll try to, be short. So we are going to keep k9 and Thunderbird for Android released in parallel. The code base is the same with Material 3.
Alex:We are, we can easily do a theme, a brand switch between the 2 and release 2 completely separate apps. This was done for many reasons. One reason is we have a somewhat substantial, canine user base that they express their desire to keep canine. They like the brand. They don't care about Thunderbird at all.
Alex:So we wanna keep supporting that. The other more technical reason is that Google doesn't like when you have an app ID that says something, and then you suddenly switch an app from one thing to another. So we couldn't do it. And rather than saying at one point, okay, we're gonna stop supporting k nine, now you're forced to switch to Thunderbird for Android, We can very easily, there's no engineering overhead. We can very easily release the same updates, same security updates, same new features on both apps at the same time.
Alex:And we're gonna keep it this way for maybe a year or 2. As I said, there's no engineering override. So it's very easy for us to keep supporting the same, like, 2 different apps at the same time because there's the same code base. Once the maturity level of Thunderbird for Android and k9 is at a point that we're extremely satisfied and we're confident that we see users naturally transitioning towards Thunderbird for Android and seeing the users' adoption growing one point in one side and, diminishing another side, what will prompt canine users to migrate to Thunderbird for Android. And we can do it in 2 ways.
Alex:First of all, the initial step is what we're doing right now now already is implementing, Mozilla accounts, Mozilla sync, which means that if you log in with your sync account in k nine, you sync all your things, then you open Thunderbird for Android, you log in with your sync account, automatically, all your sync data will be reinstalled. So all your accounts, your tags, your settings, all the things that we will support will be there. So the migration path is very frictionless. You don't need any extra tool or any extra things. Another thing that we wanna explore is one tap migrate from k9 to, Thunderbird for Android.
Alex:That really depends on the limitations of the platform, Android. For security reason, one application cannot access the profile of another application, they're containerized and separate, so that's a technical limitation, but hopefully with Mozilla account, we will be able to overcome any of those limitations, and we can offer just a pop up in k nine that says, hey, Thunderbird 400 will be the future. Please transition there. Just tap. If you have installed, we'd automatically log in into your Mozilla account.
Alex:We ask for the password, of course, because we don't know your password, and all your data will be there. So we definitely are trying to find the most frictionless workflow ever to allow you to just transition without losing anything and not even realizing that you switched up other than just a brand change, basically.
Monica:So are the monthly developer updates so where would the best place for people to go if they wanted kind of continual updates on this transition process?
Alex:Yeah. Definitely in our blog, blog. Thunderbird.net, once a month, we release, canine updates. Kari, the previous sole maintainer of, K9 is doing these monthly updates. If you're interested in seeing progress and testing new features early and faster, you can if you're on f droid, you can install the beta.
Alex:You can download the APK, install the beta. If you're on Google Play, you can access the Google Play Store and join the beta channel. We're experimenting and trying to create a alpha channel, a sort of like daily release. But before we do that, we need to improve a little bit. Our release process right now is very manual.
Alex:We wanna automate it a little bit more with CICD and all this good stuff. But, yeah, definitely use the beta. It's very stable for being beta, and you will get exposed to super cool new features earlier than regular users.
Heather:The next question I did hear at both Fostim and Scale, probably more at Fostim. But, will CalDAV and CardDAV be available on Thunderbird for Android? The short answer is probably yes. But the tricky part is deciding how to handle them because, again, Android limitations. They all all Android phones have a calendar and contacts app already.
Heather:So should we use those to integrate them in k9, or do we do our own thing? I think that there's a TBD there. We still need to wait and see. Yeah. Anything to add to that, Alex?
Heather:No? To be fair, those are Alex's words from asking him while I was at scale.
Alex:That's good. No. It's it's interesting to have the these kind of questions because as as developers, but also as user, we kind of assume, okay, you have a phone by default. Everything comes with a calendar and an address book. So why do you want to go through your email application to connect calendars and address book if those, they come by default, especially if you're on, Vanilla, Android, Google.
Alex:Everything is connected to your Gmail. You got your calendar and you got your, your, your contacts all downloaded there, and it's very easy to add extra, extra accounts, extra calendar accounts, or extra, CardApp address book or LDAP address book. So we always focus on the email part. But a lot of users express the desire of, I want to have my workflow, everything inside a single app. We currently, in k nine, we already connect to your Google address book.
Alex:When you're composing an email, we ask permission to access your contacts, so you can get, like, auto complete of your contacts. But some users, they want that completely separate. They want their k nine app with their k nine address book, which is it's interesting, but it it opens up, like, yeah, the the the question of, does it make sense for us to build an entire address book inside k9, or there's a way to leverage the native, address book of, or context of of Android. And Yeah. So open quest and open exploration.
Alex:As soon as we have a direction, or even if we have some doubts, we'll release all these explorations and ideas on our blog post, and you can participate and give us suggestions. If you have expertise in these, it will be great.
Heather:Jason, you have a question or a comment?
Jason:Yeah. As I was listening to Alex explain that, I'm I'm curious if there are privacy advantages to having your, contacts and your your appointments and things outside of Google, like within a Thunderbird ecosystem?
Alex:Oh, definitely. Yeah. We we know for a fact as soon as you connect something to Google, it just, like, ingurgitate everything. It grabs it and stores it into their servers. So if you have your
Jason:yeah. That's what's driving some of those requests. Right?
Alex:Yeah. Definitely. Like, if users, especially, like, if you have a Fastmail account and you have a Fastmail calendar and Fastmail address book, you don't necessarily want to connect those to your Google Calendar or your Android calendar, Android contacts app because that gives Google access to those that data, and you wanna have everything inside your k nine app. So it's it's absolutely legit question. It adds a lot of engineering effort for us, so we need to be careful of what is the best best way to do it.
Alex:We don't wanna offer a subpar experience, so we need to do it right.
Monica:Will the k nine API provide the ability to download the safe preferences that sync will be storing locally to be able to plug in to automation like ants like antsippable. Okay. I'm gonna try and do this answer to Estes. Preferences can already be exported. The sync store is going to be open source and what's going to be synced can be easily checked.
Monica:And needs can be needs. We're not going to put any artificial restrictions on this. The only restriction is that stored data on the server will be encrypted. So without passing through the user authentication token, no one can see what that data is.
Heather:I got this question, at the end of the Thunderbird for Android talk at scale, And the user was asking mostly about, you know, in sync, what if I don't want to export all of my preferences? Like, it sounds great to have, Mozilla sync, you know, export all your preferences and save data and stuff to the Mozilla server. But this person was like, well, I just wanna do it locally so that I can plug it into that automation. So that was just a little bit of the context around what this user wanted. And others, in the audience were like, oh, yeah.
Heather:I really want that.
Alex:Yeah. Absolutely. So to to give some some, overview on the development side of things of how we're, the the first problem that we are facing is that canine has been developed for 10 plus years, completely separate from from Thunderbird. So their way of storing settings or saving settings is completely agnostic to the way that Thunderbird does, is Thunderbird use the same profile mechanism of Firefox. So syncing things between Thunderbird profiles and Thunderbird installations and ex like, the profile folder is a, public folder in your system.
Alex:I personally have my public folder on my local NAS, on my local server, and I connect to it from all my computers. So that profile is it's always backed up to the cloud, my persona Backblaze instance. Creating Ansible automations, exporting the data that you want from the desktop is like a no brainer. You can already do it. We have a built in export settings there, but, yeah, that folder is easily accessible and you can hook up all the things that you want.
Alex:Already, as we are implementing Mozilla account and sync between desktop and mobile, we're facing the problem of, okay, what are we able to sync and how that data needs to be structured in order for us to be digestible for both desktop and mobile because the way that they handle settings is completely different. And that's gonna take us a while. But we are we want to put those 2 in sync, like the same type of profile should, or the same type of data should work in both desktop and mobile. It doesn't matter how the profile is structured. Once we have an answer to that, we're gonna release all our findings in technical documentation, support documentation.
Alex:And once we have something stable that we release on a beta, we definitely gonna start writing support articles on how can you export your profile? How can you hook up your own sync server? How can you automate all this? But, yeah, all the sync server code is fully open source. So you can, yeah, hook it up to any automation tools that you want and and and tweak it and, and sync the data that you want.
Jason:That's awesome. Because I've had a I've had a bunch of people ask if they can host Thunderbird sync or if they can use, like Yeah. You know, companies like Nextcloud, for example, to host there instead. So that's awesome.
Alex:Yeah. Yeah. The we're facing the same challenge, which is funny, like, not to throw a curve ball to the Firefox developers, which are awesome, and we love them so much. But the sync server, it wasn't a really structure from the beginning to be easily adoptable by other software, other application. So it like, in order to set it up for yourself, for your own app, on your own, sorry, it's very convoluted.
Alex:It's not easy. And what we're doing and collaborating closely with them, and they've been, like, incredibly helpful to allow us to do it, is we are changing and we're, upstreaming our changes to the sync server in order to allow us to more easily use it for Thunderbird and consequentially for all the other applications that will be able to use our same approach and our same methodology to, use and set up their sync server on their own. But, yeah, we're facing some challenges because the way that we wanna use it, it wasn't really thought properly when the the initial sync server was was set up. So there are some architecture changes that need to happen.
Monica:Well, thank you. That was a long but extremely helpful answer, and we will get back to do it. But, yeah, we'll switch over to Thunderbird for desktop.
Heather:One question we heard a lot was, when? When are we gonna have native, exchange support in Thunderbird for desktop? And the exciting answer is this will be available in the next DSR. 128 dot o is the next DSR, and it is listed to be released on July 9th. So summertime.
Heather:Yay. And then people won't need to use the paid out on to get that, functionality.
Jason:And they won't need to use Outlook.
Heather:Right. Yeah. I mean, that's how I found out about Thunderbird, like, 15 years ago as I joined a company, and they said, here's your Outlook. And I was like, ah, I don't wanna give me something that works on Linux. Then I found Thunderbird and never left.
Alex:Most likely, what we're currently supporting is gonna be just email for ESR. We don't know if calendar and address book will be supported by default. They can already be supported with an add on, so you can use the default implementation, the default on the birth to use your emails, and then the add on to continue using calendars and address book. We definitely want to support everything, coming from Microsoft, but, code complexity, Microsoft changing things under our feet. Just last week, Microsoft decided to disable normal authentication for all the Hotmail accounts, and they force us to use OAuth, their version of OAuth, not standard OAuth, which is obviously not documented.
Alex:So a lot of, reverse engineering there, a lot of challenges, but the first thing that we want to support is, email, complete email support, solid and stable and, and, and, and good by default. So if for whatever, holy intervention, we're able to do it weekly and then and finish it before ESR, we'll definitely switch to address book and then calendar to support those by default.
Monica:So this one is on the conversations and threaded view. When will this be added to the email client?
Alex:We hate these 2. I don't know. This is gonna turn into another, like, massive technical deep into This is our top priority. It's been our top priority for the past 4 years, I would say. The problem is our database.
Alex:So 20 years ago, when Thunderbird was created, the idea of a database was a very cloudy idea. So, people at that time not to bash them because it was the technology at the time was just pop and you had folders. So the idea was, like, every message belongs to a single folder and that's it. Right? You don't have messages in multiple folders.
Alex:So our database is literally a collection of messages inside a folder. Each message has an ID that is attached to a folder, and we internally like to jokingly call it the non unique unique IDs, which is, terrible for basic architecture. Then, IMAP came along and then, now, the standard and everybody expect that if I send a reply, their reply should be in the same stack of conversation of my received messages, and if there are, it doesn't matter if I look that that thread from the inbox or the sent or the archive folder, I need to see the full thread of my received and sent emails. We cannot do it because every time you send a message, the message goes into the sent folder, and the sent folder assigns that unique ID to the message, then now the message belongs to the sent folder. So we cannot easily grab all the there's not a unique identifier for a thread conversation.
Alex:We can grab it from the server, but we don't really do it. We, Thunderbird never, never did it. And even if we grab it, our our code of how we handle cached messages and our internal database doesn't support that. There was an add on called ConversationView or Thunderbird Conversation that used to work before. The maintainer of that add on decided to not maintain it anymore.
Alex:Since then, we decided to, okay, we need to implement it. We could have done it the way that the add on was doing it by using GlOTA. GlOTA is our internal search indexing, thing. The problem is that it's extremely slow and not performant at all. And so we said rather than try to hack it and make it work, why don't we actually implement a database that it can be called a database and makes sense?
Alex:So when we get a message from the server, the ID of the message is what the server tells us, and it doesn't matter in which folder the message is. We can always reference the thread from the parent ID and having a proper conversation view. Now you might all assume like, you might all guess how easy it is to restructure a 20 years old database, and making sure that we migrate all your local emails into the new database without burning everything to the ground. So it's happening. We hope, should I say this?
Alex:We hope to have the new global message database done before next ESR, before ESR 128. Our end date to make sure that we can do it is May 31st. If after May 31st, we have the global message database, nothing exploded and we're all good, Doing conversation view in the front end, it's very easy because with all the rebuild that we did on the message list, we removed the ZUL tree. We have an HTML, CSS, and JavaScript message list. We can already do it if the data from the messages allow us to, list all the messages.
Alex:So, yeah, database work, rebuilding 20 years old architecture with 20 years old, wrong assumptions of we only have PoP. We don't have any other protocol. So this will work forever. All these beautiful things is absolutely terrible, but we're doing it. And it will happen.
Monica:That's a really great answer about technical debt, trying to, you know, solutions that obviously worked at the time and have held up until now.
Alex:Mhmm.
Monica:But trying to build better and more solidly for the future. So whatever comes after OAuth, we'll be able to adapt to that. So that was really great. That's gonna make a great video, Jason.
Jason:Indeed. And that's yeah, that's something that, that has been it's been tricky to to help people understand is all the back end work that's happening where, you know, it doesn't it doesn't instantly manifest in, like, a visual improvement with a new a new ESR sometimes or a new beta release or whatever. But there's so much that the team is doing behind the scenes to, you know, to fix all that technical debt from the last 20 years. And once they once they get over that big hurdle, it's gonna make it so much easier for us to to more rapidly introduce new features and and improvements. So thank you.
Jason:It's a
Alex:lot of work.
Heather:Yeah. Mhmm.
Jason:We have one more question. Yeah? No. 2 more. Yeah.
Jason:Okay.
Heather:Yeah. We have 2 more questions. And the next question is about adding a full sender name column. So, apparently, there was a popular add on that stopped working with 115. And this add on added a column with the full raw email address of the sender instead of just the provided name.
Heather:That is beneficial because it helps you more easily identify what might be spam or phishing. There's a patch with updates that has had quite a history of activity there to enable this feature. And so I guess the question is, when will this be accepted, or or what are the next steps to get that there?
Alex:It's already available in daily in beta. When it when it landed, just let me check super quickly, so I can tell you. It landed on March 18.
Monica:Yeah. That was like last week?
Alex:Was last week. So, current beta should have it. Otherwise, next beta will be available, or it's available already on daily. John, our add ons, developer primary maintainer created these updated the extension API to support that. So it will 100% be available in next ESR.
Monica:Yeah. We're gonna have some really happy people that someone asked us that at scale, and he's like, I've got a really tricky question. And it was this, and I've been fielding this on social so much. I'm like, gotten I've got an answer for you. Check the fabricator link.
Monica:You can follow the progress. And he's like, that made my day so much better. So I think there's you all have made a lot of people happy, and it'll be great to let people know, hey. Test the beta and see how the this works. Last question is, will there ever be a browser based view of Thunderbird?
Jason:Oof. Mhmm.
Monica:Pretty. Easy question. Come on.
Alex:Webmail. We don't know. Who knows? Maybe in the future. It's not in our plans for now.
Alex:It's not in our road map. So far, the we want the advantage of having, like, a native email client is very easy to use, multiple email accounts, and then being overload agnostic and all these beautiful things, and performance in general. Like, having multiple emails, multiple calendars, multiple address book in a website, that comes with a lot of performance drawbacks that, yeah, they need to be considered a lot. But, yeah, maybe if it becomes, highly requested feature, it's something that we can consider. The problem, we we cannot use Thunderbird code to run-in a browser.
Alex:We will need to build something from scratch, which adds, yeah, a lot of resources to it. So It seems
Heather:like it might be, like, we Thunderbird is built on a browser. So what
Alex:What? Yes. Yes. Technically, yes. It's built on top of Firefox, but Thunderbird uses a lot of all the email protocols are written in c plus plus and Rust.
Alex:There are a lot of low level languages that are needed to guarantee the the speed and perform and things. And also the HTML, C plus plus and JavaScript that runs on top of Firefox, they run actually in a Zuul browser, in a Zuul window That is not just an HTML, an h t a standard HTML window. So, yes. Maybe we could reuse the CSS, but everything else needs to be rebuilt.
Heather:Thank you so much, Alex, for coming to answer all of our hard questions and provide extra details there. I think that they paint the picture well of, you know, some exciting things to look forward to in the next DSR and a general idea of kind of where we're going.