KMail 2 - is it finally usable?

I think I may have frightened KMail 2 into behaving itself.

Note:

  1. If you've only just started reading here, you may want to back up a moment to learn about my experience of "upgrading" to KMail 2 in the first place.
  2. I don't normally write in quite such an acerbic style as this, but given how awful KMail 2 is compared to KMail 1, and how irritating some of the ways in which it's broken are, anything else would have been a misrepresentation of my opinions.

I was watching what my system was up to using 'top', and for the past 50 hours or so, mysqld has been using 100% of a CPU core, so I decided to start investigating what it was actually doing.

Looking at the mysqld process command line, I could see that it was listening on a socket named /tmp/akonadi-antony.Lago56/mysql.socket, so I tried:

mysql --socket=/tmp/akonadi-antony.Lago56/mysql.socket akonadi

and sure enough I could get into MySQL (without any password, which was helpful).

I tried standard MySQL commends such as show processlist, show full processlist, show status like '%conn%', and mostly what I saw was a whole load (around 40) of processes in 'Sleep' state with a 'NULL' query.

Then I suddenly noticed that mysqld was no longer using 100% of a CPU core, so I somewhat tentatively clicked on an email folder in KMail. Two new processes appeared in the processlist:

SELECT PimItemTable.id, FlagTable.name FROM PimItemTable INNER JOIN PimItemFlagRelation ON ( PimItemTable.id = PimItemFlagRelation.PimItem_id ) INNER JOIN FlagTable ON ( FlagTable.id = PimItemFlagRelation.Flag_id ) WHERE ( collectionId = ? ) ORDER BY PimItemTable.id DESC

and

Copying to tmp table | SELECT PimItemTable.id, PartTypeTable.ns, PartTypeTable.name, PartTable.data, PartTable.external, PartTable.version FROM PimItemTable INNER JOIN PartTable ON ( PimItemTable.id = PartTable.pimItemId ) INNER JOIN PartTypeTable ON ( PartTable.partTypeId = PartTypeTable.id ) WHERE ( ( ( ( PartTypeTable.ns = ? AND PartTypeTable.name = ? ) OR ( PartTypeTable.ns = ? AND PartTypeTable.name = ? ) ) ) AND collectionId = ? ) ORDER BY PimItemTable.id DESC

A few seconds later (I think this is the first time I've seen this version of KMail do anything in just a few seconds, although it's worth pointing out that that even this is still a lot slower than KMail 1 was), I got the list of emails in that folder, and wonder of wonders, it even showed me the body of the selected email!

"Wow," I thought, "this is finally working. Whatever the hell it's been up to in the background has finally finished (just in time for me not to find out what it actually was doing), and I seem to have a usable mail client at last."

I stepped through a few emails in the folder, and was amazed to see not only that I got shown the bodies of each email in turn, but that the status of the email in the message list changed to "read" with only a modest delay - certainly something I could live with.

So, I pushed my luck, and clicked on a few more folders which had unread emails in them, and stepped through the emails.

I pushed my luck too far.

On about the tenth folder, it reverted to showing me the list of messages, but not showing the email in the preview pane. As I stepped through the messages, they no longer changed status from 'new' to 'read'.

The preview pane is stuck with the sadly-familiar message "Retrieving Folder Contents - Please wait…", and I can no longer look at any emails, change the status of them, move them to other folders, delete them… you know - the sorts of things you might generally expect to do with an email client if it worked.

The thing I find most offensive about that "Retrieving Folder Contents - Please wait…" message is that it isn't retrieving the folder contents, and no matter how long you want, it's not going to show them to you. I wouldn't mind so much if the message said "folder index is broken" or "folder contents can't be retrieved" or even "email cannot be displayed", because at least these are fairly solid confirmations that there's a big problem. "Please wait" is just annoying.

I think my next approach is going to be to delete all my emails (remember: I have backups), but keep the folders as they are, and restart the entire KMail 1 → KMail 2 migration process. The theory is that having no emails in the folders should make the process quick and sensible (I regard 50 hours as neither quick nor sensible, especially with no indication at all of how long it's going to take, or even that it's worth waiting for things to improve). If that works and I appear to have an email client I can actually do things with, I'll then Import the emails bit by bit from backup, keeping a close eye on whether the system remains responsive and usable, or gradually slows down as more emails get imported, or grinds to a shuddering halt, showing me once again nothing but "Retrieving Folder Contents - Please wait…" and the progress bar of the pig swimming through the treacle.

I'll let you know if I feel the inclination to do that, but it won't be immediate, because believe it or not I actually have work to do for customers, so for the next few days at least, I'm going back to the old Debian Wheezy / KMail 1 system, because it works.

After a few days...

Hi. I'm back again.

