Sporting Wood for Alpine

Sam Hart

2007-05-17 17:36:37

Friends and regular readers of this site know I have had numerous and continual problems with email. Part of it is that spam is such a prevalent problem (and has caused me to create several
iterations of an anti-spam system).

Another part has always been the email clients themselves. I've tried everything, but it's been very hard to fit my needs exactly.

Sam : A Pre-History

Before I begin, I should give you a bit of an explanation of where I'm coming from with respect to computing. When I was very young, the first computer I ever got was an Atari 400. On that system I taught myself the basics of computing. I learned elementary C, some Assembly, and became very proficient at writing spaghetti code.

Later on, my first real computer ran CP/M. I was someone who was anti-Microsoft right from the start, so it was natural I'd choose CP/M for my home system (note that I was likely younger than 9 or so when I made this decision... which can probably explain my lingering hang-ups with MS).

On CP/M I learned more real programming. I forget the editor that came standard with the dev tools that I used, but it reminded me a lot of the text-mode version of Word Perfect that later came out.

What's important is that I "cut my teeth" so to speak on editors that didn't require you to learn complicated keyboard gymnastics. Every editor feature was available in some sort of on-screen display that was either omnipresent in the interface, or could be called up easily with some sort of on-screen help.

Enter Unix

Sometime in the late-80s/early-90s I was introduced to Unix. It was here I was also, unfortunately, introduced to the *nix staples of Vi and Emacs. At first, Emacs was the closest thing to what I had used previously, so I used it. I largely ignored the Vi vs Emacs wars and continued on my own little way.

Fuck Unix, Enter Linux

In the mid-90s I was introduced to Linux. I was actually introduced to it accidentally (I had been using it for at least a year, but had no idea it wasn't just another Unix) and found out very quickly that I could run it on my home system. It wasn't long before I had it running on my IBM Aptiva and using it as my primary operating system.

Soon I was developing my own Free-Software code, and had begun to find Emacs cumbersome. Everyone was raving about Vi/Vim, so I decided to give it a shot. It was difficult at first, but with significant effort I became not only proficient at it, I considered myself something of a Vi/Vim expert. I was the guy everyone asked Vi/Vim questions to on the local LUG mailing list.


Around this time, I was also using Pine as my primary email client. You can see it in one of my earliest screenshots, and can see I used it as recently as 2003. I primarily was using Pine because it was what my job had standardized on. However, over time, I started appreciating what Pine offered me:

Unfortunately, there was a problem: Pine was not Free Software. It wasn't even Open Source software. It had all sorts of legal restrictions placed on it that made it cumbersome to utilize in Linux distros.

Mutt and Vim

It wasn't long before the legal issues with Pine drove me away from it. And what did they drive me too? Why, Mutt of course. Mutt has a mantra that was originally uttered by Mutt's creator in 1995(ish):
All mail clients suck. This one just sucks less.

Well, those words made me have high hopes for Mutt. They also were the reason I could overlook the problems with Mutt for so long.

At this point I was using Vim and Mutt on a daily basis. I was working at Progeny by now, and spent a good portion of my day using them.

The Problems with Mutt/Vim/Emacs/etc

I slowly became aware of some real problems with each of these staples of modern Linux life. It took me several years before I could really put my finger on what the problems were other than just saying "they all suck", but the basic problems they ALL have are as follows:

Keyboard Gymnastics and Arcana

The most obvious problem they all have is they all require keyboard gymnastics (e.g., jumping all over the keyboard, sometimes pressing multiple keys, to issue commands) and arcana (e.g., performing incomprehensible commands and keystrokes just to do basic things). For example:

These are just a few examples. If I really wanted to, I could easily fill pages with more, but you should already get the picture. Each of these tools have excessive and unnecessary keyboard gymnastics accompanied by mystical and confusing commands and usages.

The Spoon Isn't There

The next big problem, and a more subtle one, is that each of these tools turn the concept of what these utilities are supposed to do on their head. Rather than tools that meet your needs, you wind up having to change yourself to meet the needs of the tools.

Put someone who's never used a text-editor before in front of Pico or Nano and they will be able to figure out quickly what they need to do in order to edit and save a file. Put that same person in front of Vi and they will only be able to start editing if they accidentally enter insert mode (and even then, they'll wonder if their "I" key is broken). In Emacs they will probably make it a bit further, but will become utterly confused when it comes time to actually save the file.

