Google's conventional e-mail client for Android has always felt like a second-class citizen compared to the company's GMail application. It has a very limited user interface, lacks basic features like support for moving messages between folders, and isn't particularly reliable. Google has been slow to address the program's weaknesses and doesn't seem to notice most of the complaints.

Fortunately, there is a good third-party fork called K-9. It's not particularly pretty, but it's highly functional and well-maintained. K-9 is based on Google's original Android mail client and is similarly distributed under the open source Apache license, but it's got a whole pile of additional features.

K-9 supports IMAP IDLE for push messaging. It also gives the user fine-grained control over push and polling message retrieval behavior, with various configuration options that can be set per account and per folder. It also gives you a bit more control over notifications, including the option to have a separate notification tone for each account. You can also configure a "quiet time" range during which you don't want any intrusive notifications.

The K-9 message list view is a lot more sophisticated and configurable than that of the default mail client. You can, for example, configure it to show a short excerpt of the message text. You can also hide the selection checkboxes and the star icon that is used to mark favorite messages. When the checkbox is hidden, you can still select a message for a batch operation by dragging it to the right in the list view—making the checkbox appear temporarily.

You can individually adjust the font size of many different user interface elements across the account list, folder lists, message lists, and the messages themselves. There are also several different options for the date format that shows up in the message views. K-9 has two different "themes" which basically allow the user to choose between a light color scheme and a dark color scheme.

K-9 offers a rich set of sorting options that you can use to control how items are ordered in the message list. For example, you can have it organize messages by sender or sort so that unread items show up at the top. Another nice advantage of K-9 is its built-in search feature, which can be accessed by hitting the physical search button on your Android device. Search queries appear to match against message text in addition to subject and sender fields.

There are a number of much-needed message management features in K-9 that aren't supported in Google's client. You can move or copy messages to other folders, filter to find other messages from a particular sender, or flag a message as spam to have it moved to the spam folder that you have configured for the account. The message view in K-9 is also a bit more functional. For example, it has an option that will let you view the full header for a message.

In addition to the excellent feature set, K-9 also has superior performance compared to the default mail client. It seems to handle IMAP message loading more efficiently and doesn't exhibit the kind of responsiveness issues I had with Google's e-mail client.

Although K-9 fills almost all of the gaps in Android's native e-mail functionality, there is still room for improvement. Its most notable weakness is its lack of support for message threading. It doesn't provide a way to group related messages into conversations.

Conclusion

The general mediocrity of Google's first-party Android applications continues to disappoint us. It's good that the third-party developer community has stepped up to address the platform's limitations with better software and a more responsive approach to filling in feature gaps.

Even though K-9 is a derivative of Google's mail client and is developed under the same license, Google is unfortunately not open to merging large patches or complex enhancements from K-9.

It's understandable for Google to have a more rigorous code review process and want new functionality submitted in more manageable bite-sized chunks. It's also easy to understand why some of the more gearhead-centric features in K-9 aren't desirable for inclusion in the standard e-mail client. Those issues aside, there are some critically important bits of underlying mail management functionality in K-9 that are desperately needed upstream.

There is no conceivable reason to explain why Google isn't adopting that code from K-9 to make the Android mail experience better. It's disappointing that Google's lack of transparent and inclusive development has forced the community to collaborate around a fork while the upstream client has languished and practically become abandonware.

The latest stable version of K-9 is available for installation from the Android Market. You can also download installable packages of more recent builds from the K-9 download page. The K-9 source code can be obtained from a public subversion repository hosted on Google Code.