June 27, 2004
One of the unnecessary evils of GUI programming is the "Process Dialog Box", what we think of as MessageBox.Show. You know, like this:
All kidding aside, these dialogs are frequently abused for displaying all kinds of trivial information to the user, a mistake that Alan Cooper calls stopping the proceedings with idiocy. Don't like the data the user entered into a form? Well then, let's immediately pop up a MessageBox and notify them about it! Thus the main form loses focus, and the user has another modal window to to acknowledge before s/he can continue doing anything with the main form. This completely breaks any flow of interaction the user had with our app. A better solution is to passively flag the field-- perhaps paint it with a pink background, or use the web metaphor of the red asterisk placed to the right of the field. Whatever you do, avoid stopping the proceedings with idiocy at all costs.
I love this solution, and I want someone to copy it immediately and make it available as a WinForms user control! There's just no question that this is a far better solution than popping a modal dialog with the same information. It's also better than the "put an icon in the status bar" solution, because it's more visible, it's at the top of the window where the work starts (nobody sees the status bar), and it contains more information. You can click it to get a menu of actions relevant to the condition, in this case, unblocking the download or turning off the nofication entirely per-site or per-system.
It's funny, because I had often considered this dialog box conundrum-- which is really endemic to all GUIs-- and thought back to the interface from an old computer game from 1999, Dungeon Keeper 2. The game was constantly sending you notifications of various things going on throughout your dungeon; the notifications would visually flow into a queue with a summary icon to indicate the type and severity of the notification. That way you could continue playing the game without interruption, and process the messages as you deemed necessary.
* AKA the "gee, we're sick of getting all this bad publicity about our crappy default security settings" patch.
Posted by Jeff Atwood
I know this post is two years old, but it was linked to in one of your posts just a few days ago.
I have to say, I am not a fan of this solution. Why? Because 90% of the time, I don't even notice that little notification strip. I have been trained so thoroughly by blinking banners and animated flash ads to ignore non-content crap that flashes onto my screen, that a subtle pastel-colored strip with text at the edge of the "content area" is virtually invisible to me. Especially since I use mouse gestures and don't have to leave the content area in order navigate.
Probably it would work better in other apps, at least at first. But I have a hard time believing users, myself included, would not just train ourselves quickly to ignore this there just as we have with dialogs. Especially if they continue to be used as frivolously as dialogs are currently.
I completely agree with everything this article says. I really think that M$ should make an app for power users like us that will let us access these settings easily. Also, for the n00bs, there could be presets like "Check this box to disable all the fricking nag windows." this would make me want to support M$. Currently, I am a die-hard Freespire fan. Go to the light side! Linux is the answer!
I'm not a fan of how it shifts the text of the webpage down. Often this box comes in about 1 or 2 seconds after enough of the page has loaded for me to begin reading, and often when it pops up and the text shifts down, my eye ends up reading the same line twice.
The "notifications in a queue with color coding for severity" thing seems very similar to what is done to present warning messages in aircraft computer systems.
What I really hate about modal dialog boxes is that an application instance that has a modal dialog box open may be a candidate for opening a document that you double click in an explorer window. When that happens, you have to cancel or complete the dialog box before working with the document. It's even worse when the reason that you opened the document was to copy some information from it and paste it into the aforementioned dialog box, and the dialog box doesn't save its state when you cancel it in order to copy the information.
I was very, very pleased to see that Firefox 3.0 Beta 2 places the "Do you want to save this password?" dialog in a bar at the top of the browser, exactly as pictured. We're making progress!
Error and warning messages should be written to stderr and appear in a console window at the bottom of the screen. When stuff happens, a line of text appears in the console, but the user isn't interrupted.
This was standard practice under Unix for ages. It should be adapted to modern windowing environments.
This is a pervasive problem, and it still hasn't been solved. Internet Explorer's pop-down bar is still too intrusive and, like philihp said, stupid for pushing the whole webpage down in a clunky, animated fashion.
There needs to be a standard GUI concept/convention/widget for issuing notifications that can be ignored. It's 2008 and everybody still does it differently, usually popping up some kind of 200 px rectangle in the lower-right corner. But it's very annoying that every app does it with their own colors and image styles. It should be handled through the OS.
The problem with the highlighting of input fields is usability. Colorblind people may not be able to notice anything highlighted in a particular color.
But I love the idea, glad to see firefox has been using it.
The way Firefox 3 uses the Notification / Information Bar is quite nice.
A lot nicer then the dialog box that used to pop up, when remember passwords and such, breaking focus from the web page.
I've got a IE6 style implementation of the Notification Bar in C#, works on .NET and Mono.
The really great thing about the Firefox 3 password dialog is that you can wait to see if your password worked before you save it. With the old way I was always wondering what if I mistyped the password because there's no way to know it worked until after you've saved it.
I cannot agree with everything said in this post.
There are times when Dialog Box is more than necessary.
For a mission critical situation, say for prompting user if s/he would like to launch a nuclear missile, i rather see an annoying Dialog Box then some non-dialog based notifications.
"I cannot agree with everything said in this post.
There are times when "Dialog Box" is more than necessary."
Usually the problem is just when the dialog box is used unnecessarily. It should be perfectly fine to interrupt a user in a critical situation.
Hard to tell if I submitted that, since my post isn't there, and the page just reloaded with no verification notification
Indeed the IE6 notification bar is hard to notice for most users. Otherwise check all the important sites where they had to make entire GUIDES with screenshots on how to deal with the info bar that blocks downloads.
If I'm downloading a file, it's because I NEED TO DOWNLOAD IT NOW -- But IE6 instead STOPS it and when I agree (again) to the download, the page is entirely reloaded, making me waste lots of time to reload tons of flash banners ads from the source site. I think the info bar is the most useless and annoying creation in browser history.
What I really think i a good thing is kind of what is used right now by growl on Mac OS X and has been used by Microsoft in Outlook since 2000. Instead of putting up a dialog box perhaps just something that will show the user what is going one without completely stopping the user from continuing in what he or she has been doing. When, for example a new song starts to play in itunes, growl will simply put a little box, (whose characteristics you can edit) at the top of your screen informing you which song is playing.
This is good because it allows the GUI to communicate more trivial things, e-mail, downloads, changed songs new users signing on in AIM without complete annoying the user. I like it.