As for email clients, when most people sit down in front of an email client they expect some sort of menu interface, at least somewhere. I know the old argument that you should start out in your INBOX because most of the time that's where your going anyway, so why do we even need a menu? But by that logic you should also get rid of the left turn signal in your car just because the vast majority of your turns will be right ones.

The Cult of Mutt/Vim/Emacs/etc

Perhaps the last, and by far the most subtle, problem with these tools is that they require so much of you in order to use them, that you wind up having to become indoctrinated in their culture in order to efficiently use them.

How many of you who consider yourself "Vim users" use it "as is" without adding any macros or tweaking the way it works by default? I'd wager not many. In fact, I'd wager you have to spend a good portion of time to get Vim "just right" so that you can feel as though your coding is more streamlined.

The same observation can be made for each of the other tools.

When I was using Mutt, I was constantly tweaking and re-tweaking Mutt. A command wouldn't feel natural to me, and since I had no on-screen help for the commands without having to go into a full-blown help system, I would have to re-tweak it. Oh fudge, but now that re-tweaked command conflicts with something else. Okay, I guess I'll tweak that too. Drat! That conflicted with another command!

Before long, you get sucked into an endless cycle of tweaking and re-tweaking the utility to try and catch some ever changing ideal. Sure, using Vim can shave off an hour of work per week, but when I spend two hours per week tweaking it, have I really saved any time?

This is what I mean by saying in order to use these tools efficiently you must be indoctrinated into the cult of the tool. You have to be able to recite the same tired cult mantras about how efficient Vim/Emacs/Mutt/etc make you, and you have to be able to earnestly believe them.

Cult Elitism

The biggest problem that the previous items cause is that once you're completely indoctrinated in the Mutt/Vim/Emacs/etc cult, you have a tendency to look down on others who aren't in your cult. This is readily apparent by the fact that the Vim vs Emacs war is still raged daily, and is probably more vehement than ever. This is also apparent by the fact that Vim/Emacs people tend to disregard non-Vim/Emacs editors as non-editors (Nano is usually the brunt of a lot of this prejudice), and people who use them are seen as novice.

Emerging from Darkness....

Eventually, you either have to give yourself over to the cult entirely or see it for what it is and get out. In the case of Vim and Mutt, I chose the latter. With Vim, I had several easy escape routes as there's a plethora of fine editors in Linux. With Mutt, on the other hand, I had scant few choices.

Sure, there's all manner of GUI email clients, but in addition to any other problems they may have they fail one basic requirement: a CLI/text-mode that I can access from anywhere.

As for CLI/text-mode clients, most out there are either too immature, or just wind up mimicking Mutt.

The end result is that I've spent a lot of time fiddling around with various clients. Eventually, I just gave up and used Gmail (much as I hate Google) since it provided the basic things I needed, and had reasonable enough spam-filters (plus, my Gmail addy wasn't used anywhere and thus hadn't been fed to any spam-bots).

Pining for Pine

The unfortunate thing is that all these years I've really missed Pine. Pine was the only email client that didn't "piss me off" when I used it. I only stopped using it because it wasn't easily available in my distro of choice (Debian) due to its ornery licensing.

Pine could handle the scads of email I got without choking, it could handle filtration without requiring me to go and edit a procmail recipe, and its interface was reasonable and clear.

Enter Alpine

In 2005, the Alpine project was born. From the Alpine website:
Why Alpine? The Pine Team wanted to reorganize the very mature Pine source code, distribute the Web version that has been very popular here at the Univerity of Washington, and relax our trademark obligation for source code quality control to a world-wide customer base.

Unfortunately, I didn't hear about any of this. Alpine quietly was introduced into Debian, and slowly worked its way up to a 0.99 release.

Then, just a few months ago, in yet another fit of "Why does Email have to suck so much?" exploration, I discovered Alpine as I was looking up what ever happened to Pine. I've installed it, and now use it daily. I've also used it to simplify my previously overly complex mail system, something that I really couldn't do when I was using Mutt.

Anyway, I must say that I am very impressed with Alpine. It seems to be everything I remembered Pine was, and more. There's some new really neat features, and seems to be easily as configurable as Mutt (all without requiring me to edit some obscure rc file).

So, if you've come to the same conclusions I have about Mutt, Vim, Emacs, and their ilk, and are looking for a low-ceremony email client, I'd recommend checking out Alpine. You may be just as surprised as I am, and you may find your new email client.