Previous    |   Up   |    Next

Goodbye, Thunderbird!

Original title: [REDACTED], Thunderbird!

My linux distro of choice went ahead and upgraded Thunderbird from the getting-weird-but-still-usable 102 to the outright-batshit-bonkers version 115.

The interface changed underneath me, with three (or was it four?) toolbars on the top, extra toolbars above the folder view, “Unified Folders” turned back on, etc. etc. Additionally, the interface got slower yet again.. or was it my brain having to work overtime to orient itself in the new UI?

I don’t care for the cutesy icons, configuration wizards and cartoon artwork, really. I don’t know who Mozilla think their target market is, but it clearly isn’t me: a GNU/Linux user for over 20 years, with a thunderbird profile going back to 2012. Clearly they can just experiment randomly with cutesy changes and count on me always sticking around. Not anymore.

In my opinion, UIs in established software systems should not change, unless the changes express deep underlying changes in the data model. As far as I’m concerned, the data model and interaction patterns of freaking email clients have not changed for the last 20 years.

I’ve been seeing more and more people getting nostalgic for the brutalist aesthetic of windows 95/98/2000, because it was really the last era when software looked like software, and didn’t shift around between versions like a protean monster.

Similarly, I find myself agreeing with the sentiment that Office 2003 was the pinnacle of “office suite” UX. Sadly, in the past ~15 years, we’ve gotten on some kind of perverted slide downwards, with absolutely irresponsible children at the wheel of flagship software projects.

Anyway, this is about Thunderbird 115.

I’ve been wanting to get off of Thunderbird for a while now, and the impulse has gotten stronger ever since they reactivated development. With version 115, I decided to bite the bullet and go back to the “office 2003” of Linux mail clients — Sylpheed.

Getting out of the blue bird cage

The main problem with leaving Thunderbird is the lack of a one-stop export mechanism that would allow one to get all their stuff out of the thunderbird profile in an interoperable format, like MH. There is a plugin called ImportExportToolsNG, which I found to be hard to use in the past. I decided to buckle down and use it to export my email archive, dating back to 2012.

But guess what! The plugin doesn’t work with Thunderbird 115!

Okay, so let’s say you want to downgrade Thunderbird to 102 to use the export tool. Guess what! Your profile was upgraded to a new, backwards-incompatible format! You are left with no recourse but to use the newest thunderbird if you want to access your own data, on your own machine. F-YOU, dear user!

Additionally, there’s no way to simply export your Address Book anymore. Whereas it was still possible to perform a big dump of vCARDs from Thunderbird 102, the newest version only offers some kind of .ZIP export wizard (with cutesy cartoons, of course), but the wizard kindly informed me that my 8GB profile is too large and that I should back it up myself. Again, a big F-YOU to the user.

It looks to me like the developers really don’t want to let me export my own personal email archive.

Breaking out: Emails

I decided to leverage the protocol route to move my emails out. The solution was rather simple:

  1. Install Dovecot
  2. Get a basic config in place (one file suffices, see below)
  3. Connect to the server using your local unix username & password
  4. Create folders on your new, local IMAP server, then move all emails into them
  5. Load up the emails in a new client (Sylpheed)
  6. Shut down local email server
  7. Uninstall Dovecot
# /etc/dovecot/dovecot.conf
auth_debug = yes
log_path = /dev/stderr
disable_plaintext_auth = no
## Set this to point to your `_dovecot` user's gid
## Your dovecot user might be named differently, check
## /etc/passwd
first_valid_uid = 984

passdb {
  driver = pam

userdb {
  driver = passwd
  args = blocking=no
  override_fields = uid=_dovecot gid=_dovecot


namespace {
  inbox = yes
  separator = /

With the above config, you can run dovecot in the foreground in a terminal with the command sudo dovecot -F. All emails will be stored in /home/mail, so be sure to create the directory, and then remove it once the data is safely transferred over.

Breaking out: Addresses

Given it’s become exceedingly difficult to get a standards-compatible dump out of your address book, I decided to extract the raw data out of the thunderbird profile’s sqlite database.

This method only extracts the actual email addresses, along with their display name, so if you have more important info in your address book, you’ll have to adjust the script.

# This is a bash script
sqlite3 -csv ./history.sqlite "select p.card,, p.value from properties as p where ('PrimaryEmail' or'DisplayName') and p.card = p.card order by p.card"  > contacts
grep PrimaryEmail contacts | sort > emails.csv
grep DisplayName contacts | sort > names.csv
join -j 1 -a 1 -t, emails.csv names.csv  > import.csv

Rinse and repeat for ./abook.sqlite to include both automatically collected addresses and those you inserted manually.

Sylpheed’s Import CSV dialog lets you pick and choose the fields you want to include from the CSV, so the rest should be easy to figure out.

Screenshot of Sylpheed's import dialog, with CSV fields ""
and "John Smith" selected, and corresponding to Address Book Fields "Display
Name" and "E-Mail Address"'

Summing up

It feels good to be out of the thunderbirdcage after 11 years of ups and downs. Frankly, it’s been mostly Stockholm Syndrome in recent years.

I hope the Thunderbird dev team eventually comes around and returns to the roots of what made Firefox the dominant browser once upon a time: a snappy, stable UI, no frills, and actually caring about their userbase, instead of continuing down the path of addding UX bloat and hipness-signaling with cutesy cartoons.

Meanwhile, I’m back to using the same email client I used on my Slackware box in 2002, and it looks and feels exactly the same as it did then. That’s UX.

Previous    |   Up   |    Next