A modal dialog box is the software designer making a claim that the software cannot do anything else until the user makes a decision. Upon closer examination, this claim is almost never justified. It’s usually a case of developer arrogance: developers assuming that because they have to care about some edge case in the software control flow, the user should have to care about it too.

There’s a particularly egregious example in Thunderbird 7.0 which I’ve seen a lot of lately because I’ve been composing a lot of emails offline.

I’ll be on the train or something, happily offline, typing an email in Thunderbird for later sending, and suddenly I’m interrupted by this:

Email composition, interrupted. Train of thought, destroyed. Input window, blocked. I cannot continue until I’ve processed what the software is asking me and made a decision.

Alright, Thunderbird, what’s the problem? Oh, you couldn’t save my draft to my mail server? Gee, I wonder why. Maybe because I’m not connected to the internet. There’s no reason I would expect you to be able to save a draft right now.

The correct behavior would be for Thunderbird to keep checking, silently, for an internet connection, and to save the draft to the server as soon as a connection becomes available again. But there’s no button for that, so I click “Cancel”.

Argh! Another one! What is it this time?

…An error message telling me my draft could not be saved. Thunderbird, I just told you to stop trying to save my draft. Why are you using an error message to report that you’re doing as I told you? That’s not an error, that’s the expected result of the button I just clicked. Why are you telling me anything at all? Why are you putting another dialog box in my way instead of just letting me get back to my email?

Jef Raskin used to call these “Monolog boxes” — they’re like dialog boxes except there’s no dialogue because the software isn’t asking me for any information. It’s just complaining to me and then making me click a button to acknowledge that I heard its complaint.

So that’s a modal dialog box followed by a modal monolog box just to tell me something I already knew, which is that I’m offline so of course drafts can’t be saved. And this pointless ritual recurs every ten minutes or so when Thunderbird tries to save my draft. If I’m composing multiple emails at the same time, I have to dismiss these pointless dialogs for every composition window!

The way to fix this interface is quite simple. There’s no reason to interrupt the user to report on the status of saving the draft. Thunderbird should allow me to keep typing my email while it displays a discreet warning message — off in the corner of the window, perhaps — to the effect of “This draft has not been backed up.” Even that much is arguably unnecessary, because the right thing to do in this case is obvious: back up the draft to my hard drive, and then sync it to my email server when an internet connection becomes available again. This can be done without any user input at all.

When the right thing to do is obvious, software should just quietly do it. It shouldn’t interrupt me to ask my permission or complain about problems.

Is Thunderbird in offline mode when this happens? I’m just sort of surprised because I do a lot of offline mail writing in TB (3 hours of commuting every day, sometimes with, sometimes without wifi in the train, which is being rolled out) and I’ve never seen any of these dialogs.

“When the right thing to do is obvious, software should just quietly do it”

But you’re saying it’s obvious in 2011, as if someone just added that now. I haven’t checked the history of this particular dialog, but much of the Thunderbird UI is still around from the Netscape/Mozilla suite days, and with the development resources Thunderbird has, change does not happen quickly.

The obvious solution is to keep your drafts and sent email in a local folder instead (which is what everyone used to do before they had 5GB IMAP boxes…)

Yeah, these are very irritating. As far as I know, they pop up when you’re offline but TB is not in offline mode (and therefore still thinks you’re happily online?). Sometimes, TB does detect when you go offline (or online) but not always. So one obvious thing to do would be to fix that.

Even so, I guess the dialogue/monologue boxes should be gotten rid off as well.

Thing is, Thunderbird is stuck in the 90s as far as usability. Look at Sparrow, Gmail, even mail.app, those are the current standards… Thunderbird doesn’t even support compose-in-a-tab even though Mozilla popularized tabs almost a decade ago.

I suspect Thunderbird is dead, but nobody at Mozilla wants to admit it. It stopped evolving (despite numerous version number increments) when the original dev team left Mozilla a few years back.

Even when you’re online, using imap folders for drafts is a bad idea (hey, now your trash has 300 different drafts of the same email. oops).

Drafts for imap accounts should always be stored in Local Folders. I thought this was the default; if you’ve got it set up otherwise, just go to Account Settings- Copies and Folders and FIX IT FIX IT FIX IT FIX IT FIX IT FIX IT.

[…] OK Cancel Some days you wonder if all the good UX people have been fired, or are launching their own stealth startups: Dear Thunderbird: I know you can’t save my draft; please stop complaining about it […]

I still get these dialogs even though I am fully connected to the internet. I suspect this is because of Thunderbird logging into the incoming IMAP server that my webhost provides, and then trying to save the draft to my ISP’s outgoing SMTP account. Since many website hosts do not provide an outgoing SMTP account, I must use my ISP’s SMTP account for outgoing mail.

I wish Thunderbird would get a little smarter and stop griping about which server to save the draft, and just login to the proper one, and do it.

To tell Mozilla Thunderbird to save drafts of messages you are composing periodically in the background:

Select Tools | Options… (or Thunderbird | Preferences… on a Mac) from the menu.
Go to the Composing category.
Select the General tab.
Make sure Auto save every __ minutes is checked.
Enter the desired frequency for saving (three minutes is usually reasonable).
Close the preferences window.

It is also a sign of developer laziness and of a developer failing to think “how would I want this to work if I were using it just like this”.

The laziness factor comes from the fact that almost all GUI libraries/frameworks come with a built in modal dialog call as a single ready to go item. Just call function “modal_dialog” with parameters x,y,z, and things just work.

Almost no GUI libs/frameworks come with any type of non-modal, unobtrusive notification framework ready made and ready to go.

So what does the lazy developer do…. He/She could build an unobtrusive notification system, or just use the ready made modal dialog. The lazy opt for “just use the ready made modal dialog”. With the result that they irritate the user to no end.

The failure to think through the interaction is somewhat interrelated to lazy developer syndrome. Thinking through the interaction, and workout out a better way takes effort. Or the lazy developer could just be lazy, and use the already built, ready to go “modal_dialog” function call. And so the lazy go with the ready made call.