It turned out that the above process (delete all the emails, keep the folders, repeat the import process) was not necessary. After waiting the 50 hours for KMail to migrate everything (not that it gave me any indication of progress, or that it was now complete; I only knew because MySQL and Akonadi stopped using 100% of 2 cores of my CPU), I could finally click on a folder, click on an email, and actually read it.

More than that, I could reply, write new emails, and actually use KMail 2.

So, that's what I've been doing for the past 2½ weeks.

That's the good news.

The bad news is, it's shit.

Here's a list of the ways in which KMail 2 is better, and worse, than KMail 1:

Why KMail 2 is better

  • When you reply to an email from someone in a different timezone, the timestamp included in your reply is now in their timezone instead of yours, which makes a lot more sense to the recipient.

Why KMail 2 is worse

  • It is slow. Really slow.
    • it is slow to start up
    • it is slow to create the list of folders
    • it is slow to update the status of emails in a folder as you read them
    • is it slow to filter incoming emails into the folders
    • sometimes it is slow to the extent of waiting minutes for that blasted "Retrieving Folder Contents - Please wait…" to be replaced by the thing actually allowing you to read an email.
      • sometimes that message never goes away :(
  • Filtering rules which are supposed to take incoming emails and put them in the appropriate folders often leave a copy in the Inbox folder as well.
    • sometimes this is temporary (you see an astonishing number of unread emails reported in the Inbox, so you go to open that folder, and 90% of them magically disappear as you watch, and then end up as duplicated emails in the folders they were supposed to go into in the first place)
    • sometimes this is permanent - you get emails (which are already in their correctly-filtered folders) left in the Inbox and they simply stay there until you delete them
  • As a result of the above, you get quite a lot (between 1% and 5% in my experience) of duplicate emails in various folders
    • Yes, you can use the Remove Duplicate Messages feature on your folders, but of course this is slow (see above)
  • There is very frequently (about once an hour for me) a popup status message saying "Resource KMail folders is broken" and then disappearing. There's nothing you can do about (or with) this - it doesn't offer suggestions on how to fix whatever is broken, it doesn't say why or how anything is broken, and the message just goes away and KMail 2 continues "working". It's an excellent example of a programmer telling you "something is wrong, but I'm not telling you what and I'm not giving any hints about how to put it right".
  • As you step through the list of emails in a folder, from time to time you get a new window appear with the title "Conflict Resolution - Local Folders of type Maildir" and containing the message "Two updates conflict with each other. Please choose which updates(s) to apply." You're given three options: "Take left one", "Take right one" or "Keep both". You can also see the headers and body of both versions. There are plenty of forum entries from people complaining about this; some say "I always choose the left one", others say "I always choose the right one" (which is true for me, as the left one never actually contains the body of the email), but the main point as far as I'm concerned is "why the hell does KMail 2 create these two versions in the first place?" Why can't it just process the email, as it came in from the mail server, put it in the folder you've specified, and be sensible, like KMail 1 did? The very fact that this dialogue box can exist indicates something went wrong with the processing of the incoming email, but instead of the programmers fixing it, they pass it on to the user to answer a baffling question.
  • Searching does not work. It doesn't matter what you search for, or where you search for it, the result is always "nothing found".
  • If there is no new email in a folder, you no longer see the last email you looked at when selecting that folder.
    • KMail (both 1 and 2) offers various options for what you want it to do when entering a folder:
      • Go to the newest message
      • Go to the oldest message
      • Go to the last selected message
      • Go to the newest unread message
    • (Personally, I'd also like to see an option for Going to the oldest unread message, because I like to deal with my unread mail in the order it was sent to me, but never mind, that's a different matter…)
    • I use "Go to the newest unread message", and indeed this is what both KMail 1 and KMail 2 do, provided there is at least one unread message in the folder. However, whereas KMail 1 would fall back to "Go to the last selected message" if there aren't any new mails in the folder, KMail 2 seems to think it's more sensible to show you nothing at all until you select one of the messages yourself (and it is generally the last selected one that I'm most likely to be interested in).
  • Folders are no longer in alphabetical order.
    • I'm used to the order in which my folders used to be listed, with the "special" ones at the top (inbox, outbox, sent maail, wastebin, drafts, templates), followed by all my own folders, in alphabetical order, with sub-folders in alphabetical order underneath each of those.
    • KMail 2 has now decided to put some of my folders in the order:
      • LBW
      • scripts
      • Spam
      • Open
      • MSc
      • Pooh
    • I can get it to put them back in the right order by click on "Name" at the top of the folders list, and then clicking on it again, but I never had to do that with KMail 1.
  • Yesterday, KMail 2 wouldn't let me send an email. I composed it (a reply to one I'd received), clicked on "Send" in the usual way, and it went into the "outbox". It then just sat there. "Send queued messages" from the "File" menu was greyed-out, so I couldn't nudge it to actually send the email for me. I could view the message in the outbox, selecting "Message" and "Send Again" wasn't available because that was also greyed-out (in fact it's always greyed-out unless you're viewing a message in the "sent mail" folder, which I suppose makes some kind of sense, because if you haven't already sent a message, you can't send it again), so I had no way to actually get this message to be sent.
    • A few minutes later, I realised that something more sinister was going on at the same time, because new emails were coming in and just sitting in the Inbox, instead of being filtered into the correct folders. Shutting down KMail and restarting it didn't help - the email I wanted to send was still in the Outbox, and new email arrived in the Inbox, and both just stayed there. I found a solution, though: in a shell console, "akonadictl stop", wait a surprising amount of time until "akonadictl status" tells you it's actually stopped, then "akonadictl start", then wait until KMail mysteriously starts doing what it's supposed to again. I bet that confuses plenty of less-geeky "email and browser" users than I am.
  • KMail 2 has decides that it's going to cryptographically sign any replies I send to emails which were themselves signed
    • Firstly, I'd like this to be my decision, please, and not KMail's (and I can't find anywhere to turn this option off)
    • Secondly, it doesn't even work, because KMail 2 can't read my signing key without the passphrase, so after I click on Send, I get a message "Could not compose message. Bad passphrase." It doesn't actually offer me an opportunity to enter my passphrase (which I think might be a bit helpful); it just refuses to send the message until I de-select crypto-signing it…
  • As mentioned in my first assessment of KMail 2, every time I start KMail 2, it prompts for my three POP3 account passwords, and doesn't store them, even if I shut KMail 2 down cleanly (when it hasn't had some sort of major barf and turned all my folder names red). KMail 1 stored the passwords after I'd entered them once; KMail 2 doesn't.

Summary

All in all, having used this system for exactly three weeks now, since Devuan 1.0 LTS was released, I've come to the conclusion that KMail 2 is a frustrating and unusable version of what used to be a perfectly functional email client.

I'm quite certain that many of the problems outlined above are down to Akonadi being crap, but some of them (folder sort order, not selecting an email when entering a folder, unilaterally deciding to crypto-sign replies, etc) are clearly KMail itself, and they are not an improvement on KMail 1.

It makes me wonder:

  • do the developers actually use KMail 2 themselves?
    • if they do, did they ever use KMail 1 to see how well it works?
  • what were their design goals for KMail 2?
    • how many of these are actual improvements, rather than just "a different way of doing things"?
  • do they read the numerous forum entries about the problems people have had since it was released, and realise how bad a regression it is from KMail 1?
  • do they have any baseline performance criteria for how an email client should work, and try to ensure that not only is KMail 2 no less functional than KMail 1, but preferably also better?
    • I haven't yet found another feature which seems to be an improvement, other than the "recipient's time zone in replies" mentioned above

What to do next?

I think I have three options from this point forward:

  • Revert to Debian Wheezy and KMail 1 - not a long long-term solution, because sooner or later Debian Wheezy will become unsupported, but at least I know it works for now
    • See below
  • Investigate KMail 1 running under KDE 4 - although compiled for Ubuntu, it's probably worth an experiment to see if this installs under Devuan
    • Update after trying the experiment - it doesn't work :(
    • I'm going to postpone this option until I've migrated my mail servers to IMAP instead of POP3, so that I don't have to deal with the migration from KMail to Thunderbird of all my emails and folders (probably not too hard) and the filtering rules (probably impossible)

Relief at last

I've reverted to Debian Wheezy and KMail 1.

It's wonderful :)

I have nice fonts in my browser again; I have speling errors highlighted; I have all the things I'm used to, and I have a working email client again!

  • I can click on any email I like in any folder, and it actually shows me the body of the email
  • As soon as I view an email, the status changes to show it's been read, even if I'm scrolling at keyboard-repeat speed through a list of emails in a folder - it can keep up!
  • I can start KMail without being asked to remind it what the passwords are for my POP3 accounts
  • I can reply to an email without being told it doesn't know what my GPG passphrase is
  • I can start KMail and get a nice quick correctly-sorted list of folders, showing the number of emails in each
  • The folder names never turn red
  • The filtering rules just work (and don't leave emails behind in the Inbox)
  • I can search through my emails again, and get results
  • It never says "Retrieving Folder Contents - Please wait…" - it just shows me the folder contents
  • It never decides to split an email into two versions and asks me to choose between the left one and right one - it just processes one email as one email
  • The resource "KMail Folders" is never broken.

I'm happy.

A lesson well-learned

  1. Users don't know what they want until they see what they get
  2. Never commit yourself to an upgrade without being sure you can revert to a working system if you need to
  3. Where version numbers are concerned, don't assume that bigger is better

Go up
Return to main index.