For years, I was in love with Mail.app. I even praised its glory in a previous entry about Mail and Mailsmith. Today, I can now officially announce our (putative) break-up. It is a break-up full of hope but also of anxiety. Here is why.

For months now, I had been promising myself I would clean my Mail folder, which was dangerously filled with a little over 5,000 messages. Of course, since I systematically delete attachments (they get stored somewhere else), remove useless emails (WHOIS data confirmation anyone?) and almost never receive an HTML email, I had feelings my mailboxes should be pretty manageable.

Truth is, I was wrong. Today, Mail went postal (hmm, do I chalk up that one as a bad pun or coincidental wording?) on me. Deleting a message would make it reappear. Moving anything would duplicate it. Corruption crept everywhere, in subtle ways. Nothing was really reproducible but nothing was totally random either. In other words, hell.

Now, I run frequent backups of my messages and I dump them to an SQL database, meaning today’s events didn’t affect my workflow in the least. I can’t however bring myself to reset and repeat, as I have already done twice.

Now, don’t get me wrong, I believe the people working on Mail do a great work. The ground interface is outstanding (even though we may disagree on toolbar icons and flag notifications), the application is filled with nice touches and its junk filter is second to none. Yet, unless it is reliable, it is of no use to me.

Let’s take an example. In your ~/Library/Mail folder, you will see an Envelope Index file. What’s it? An SQLite database to speed up searches. It also maintains its little journal (but not on all my machines, for some reason). Then, you have the actual Mailbox structure, using one file per message — but not quite, since some are “partial”, other messages seem spread over multiple files. Searches rely on both that small database and the large Spotlight framework which, of course, is not without its share of outstanding bugs. But wait, your message are also processed by plist files for rules, ordering settings, open attachments… Throw in the fact migration from older versions does not really remove old files (or label them properly), add the fact Mail has trouble dealing with multiple accounts consistently (there are two sub-inboxes but one main trash and two sub-trashes, no matter how you go about creating the accounts) and maintains yet another database (and corresponding backup!) for its junk filter. This, needless to say, wouldn’t be complete without the transplanted Mail folders in the Caches folder, the signatures stored as web archives and the ability to dynamically load “bundles” at startup. Oh, and did I mention WebKit dependencies?

Now, many things here are good. SQLite? Neat. Individual files for each message? Outstanding. Labeled folder structure? Required. But why the endless backups, inconsistent updates and deletions, gazillion caches, surprise plist files and empty (but required!) folders? Why, oh, why?

In fact, a smart mailbox is, in itself a work of art. These aren’t mailboxes, they are plist files in disguise (which, indeed, is very logical). Now, have a look at these files: see how many GUIDs, trees and options they contain? Imagine how many queries Mail must run and how many lines have to be parsed if you maintain five or so smart mailboxes that poll a sizable mail folder?

To me, Mail’s facade is the best of all Mac OS X applications out there. The way it thinks about mails, the way organizes them. But looking into its Mail folder just shows how it has evolved and, more importantly, how dramatically it did, with no signs of slowing down. Too much in too little time, really. For example, should a crucial application like an email client rely on the first version of system-wide frameworks (I’m thinking Spotlight here)? Should an application take it upon itself to create an SSL-capable account automatically upon first startup without turning SSL on and without giving the user a chance to stop sending the password in the clear (.Mac indeed)?

Of course, the easy way out is to say Mail was intended for “personal” use. But even my subscription to the “French Cooking for Simpletons” mailing list deserves to be treated well. After all, our “personal” lives matter as much as our “professional” ones. A “personal life” is made of banking statements, tax returns, doctor appointments, school meetings and hot dates. And would “TLM v2 Authentication” be built into an application that is intended “for personal use”?

Again, I have no intention to be hard on the Mail development team. These people have managed many an incredible thing and pushed the envelope for mail clients — which, considering Mail.app is “free” (notice the quotes) is outstanding on their part.The results however, are not there, maybe because of time, staff or budgetary constraints. We shall probably never know.

Mail on the Mac is an interesting affair indeed…

Just a note: this is an “Opinion” piece within the MacDevCenter blog, not an article.

Thanks for reading! — FJ