Holistic UI is smarter UX
Tuesday, March 27th, 2012In the open source community, we celebrate having pieces that “do one thing well”, with lots of orthogonal tools compounding to give great flexibility. But that same philosophy leads to shortcomings on the GUI / UX front, where we want all the pieces to be aware of each other in a deeper way.
For example, we consciously place the notifications in the top right of the screen, avoiding space that is particularly precious (like new tab titles, and search boxes). But the indicators are also in the top right, and they make menus, which drop down into the same space a notification might occupy.
Since we know that notifications are queued, no notification is guaranteed to be displayed instantly, so a smarter notification experience would stay out of the way while you were using indicator menus, or get out of the way when you invoke them. The design story of focusayatana, where we balance the need for focus with the need for awareness, would suggest that we should suppress awareness-oriented things in favour of focus things. So when you’re interacting with an indicator menu, we shouldn’t pop up the notification. Since the notification system, and the indicator menu system, are separate parts, the UNIX philosophy sells us short in designing a smart, smooth experience because it says they should each do their thing individually.
Going further, it’s silly that the sound menu next/previous track buttons pop up a notification, because the same menu shows the new track immediately anyway. So the notification, which is purely for background awareness, is distracting from your focus, which is conveying exactly the same information!
But it’s not just the system menus. Apps can play in that space too, and we could be better about shaping the relationship between them. For example, if I’m moving the mouse around in the area of a notification, we should be willing to defer it a few seconds to stay out of the focus. When I stop moving the mouse, or typing in a window in that region, then it’s OK to pop up the notification.
It’s only by looking at the whole, that we can design great experiences. And only by building a community of both system and application developers that care about the whole, that we can make those designs real. So, thank you to all of you who approach things this way, we’ve made huge progress, and hopefully there are some ideas here for low-hanging improvements too 🙂
March 27th, 2012 at 1:37 pm
Well said!
The balance between balance, presence and awareness is a very interesting challenge, and one where I think there’s room for a great deal of innovation. For instance, I use workspaces as contexts. I have one for general use, chats, browsing, etc, and another for development. It would be very nice if I could choose a lesser degree of interruption when I’m in my development mode. Incoming phone calls would be automatically routed somewhere else, email notifications from personal accounts would not be displayed, etc.
This is a very big subject that affects nearly all software on my desktop. I like to take a break and make some music. I then have a different browser in my music workspace where I have links to lyrics, etc. After a while, I go back to my development workspace and continue my work. When I click a link, then I’m moved back to my music workspace and the link is opened in the other browser. I then close the new tab, move back to the development workspace, focus the browser there, and then reopen the link. That’s distracting.
Now that most of the big transitions are behind us, and Unity becomes more stable, I hope we focus more on these less visible, but nonetheless important subjects. You’ve proven time and again that you’re able to come up with cool names for stuff. Do you have one in mind for a “focus, presence and attention” project? 🙂
March 27th, 2012 at 1:43 pm
Thanks for the info Mark! Will this be implemented in Precise?
March 27th, 2012 at 1:53 pm
Hello Mark, good point. Another annoying thing related to this is that mouse pointer doesn’t hide automatically when it is exactly above the text the user is writing, like Mac does.
I don’t know if it’s reported, but it came to my mind when I read this post.
Regards
March 27th, 2012 at 2:40 pm
A nice compromise between both philosophies is to make applications share this kind of information independently of eachother, the way elementary’s Contractor shares information about applications that can handle certain actions without making them dependent on each other. The problem, of course, is getting applications to share this kind of information if such an infrastructure is in place – for example, there are still many applications that do not update the Recently Used list in GNOME when they save a file.
March 27th, 2012 at 3:37 pm
@Jo-Erlend Schinstad
“Ayatana” 🙂
March 27th, 2012 at 4:04 pm
It’s a very good idea to avoid trying to reconcile UNIX “philosophy” and “UX”; UNIX philosophy is a set of software design patterns that allow the computer user of the 1970’s to build novel functionality from abstract components that consume consistent input and produce consistent output. The “user” who benefits most from UNIX philosophy is what we now call a “system administrator.” Today’s user is a much broader persona, and “user experience” basically just means “experience” or “life in the presence of technology.” To design this experience, I’ve found that it’s best to begin by recognizing that “UX” is something that happens in the user’s mind, not in the software interface. Then when deciding how to do notifications or indicators or menus, you don’t have to ask yourself misleading questions about UNIX or queues or what it means to be a notification–you only have to think about the user’s mental state. Thinking in terms of “awareness” and “focus” seems like a great start!
March 27th, 2012 at 5:14 pm
[…] Ubuntu’s Self-Appointed Benevolent Dictator For Life, Mark Shuttleworth, nails it again. You should read this: Holistic UI is smarter UX. […]
March 27th, 2012 at 7:10 pm
I have to second what Vincent said.
When I read the first few lines, I was worried you were suggesting tighter integration of disparate code bases in order to achieve better UX. That’s never been a good idea.
Instead, the lasting solutions tend to be those where there’s a good interface between separate programs by which they can communicate. That does not mean that those programs don’t need to be adjusted to honor the interface, but the work is usually reasonably small.
As an age-old example, the humble pipe character comes to mind. Piping output from one program into another means both make use of an interface. Each program may come with a command line flag to suppress superfluous output, in order to make the integration via the interface a bit easier.
This is good. This is the stuff of which lasting solutions are built, that are readily adopted by application developers. For a more modern example (and reminiscent of the notification problem), see the success of growl.
But that’s also the technical view. The design view is that a holistic approach is required for good UX. That much I can only agree with.
That means that once the holistic design is made, you have the requirements for the interface that needs to be put in place for applications to communicate sanely. So the conflict between “the unix way” and good UX really is a false dichotomy.
March 27th, 2012 at 10:02 pm
David,
There’s no conflict between unix philosophy and UX. I wrote an app for my mac that does one thing well: It observes apps I’m not using frequently and hides them. It *also* has various types of notifications that pop up in the right corner of my screen under specific circumstances. However, it does these using Growl, which is another app that does one thing and does it well — it manages the display of these things.
Applying all of the UX improvements that Mark suggested to my application is easy and can be done without my application’s participation in this. The guys building growl simply work to make the best notification manager they can and I defer to them.
It becomes frustrating when, for example, my IRC client wants to display notifications in the upper right corner in a way slightly differently to and incompatible with the common notification system I’ve chosen. Now I have two things trying to do one thing. One of them has its entire purpose wrapped up in doing this well for all applications and gives me granular central management, widget control, forwarding, etc… The other is an IRC client which also manages its own UI widget things. It will never do as well.
March 27th, 2012 at 10:43 pm
I feel confused about what message you were trying to pass on.
What is the right tool for the Job?
How does Ayatana/Canonical advocate a UX problem be broken down to solve self-contained problems and identify (integrated) problems?
Why aren’t there links to interaction design, user interface design, usability resources as part of Ayatana (https://wiki.ubuntu.com/Ayatana) Like there are with programming related resources so that people who get involved in Ayatana can educate themselves on the process and the system of reasoning so that more understanding can be developed and the learning curve to useful contributions is climbable?
March 27th, 2012 at 11:07 pm
Why notification always have to “POP”? Or disappear after a few seconds?
Android (and now iPhone) have implemented a nice notification system and no reason why desktops should not implement it.
March 28th, 2012 at 12:09 am
Greetings, Mark.
Another problem I find about the notification system is how it doesn’t keep notifications (except for those regarding the messaging menu, as they leave the icon flashy and show a number inside).
It’s one kind of annoyance when you leave the screen on, get away for a while and, when you come back, you have no idea your torrent download has finished (just an example).
A solution I thought for this is implementing a conditional indicator that would only show up for missing notifications, showing the number of these left to be seen or the mono icon for the application involved. Of course, this would stack every single notification there is to be stacked, since there’s no way to tell if those were seen or not, that’s why I think there should be a “dismiss” button inside every notification bubble (as well as other buttons like previous/next for music and a text box for IM, these being killer features for GNOME Shell and good to avoid switching windows and keep focus).
March 28th, 2012 at 7:47 am
@Stephen
Good point about the resources. Most of the braintrust of this thinking is captured through participation in our ayatana and now unity-design mailing lists, but we could use a canonical statement of the goals, values and patterns.
March 28th, 2012 at 9:57 am
Awesome stuff, thanks!
March 28th, 2012 at 12:04 pm
@Mark
That’d be awesome. (I think you guys are doing great work already)
Canonical Ltd, Canon Law :p