Seriously, what makes a great mail client? I've been wondering and I don't think I can come up with an answer with which I'm completely satisfied.
Not too long ago (about a couple of weeks IIRC), I switched from using Thunderbird as my mail client to using Mutt. This is a decision that's raised a few eyebrows amongst my geek friends, though it's also been met with responses like "cool, you're using a proper client, then," with some regularity.
It's considered odd, apparently, to use a command-line client these days, even one as powerful and useable as Mutt (+ postfix and fetchmail) undoubtedly is. Maybe it's because even in Linux circles there's some suspicion of people who choose to use command-line tools when perfectly serviceable GUI ones exist (some people also seem to take it as an offense to nature that I use vim instead of Eclipse+PyDev, or at least gvim, for development work. I'm typing this entry in vim, as it happens, but that's for other reasons that I might cover later on).
I had to think long and hard about making the switch, partly because I was so used to using Thunderbird (or indeed just about any GUI mail client) by that point, and partly because I too felt like going to Mutt would be something of a regression.
I switched away from Thunderbird because it was, for my purposes, too damn slow. Whether that's an issue with my machine or with the client or with the volume of emails I receive I don't know, but whatever the reason I couldn't be doing with having to wait for several seconds every time I wanted to compose a new message. I should just be able to hit ctrl+n and have a new message window at my fingertips.
Another thing that made me switch - and this was one of the big ones, in fact - was the lack of keyboard-only usability in Thunderbird. Maybe this is a programmer thing, but when I use a program I want to be able to get my stuff done without having to take my hand off the keyboard to use the mouse. There are a couple of extensions for Thunderbird (nostalgy and one that makes it gmail-like in terms of keyboard shortcuts), but even so it's not enough (for me, anyway).
The final thing, and the most important one, is searching. Thunderbird offers pretty good searching but it's mouse-driven (again) and doesn't always allow for the kind of search that I sometimes want to do, or at least not quickly. With Mutt, if I want to search, I use its limit function (by hitting the L key) and then enter, as a set of shortcuts and regular expressions, the search criteria. And, so long as I've not got it wrong, I get the results back that I'm after.
So, I hear you ask, if you like Mutt that much, why are you complaining? Well, probably the most trivial issue, is that Mutt isn't straightforward to configure. Well, it's straightforward, but it's not simple (or perhaps simple but not straightforward). By this I mean that in order to get it doing what I want it to do I have to alter the .muttrc file in my ~. To get procmail to filter things the way I want I need to create a .procmailrc and to get fetchmail to fetch my mail I need to create a .fetchmailrc (though Mutt does support POP and IMAP natively I choose to use Fetchmail and Procmail to do filtering. Also, there's a pretty decent config utility for fetchmail called fetchmailconf). I need to learn the configure options, tweak them, make them do what I want. Of course, that's just the way these things work and I'm very happy with Mutt for doing what I want it to do; it's just taken rather longer than I would have liked to get it to this stage. It would be nice, from a user perspective, to be able to user something like fetchmail conf not just for fetchmail bug also for procmail and Mutt. Of course, this being the lazyweb, someone is going to read this and tell me that such tools exist, I'm sure.
Once again I'm left with an idea for a project. Or rather two projects. Well, two possibly mutually exclusive projects (from the point of view of a one-man show):
- Create a tool that does mutt / fetchmail / procmail configuration simply (for a given value of simply), so that people don't have to learn quite so much to be able to use Mutt (though learning a lot isn't a bad thing; I'm talking about increasing productivity here).
- Create a mail client that is simpler to configure than, but still contains the power of, Mutt. To make it more accessible to people, it would probably have to be a GUI app, or at least offer a GUI option.
Actually, what I really think we need is an app that does for desktop mail clients what GMail did for webmail clients. Make email something that you don't have to think about; you just read it, respond to it (if necessary) then archive it (or delete it). Build into that something akin to Mutt's search capabilities, integration with OpenPGP for encryption and signing and perhaps you'd be getting close to my ideal desktop mail client.
As long as I could have my keyboard navigation, of course.