Your comments on the NotificationDesignGuidelines are welcome here. Please sign your name with each comment. Thanks!
- Notifications preferences configuration
- PGUIT, aka the inviolable user zone
- Notification tags-for persistent notifications
- Notification menu idea [for persistent notifications]
- The Facebook notifications bar as an excellent example
Notifications preferences configuration
The mail-notifications package has interesting configuration options and dialogs design that could be used.
In new installs for machines I use and for friends/family I always install gnome-osd. It currently has pluggins including support for:
- Music player (rhythmbox)
- IRC (x-chat)
- EMail (evolution)
- Instant Messaging (Pidgin)
I hope the Notifications don't interfere with gnome-osd, in fact it would be useful to have options that could eventually replace gnome-osd functionality.
Other options that I believe are currently missing from the notifications options are:
- Avoid panels
- Font selection
- Custom sound for different levels of importance
- Hide on Mouse-over
Position & size to mimic OSD (**)
(**) About this specific configuration option I'd like to see, On-screen display of volume changes (similar to what most TVs show) and private messages/ping on IRC, should be configurable to appear accross the screen instead of being confined to the small notification space on the top right corner. As such, this should be an option, not a hard setting, specially for volume and private messages/instant messaging, but other may use this too to raise their importance and visibility.
PGUIT, aka the inviolable user zone
(The following is based on the discussion https://bugs.edge.launchpad.net/ubuntu/+source/update-notifier/+bug/332945?comments=all, specifically, my comments (#122, #132), with additional information requested by MPT in comment #135.)
The pop-up update notifier is a very bad idea for two simple reasons, both of which have to do with how the majority of people have learned to use computers:
- On the web, a pop-up is often, very often, something obnoxious to be dismissed as quickly as possible: An ad, an invitation to swat a monkey, etc. "Firefox has prevented this site from opening a new window" is one of my favourite English-language phrases. Because of this behavior, many people have learned to dismiss without reading.
Ironic aside: When firefox prevents a window from opening, it notifies me of this. In a notification area. And gives me a choice. Exactly what Jaunty does not do anymore, but what previous Ubuntu releases did. Exactly the behavior I prefer, as it happens, but that's just me.
- Web browsers and computer operating systems often pop up windows about error conditions, status, etc., and people are confused; "I didn't put that there! Why is it there?" Confusing a user does not encourage them to read or learn, it encourages them to feel that they understand their computer even less than they thought they did. It makes them feel small. Slighted.
Mark, as someone with a background in the CA business, you *must* be aware of this: Browsers pop up "helpful" messages about certificate status and users dismiss them quickly. Often, this results in the user not getting what they wanted - the web page - because the default behavior is to not proceed.
Which confuses the user. Slights them. Makes them resentful because it reminds them they did something they did not understand.
Popups get in the way. When something gets in the way, it is pushed aside or worked around. Often, that's the wrong thing to do.
The Vista "pop it up again" approach was discussed and derided. Rightly. But the proposed system is a step on the same path.
Was the notification system broken? In some ways. The Jaunty notification systems works great, absolutely great, for ephemeral events: You are now connected, you are disconnected, you have a message. That box in the upper right hand corner appears and informs, but does not distract.
Most importantly, it does not take me away from what I am doing: My attention stays where it I want it to be, be that an editor, email, a web browser, or an IDE.
But for persistent events, events that need my attention, that nice transient box is wrong. So what is right? I'm not sure, though I have an idea, which I'll get to in a moment. But I know that popups are wrong.
Ultimately, they are wrong not for the reasons cited above - as important as those are - but wrong because they are an intrusive violation of user space. They look like something we initiated, but they are not. They trespass.
Why? Because the display area consists of three separate zones:
- The "how I start things" zone: The menu bars, etc. The interface elements people use to initiate action or make inquiries. Menus.
- The "My computer has something to tell me" zone: The time, battery status, network status, update status, reboot required. What we have been calling a notification area.
- The "what I am doing, things under my control" zone: The great bulk of the display area, where I am working. I - *I*, *ME* - am the only one who should ever put anything in this area. Nothing should ever happen here that I did not specifically initiate myself. THIS IS MY PART OF THE COMPUTER. (We sort of have a 4th zone, "things I started but am not doing right now", but really this is part of "what I am doing".)
Sure, this is "Peter's grand UI theory that no one has ever heard of before" (PGUITTNOHEHOB, or PGUIT for short), but think about it: This is how we use our computers.
We go to one place - or one type of place - to initiate activities. Those activities take place in another place, the great big place in the middle of the screen. That is where we work, where we spend our computer time.
The only things that enter this space are things we initiate. This space is under our control.
Any intrusion in this space is unwelcome and likely confusing. Hence the real problem with popups: They enter our space uninvited and they intrude.
The notification area is broken not because it is a bad idea but because it overloads one or both of the "get started" and "get it done" zones: Most of the time, notifications appear at the far end of the main "get started" menu bar.
They may get ignored there, but at least they don't intrude.
But now we are proposing to move notifications from "get started" to "get it done". And if you buy into PGUIT then you know this is 100% wrong. Nothing enters "get it done" unless the user invited it. Explicitly.
The solution? A slightly more explicit separation between the zones. I'm not proposing that we dedicate an area of the display space to "my computer has something to tell me", because most of the time, that space will be empty and the user will wonder why there is a waste of space and try to fill it. And they will be frustrated if they cannot fill it.
In fact, I suggest that the Jaunty systems gets it partly right: It changes the nature of the "my computer has something to tell me" zone. Which is at is should be.
The Jaunty ephemeral notification appears where it should - near the "my computer has something to tell me" zone, and looks like it should, that is, it doesn't look like something I initiated - it does not look like other windows.
It's as simple as making that indicator appear persistently. But NEVER on top of what I am doing. It should appear below the current window and above other windows. When I minimize or close the current window, focus should to go where it would have if the notifier were absent, but the notifier should appear above the corner of that window, semi-transparent. If I click on the notifer, it should have focus and be active.
But if I ignore it, that is, if I start interacting with the focused window, it should drop beneath it. Repeat as necessary. When I minimize all windows or show desktop, it should be there, semi-transparent, without focus.
Why will users accept this? Because a) It is different - it does not resemble something they initiated, so they will recognize it as being a different thing, and they will learn that it means their computer needs their assistance, and b) it does not get in the way and can be ignored for as long as they want to.
Sure, it breaks PGUIT, by extending slightly into the "get it done" zone but all great ideas break a few rules. And it does so unobtrusively, which is the most important part, while staying there until acted upon, which is what is needed.
Another reason existing and proposed notification schemes aren't quite right is that they don't distinguish between doorbells and firealarms.
Think of it this way: The doorbell and the firealarm are both interrupts, but very different natures. The doorbell - and the telephone ringer, and the email notifier, and the IM popup, etc., are all things I can turn on or off and all things I can ignore if I choose to. The firealarm is something I cannot and never want to ignore. These two interrupts mean different things and come at me differently. And, as noted, I can turn one off but not the other.
Ultimately, the technology behind is exactly the same: A power source, a switch, an alarm. This is nice, because we leverage the same technology for differnt purposes. The implementations differ by degrees and by how the switch is triggered. And by what they mean. And what they mean is the most important thing.
How does this relate back to the computer and the user zones? Ultimately, it means that we can use the same notification scheme for both doorbells and firealarms, but we need to present them slightly differently. Let's go back to the zone concept for a moment.
I'm going to arbitrarily refer to top, middle and bottom, because that's more or less how our screens are divided right. Middle, of course, is the inviolable user zone, where I do things: Anything there is there because I put it there. It's most of the screen. It's mine. This is PGUIT Rule #1.
The top strip is the "how I make the computer do things" zone. The top menu bar. The clock is here, the battery icon is here, other things the computer wants to let me know about are here.
The bottom strip is the "all the things I'm doing" zone. It's the toolbar. But The Dock is maybe a better symbol: It's the stuff I've opened, the stuff alt-tab cycles through. It looks similar to the "how I make the computer do things" zone, but it's really more like inviolable user zone because the only things here are things I started, mostly by doing something in the "how I make the computer do things" zone.
How does this help? We can use the same technology for doorbells and firealarms, but firealarms have to appear in or near the "how I make the computer do things" zone - they are the computer warning me of something urgent and important (battery about to die, critical updates, etc.), while doorbells have to appear in or near the "all the things I'm doing" zone - they are the IM notifications, new email notifications, incoming call notifications, things I can turn off or ignore.
Basically, these are system notifications and user notifications (firealarms and doorbells).
Great, how should this work?
On Tue, 2009-04-07 at 16:25 +0000, Matthew Paul Thomas wrote:
I'm not sure from the text description how your proposed persistent indicator would behave; perhaps you could post a mockup and example timeline on the Ubuntu wiki?
I'm not a graphics guy (I struggle with getting anything more than black-on-white bullets into presentations) so I'm not sure how to make a mock-up, but a timeline I can do.
Basic properties of system and user notifications
- User has three windows open, FF, email, gedit. User is working in email.
- Ephemeral user notification appears - just like it works right now. A bubble appears, disappears after a few seconds, user can react or ignore. The ephemeral appears near the bottom, then disappears.
- Persistent system notification appears: A bubble appears requesting user action, does not have focus, user continues working in email. After a few seconds, the bubble drops beneath the email window. The bubble appears near the top, and remains there.
- The user alt-tabs to FF - the persistent system notification bubble moves to the top, above FF, but FF has focus. The user works within FF and the bubble drops beneath FF. The bubble appeared in the alt-tab list but the user didn't choose it. (This means that the window stack from desktop up is: gedit, email, the bubble, FF; FF has focus.)
- The user minimizes FF - email now has focus but the persistent system notification bubble appears again. After a moment, it disappears (sinks, that is).
- The user clicks on show desktop - all windows are minimized, but the persistent system notification bubble is in the notification area, waiting for the user to click on it. As long as the desktop is displayed, the bubble is displayed.
- The persistent system notification bubble never disappears. As long as the desktop is displayed, the bubble is displayed. If an application is open and has focus, the bubble pops above it briefly, then sinks beneath it again, taking top spot BUT NEVER FOCUS when focus changes to another application.
- With the exception of "reboot needed", the persistent persistent system notification bubble is still there after reboot.
In the event of something urgent and important (Battery low, please save all work and plug in or shutdown), keep bringing up the persistent system notification bubble. When some threshold is reached, keep it on top, make it flash, make it ring a bell, but leave it there. Never take focus. This point (flashing, what have you, is obviosuly controversial and up for debate - that's good, we're all about debate :->).
- Pretty much nothing else is both urgent and important: If there is an email or an incoming phone call or anything else, display the ephemeral user notification bubble, then fade it away. If I choose to ignore it and continue working, that's my choice. Just like when I ignore the real phone while writing.
- Never bring up a "real window" in the user zone. Ever. Only the user can do this. Everything else should be a bubble, either ephemeral or persistent, depending on urgency and importance.
- The default policy should be that the only things that are important and urgent are those that involve potential data loss. These persistent system notification bubbles rise near the "how I make the computer do things" zone. Only an administrator can change this policy, and the administrator should be warned of the impact of removing items from the urgent-and-important "my computer needs me" list. And only an administrator can add to this list. I'm torn whether we need to differentiate between default list items and administrator-added items: We could warn about removing the former but not the latter, but that these paternalistic - If the admin has added something, who are we to assume it is not a firealarm? The default includes low battery, software updates, etc. Things the computer needs to tell me about.
- The default policy is that all other notifications are either urgent and unimportant or important and non-urgent - a phone call, an IM, etc. These ephemeral user notifications appear in the "all the things I'm doing". As noted above, only an admin can move things from the user notification list to the system notification list.
- If I think one of the above not urgent and not important items is urgent and important, chances are I am sitting waiting for them and will respond to them when they arise.
- The default "user notification" list policy is to notify the user of interrupts associated with running applications: new email, new IM, new phone call, meeting reminders, etc. The user has full control to remove things from this list. (That's what I do with new email - don't tell me, ever. I'll get there eventually.)
- When the user removes meeting and appointment reminders, etc., from the list, there should be a set of radio buttons beneath the " disable meeting and appointment reminders" checkbox: o) Disable permanently (not recommended); o) Disable for remainder of session; o) Disable until evolution (or whathaveyou) starts again; o) Re-enable next time I create an appt/meeting; o) Disable for/until time HHMMSS.
If a user has a video open full screen, persistent and ephemeral will stay beneath the video. (It irks me when I am watching a video on full screen, hit the volume control on the keyboard, and the full screen disappears. Darned bubbles! :-> Other than that, I love the bubbles.)
User interaction with persistent system bubbles
On Wed, 2009-04-08 at 12:18 +0000, Matthew Paul Thomas wrote:
You'd need to include how the persistent notification would ever be dismissed, and (if it would be dismissed by clicking) how you'd avoid mis-clicking on an unexpected bubble.
When a persistent system notification appears, if the user does nothing, it stays on top awhile, then sinks beneath the with-focus window. Repeat until the user clicks on it, accidentally or deliberately.
When the user clicks on it, assume they meant to (more on this below) and now, in response to user action, pop up a real window in the otherwise inviolable user zone. This window should describe the problem briefly and offer at least two choices:
Do someAction now
The default, that is, the action taken if they hit escape or alt-f4 or any other "get this out of my way" actions, is Cancel: Close the popup and bring back the persistent bubble.
This is important because what if the user knows they are about to lose battery and desperately needs to finish typing - we've all been there, working furiously, hitting ctrl-s every few seconds, striving to get that document done and sent before losing power or our connection. Life's like that. In that case, assume the user knows what they are doing by dismissing the window and get it out of their way.
This covers the accidental click case as well: If they hit it accidentally, let them get rid of the popup quickly.
Many notifications may want to offer three choices:
Do someAction now
Remind me in X time
The reminder would get rid of the persistent bubble until the "Remind me" time has passed. This makes sense for updates, but not so much for low battery. Or maybe it does? Up for debate.
I think that's it. More when I make it up.
Notification tags-for persistent notifications
- update manager presents the updates as these notifications , where the user reads the info and clicks the notification to bring up the update manager, rather than just popping out the update manager.
- Window x is requesting attention but the windows list is set to auto hide and the blinking is not noticed or the user is using a dock and doesnt notice , since hyperlinks/actions are allowed , just clicking this notification brings up the window to the front
- An application is misbehaving, and has to be force quit , notification works similarly with just 2 buttons, rather than having a window
- file copying/moving/deleting , notifications with the cancel action button can be used , these operation dont require window with a metacity frame, when there is already a button for cancel within the window , a close on the window frame in not required.
- synaptic manager/update manager open in first desktop has finished the updates/installation , rather than popping up the child window in the present desktop and disturbing the user, the child window remains in the first desktop while the attention request is shown in the notification, again clicking the notification changes the desktop to the synaptic/update manager.[the child window of the update manager/synaptic by the way is not even shown in the window list and in order to notice the child window the rest of the window have to be minimized, this is an irritating behaviour]
- Someone is offering to send you a file over the local network , accept/decline it.
there can be so many system applications which this actions-allowed-system-notifications can be used for.
Notification tags behaviour:got the slider idea from the way picasa updates its library, many other apps also do similarly slider behaviour.
- the notifications slide out from the right side of the screen but always has *only 2 lines of info* about the operation required, this is to minimize the disturbance to the user. even the actions buttons are not visible.why the 2 lines is enough is because [almost all the info can be summed up in 2 lines, eg. Updates available , X security updates found / Synaptic, X program installation complete / X window requests attention / copying file X , 10mb of 1 gb done / etc]
- the action buttons are visible only when the user mouses over the notification tag
- if more text information needs to be presented, the notification expands when the user mouses over the tags along with the action buttons.
- after the info is presented the notification can auto minimize to the edge of the screen and remains as a tag, when the user wants to read the tag he just clicks on the tag.
- the tag always appears in all the windows over windows[since its a 2 line height at the edge of the screen it wont cause much disturbance, but it would be nice if the tag is movable up and down the edge of the screen],
- but remains under full screen windows.
- notifications for critical operations should persist until the user accepts/declines the program[eg: file transfers], such program notifications should NOT auto minimize.
- Firefox All downloads complete and show files could be used with this, rather than the planned change in behaviour listed in the notify-osd wiki
Notification menu idea [for persistent notifications]
The idea is that a persistent notification should be placed in a Menu with the same level of priority of the Preferences Menu. This is because user actions on the system are taken on that level, and to unify all user actions, the persistent notifications could be also appear in the same style. The system warning for the user would be done by a highlight of the root menu (or menu tree) that the user should follow to reach the system actions that are required. Here is a mockup for the default gnome panel, and the highlight could occur by chaning the color of the default K button in KDE, for instance.
Here is a mockup of the idea for the gnome interface:
I really like this idea (it would work very well for me - even a blinky System menu (at least for the first few minutes after login or unlock screen) would be acceptable.
But as has been pointed out in the bug report, something is needed for the various remixes and for users that hide the menu.
Sigh. So close.
How about something like:
- if systemMenuDisplayed
doTheCurrentThing || doThePGUITThing || doSomethingElseUseful
Even better would be a system notification preferences setting.
I for one would opt for Leandro's approach even if it meant displaying the top menu bar when I normally have it hidden. It isn't as obnoxious as a popup.
The Facebook notifications bar as an excellent example
The transient nature of notifications (on all OSes) have bugged me for a while, and since I've updated to Jaunty I've found two problems with the way they work in the new scheme:
1) They intrude into the 'getting my work done' spatial area as Peter has pointed out - this makes me uneasy. A balloon acts like a 'pop-over' window. It's nice that it doesn't accept clicks, but it still feels subjectively very much 'in the wrong place'. There's no border to the space where it appears, so I don't know for sure that any space is either 'reserved for bubbles' or bubble-free, reserved for work'.
2) They intrude into the wrong TIME and grab my attention when they shouldn't. I get a notification bubble each time my music player switches to a new track, for instance! This is ridiculous overkill! For one thing, I'm already hearing the music - I know darn well the track changed! For another, if I want to find out the track name, I can switch to the media player and ask it. But my attention has been disrupted; I may have been typing into an OpenOffice document or a web page and that THING popped over me, distracting me. It didn't need to. And even if it did need to, it should have found a subtler way to alert me: flashing an icon on the status bar or task bar, for instance.
3) Worse, the notifications are transient; once they're gone, they're gone, and I can't get them back. This makes me subtly uneasy too: I see a bubble flash, it fades, I now know that the computer thought it had something important to tell me (though it might have been really unimportant like the MP3 track changing) but now I'll NEVER KNOW what it was. I've lost possibly important information. Psychologically, that's really bad: I've literally experienced a data loss event, something that should Never Ever Happen.
I've thought for a while that these problems could be solved if notifications would
1) be tracked and stored, so I can open them at will later (persistence in time, and user's choice of time), and
2) appear in a PANE of their own, not as overlays, so they can be confined to a restricted physical space with borders, so I know exactly what is in and what is out (persistence in space, and user's choice in space)
3) be minimisable to an icon so I can open or close the notification pane and manage my own space and time demands.
4) for goodness sakes, NEVER MOVE OR DELETE THAT ICON. Always leave it in the same place, but change its colour or image to indicate status of 'you have no new notifications' or 'you have notifications'. This is really important. Flash it if you really need to grab the user's attention. But never, ever move it or make it disappear even if there are 'no new notifications'.
This is how the much beloved Hardy/Intrepid update-notifier icon used to work, and it was brilliant. It obeyed good HIG guidelines. It was in a fixed place, it changed colour when it had something to tell me, but it didn't intrude, it was a good butler. I loved that icon.
Then I signed up to Facebook last week, and lo and behold! They have a general system notification pane which DOES EXACTLY THAT!
All system notifications, just like Jaunty bubbles, get tracked and stored and appear in a notication pane. But the pane can be and usually is minimised to an icon which is ALWAYS in a very obvious place: the bottom right corner of the status bar at the bottom of the screen. One click opens it, one click closes. When it's open you see the last X notifications, so you know they haven't just faded into the ether, which is very reassuring (and practical). And you can click further to see ALL past notifications.
Further, if Facebook really needs to grab your attention (like someone is IMing you) it flashes the web page title bar or tab itself. Simple, unintrusive, but you notice and go 'I need to switch to this'.
A further elaboration of this concept is that a system notification, if it's persistent like this (and it should be), is really just another kind of 'incoming message or event', all of which should ideally be viewable by the user in the same way:
* emails * instant messages * system notifications * system log lines * web browser history * recent documents (as you might get from the Recent Documents Place) * recently changed files (as you might get from browsing in Nautilus and ordering by date) * recently installed .deb packages (as you might get from... some dpkg-query option or log file in /etc/apt?) * recently changed Gconf settings (so you can go 'what did I change when?' if something unusual happens)
It should be possible for a user to get a time-based 'what has been happening on my system?' view - or filtered, of course, in any other way they want - and with the ability for special-purpose filters to be stored and saved as files, as for example Microsoft's MMC lets you do.
That's for the future perhaps. I'd love a system like that. But for right now please, please, please, please, everyone go to Facebook right now, look at their notification pane. They're the first system I've seen, ever, which Does The Right Thing visually about notifications.
Clone, copy, shamelessly steal this idea immediately. If you do, I'll love you forever.
@NateCull : Regarding your problems listed: 1) Reserving a space ,for the notifications ONLY ,would be a problem in small screens, the only way this can be done is using the notification area/panel, Which Ubuntu seems totally opposed to 2) rhythmbox notifications CAN BE TURNED OFF , from the icon in the notification area.[right-click the icon and UNcheck the "show notifications"] 3) There is a log [ ~/.cache/notify-osd.log ] which has all the notifications shown by the notify-osd.[Just an FYI in case you missed any notification ] But I have to accept that its not a quick access as you want... And in jaunty there in a new "Indicator Applet" which is used specifically for emails/im ... -- mac_v