I remember removing Thunderbird 2.0 from my computer back in 2007. I had been invited to Gmail three years earlier and, slowly, all of my email communication had switched over to Google’s service. The last blow came when Gmail finally allowed people to check external accounts within Gmail. At that point, I had no reason to keep using Thunderbird 2.0 anymore: although I quite appreciated storing emails on my computer, my workflow was way more efficient with Gmail. The Gmail UI was clearly superior and, to be honest, I was a huge fan of the conversation view.
When I tried early betas of Thunderbird 3, I felt like the much-needed overhaul was finally taking place. However, I still missed the conversation view. Fortunately, thanks to the hard work that took place on the Gloda side, I was able to quickly hack up an extension that did this, and replaced the original Thread Summary with some kind of a conversation view. This extension became known as “Gmail Conversation View”, and gradually became better as I worked my way through arcane interfaces of the mailnews codebase.
The nice folks @Mozilla Messaging have been kind enough to invite me to come over for the summer. The result is a brand-new conversation view that will hopefully satisfy all of you who had been waiting for such a feature. It includes no less than:
- a conversation view that fetches all related messages in all folders,
- inline reply, to quickly reply to an email thread in a streamlined, efficient way (with contacts autocomplete!),
- contact tooltips, with their avatars and links to their various social network profiles if you have “Contacts for Thunderbird” installed,
- a quote detection code that collapses most types of quotations,
- integration with various 3rd-party extensions such as BidiUI or Enigmail,
- partial Bugzilla email threads support,
- and other bonus features.
Some of you may ask: why did it take you so long to build a conversation view? After all, there’s not much to do besides stacking messages together. The answer is threefold:
- stacking messages together is relatively doable, but making sure all the little details such as tags, stars, marking as read, replying, showing remote content, keyboard shortcuts work is much harder;
- some parts of Thunderbird were designed assuming the only place where we display messages is the standard message reader − ugly hooks were required, and some patches to open up stuff had to be pushed to Thunderbird;
- it’s amazing how many features Thunderbird has, and how many situations can set you wrong − a good part of my work consisted in refining the code over and over to make sure it works fine in all edge cases.
Here’s a screencast!
We now offer a preview version that is compatible with Thunderbird 3.3alpha1. It won’t be compatible with Thunderbird 3.1, because only Thunderbird 3.3 has the required support for Thunderbird Conversations. This is a work in progress, and represents a significant rewrite from the Gmail Conversation View 1.1 series. As we have extremely limited resources (I’m doing this on my spare time), support will be scarce. However we have a bugtracker set up on GitHub, where you can report bugs and discuss possible improvements. We have to strike a balance between maintainability and options profusion: we removed options that were there in previous versions, and we believe this is the right thing to do.
Besides the usual warnings about setting your computer on fire, please note that:
- this is a preview release, more features are planned,
- it will not work in earlier versions of Thunderbird, I rely on a set of patches that didn’t make it into 3.1,
- this extension works better when the (awesome) Contacts for Thunderbird addon is installed,
- extensions that extend the regular message reader won’t work, because we’re replacing the old message reader: I’m thinking about the Bugzilla helper and Lightning; however, we have a hook mechanism if these extensions wish to be compatible with us (see hook.js and enigmail.js for an example).
I’ve blogged about the last point, so if you’re an extension developer and wish to interact with the conversation view, come over and ask for API hooks!