Notifications when you couldn't care less

I have been using Ubuntu Jaunty for the last few months and it has a nice new notification server which works pretty well. It looks much nicer than the previous speech bubbles and the notifications are no longer tied to the icon in the tray for the program that generated them (this is important as it looks stupid if you don't have a tray which I often don't). There are no longer any buttons on the notifications and they fade out letting you interact with whatever they cover up (appearing in the top right it is often the window manager buttons) so you no longer have to dismiss notifications you don't care about before you can click underneath them.

This is all very nice and most certainly an improvement over the previous notification server but there are still notifications that I receive that I couldn't care less about so I started thinking about how the new notification system (and notifications in general) could be improved.

Firstly there are times when notifications are useful, and times when they are just distracting. Ideally notifications would be 100% useful and never distracting but this tends to be hard to achieve. Some notifications are more important than others. While giving a presentation it would certainly be useful to know the computer is going to turn off in 5 minutes because I was a goit and didn't plug in the power cable. During the same presentation I almost certainly don't want to know when my Pidgin contacts are signing in and out. This gives us at least 2 types of notification, important and normal, and two states for the notification server to be in, important-only and normal (which shows all notifications). This is pretty much how the new notification system works at the moment.

There are some notifications that exist to prompt an action. If I receive an email then it is somewhat expected that I might go and read it, possibly even respond to it. If I'm browsing the internet and an email comes in I personally probably will check the new email out. If I'm working on a report or writing code I probably won't. I'm busy doing something and the email can wait until I'm done. This gives a concept of context. If I'm coding or writing reports then don't tell me about any emails that arrive until I'm done or until I take a break. The same goes for the presentation example. If I'm giving a presentation then don't tell me about notifications in set X, but do tell me about notifications in set Y. When I finish the presentation I might close the pdf and drop back to the desktop but I probably don't want to be told about notices I missed as I won't notice, being too busy answering questions and doing all the kind of stuff you do after a presentation. The notification server needs to pick a good time to tell me. Probably when I first use the computer again at least one minute after I close the presentation.

How can the computer know all this without me spending hours telling it? If notifications expect at least some response, some of the time, the server can notice when it consistently gets no response. If it has delayed notices and when it shows them it gets no response then it should wait a minute, then wait for someone to use the computer (indicating their presence) and remind them again. If they react then in future it waits that length of time, checks for presence and then notifies the user. The time it waits should increase each time, first one minute, then two, then five, then ten, then twenty. If the user has ignored all of these then it should just accept the user doesn't care about this batch, reset the timer and do the process again next time.

This just requires notices to include information about whether they might prompt an action, if they do then we can expect the program that supplied the notification to be used in the next minute after the notification appears. If it is consistently not used in a particular context then these notices should not be shown during this context and delayed as explained above. If notices are ignored in all contexts then they should possibly only be shown when the computer idles for more than two minutes and is then used (indicating the user has returned from a break and won't mind the interruption as much as they might if it interrupted them while working).

This would remove the requirement to simply label notices as important as anything important is just something that is never ignored in any context. It gives a finer grained control over the notices and should reduce the number of useless notices that appear at the wrong time.