email-fail
Sometimes the unix way is pain and suffering.
Description
I've had a good experience with email exactly once. But it had a fatal flaw.
I struggle with email
The more time passes, the more I struggle with email. My inbox grows faster than I can deal with it. Mostly spam I never signed up for, emails that are irrelevant after a few days, or emails where I already know everything I need to know from glancing at the subject. And worse: the more time passes, the less patience and focus I seem to have for dealing with useless emails.
I have always been on the lookout for a way to actually make email work better for me. One day, when I heard about an email system called notmuch that could handle a million emails quickly and without slowing down. I decided to try it out!
A Golden Age, of a kind
The notmuch interface that I tried is actually embedded inside Emacs. It gives you nothing but a search bar. Instead of an inbox, you add a set of default searches to the start screen. Each default search you add gets a button and a count of how many emails match the query.
The key insight is that you should only see emails you are looking for!
By comparison, webmail shows you an inbox with everything, and you have to sort email out with rules. I find it easier to describe what I want than what I don't want.
Webmail is also painfully slow, requiring internet. I've also not seen a webmail client that expresses batch operations well.
The default mode of notmuch is batch mode! You can trivially do every operation on thousands of emails (if you need to, and I have in practice). notmuch even has a handy scripting interface, for using queries to apply tags automatically. Filters, but way better and more expressive when used sparingly.
It was amazing, but sadly it was not fated to last.
The Fatal Flaw
I have lied a little. notmuch is not an email client. It only does mail indexing. The client was an Emacs package. Furthermore, notmuch does not fetch email.
Following the Unix Philosophy, it does 1 thing and 1 thing ridiculously well: index & tag emails.
This is beautiful. But it is also painful.
The Unix philosophy works well for APIs, for command line tools, but I don't think it works for email. At least not for me. I want a flexible email experience, but I don't want to engineer my emails.
notmuch, offlineimap, Emacs, and notmuch-emacs each have complex installation, configuration, and maintenance!
These are the tools for making a great email client, they are not a great email client.
And worse, you have to do it again for a different machine! And set up yet another utility to sync your tags between machines.
Our non-techie friends deserve an email experience that is just as fast and flexible as what notmuch affords. This is my plea that someone will manage to take these tools and package them all together in a way that is even easier to set up than Thunderbird.
At least for me, the "Unix way" of handling email is worse-is-better in disguise. And worse isn't better for me. It feels like we need to gather all of these amazing open source developers in one room to make something cohesive, and I wish I had the money or power or charisma to make that happen.
Closing Notes
I am writing this after trying to use aerc for [sourcehut's git send-email workflow]. It kinda does what I hoped for: it syncs email, has an inbox, and composition view. It really does feel like a wrapper that manages the same underlying primitives mentioned above.
Unfortunately, aerc emulates the interface of webmail in the terminal. For me, this has the same workflow and focus problems. I also found it a bit janky in practice. The hotkey choices feel unintuitive (I know they are configurable), and I kept having issues where it would fail to send an email and seemingly discard the message I had just composed. There were also holes in the documentation (that I might send some patches for if I can figure out how to send emails with git).
I may try neomutt next, but I honestly want something slightly more than a terminal. A lot of mostly text user interfaces need just a bit more, and Emacs gets the balance just right focusing on textbut giving you just a bit more. Unfortunately, Emacs can feel as heavy as an electron application!