Sunday, 10 April 2011

A critical look at Unity

Ubuntu 11.04 comes out later this month, it's currently in beta. The main feature of 11.04 is the brand new desktop shell called Unity. I've been using Unity on and off for some time, but now we are near to release I decided to install it onto my desktop machine and use it full time.

Perhaps I should've posted this blog post earlier, but the truth is that although I've had Unity on my laptop for some time, I haven't given it a real proper test drive. Now I have, I'm not quite as excited about Unity as I was, and in fact, I'm a little worried.


The Good

There are plenty of great things about Unity, for one thing it is, in my opinion, the most glorious looking default desktop I've ever seen. Not just in free software either; it runs rings around both Apple and Microsoft in the looks department.

The launcher looks brilliant, it's bright, colourful, although perhaps slightly too large by default. There are a couple of minor quibbles. The indicator applets seem really squashed together and untidy, this is probably collateral damage from the window elements in the panel (I'll get on to that in a bit). With everything and the kitchen sink in the panel, there is obviously less room for indicators. The other thing is that the categories menu in the applications "lense" looks a bit "Windows 95" but I'm sure that'll be fixed in time.

I love the Applications lense. It makes finding and installing applications a complete doddle, really awesome. The only thing is I can't help thinking that it duplicates the Dash somewhat, and I wonder if both the "Applications" and "Files and Folders" lenses couldn't be combined into the Dash.

The Bad

Despite all that is good about Unity, there are things that ruin it. I always laugh when a user reacts to change with the cliche of "I'm leaving Ubuntu" but I really do have to go with the less extreme "I don't think I can use Unity". My issues can be summed up into two general areas:

1. Window switching
2. The panel

Window Switching
UPDATE: I've been reliably informed that the current window switching behaviour is not correct and is a bug. The finished Unity will display a spread of all the windows associated with an application if there is more than one window, which is pretty nice. So disregard this section!
Let's start with window switching. On the classic Ubuntu desktop, switching windows was a single click. It did involve scanning the window list which wasn't grouped and always had truncated entries. But it was simple, and clear. If you clicked a minimized window, it was restored, if you clicked it again, it was minimized. It doesn't get much simpler than that.

Those of us that discovered the DockbarX applet had IMO the perfect solution to the space issues of the traditional window switcher. DockbarX groups windows by application (like Unity) but hovering the icon would give you a list of windows for that application, with quite a large portion of the windows' titles. Switching windows was FAST.

Now, Unity. Unity's window switching is confusing. If a program isn't running, clicking the application icon will launch that application (fine). To open another window of that application you need to middle click or right click and use the popup menu, that seems fairly undiscoverable to me, but it's okay. Now, if you have two Firefox windows open and you left click the Firefox icon, what happens? The answer is, I'm not entirely sure.

Sometimes it displays a nice compiz powered window selector, but sometimes it looks like it unminimizes the most recent window*. It's seemingly random (I know that it isn't, but it definitely seems so). Why not just always display the window selector if there is more than one window? And while we are at it, if there is a single window open, why doesn't clicking the application icon minimize it?

This might seem like a minor issue, but it's frustrating. People don't like not knowing what a button is going to do when they click it. It scares them.

The Panel

This is the big one. This is the thing that annoys me more than anything else in Unity, because it annoys me on many levels. First there is the irritation that it doesn't work in the way I expect, then I realize I can't change the behaviour through any option, then I think about the problem and get annoyed that Unity's designers plowed through obvious ambiguity and special cases just to save a few pixels of vertical space.... let me explain.

Firstly, let me state I've never been a massive fan of the global menu on desktops. I think it's great for low resolutions when you work mainly with maximized windows because in that situation there is never that detachment from the window context that there is with smaller windows. On netbooks I think it's a great fit, on the desktop where multitasking with unmaximized windows on high resolutions is the norm... not so much.

I've made my views on global menus clear all over the Interweb and Matthew Paul Thomas has put forward many good reasons why he believes they are a good idea, and I do buy some of those arguments, but only in the context of Apple's implementation of the global menu.

We don't have Apple's implementation of a global menu.

What we have is a menu hidden behind the title of the focused window, along with the window controls of the focused window, in a titlebar that may or may not belong to the top maximized window that may be unfocused. This makes no sense.

Hiding a global menu behind a title bar completely destroys the point of the global menu in the first place. The main thing about a global menu is it is easy to hit... how is it easy to hit a menu item if you can't see it until your cursor is already there? It's also almost completely undiscoverable, when a new user boots from a Live CD, what are they supposed to do? Wave their mouse cursor around until they find it? What about touch screens?

What we have is a global menu without any of the advantages of a global menu, but all the disadvantages (e.g. outside of the associated window and dependent on its context, large travel distances on high resolutions, incompatible with "sloppy focus").

Let's forget the global menu for a minute, I mean after all you can always "sudo apt-get remove indicator-appmenu" to get back the old behaviour. Let's instead focus on the far more problematic issue. The window controls (again).

On the Unity desktop, if you maximize a window, the panel becomes its titlebar. This is slick because it prevents wasted vertical space, and the indicators fit nicely in the blank area of the titlebar. If you maximize another window (let's say Firefox) above that one, then the panel becomes the titlebar for that window. This works fine.

Now, open up another smaller window, say the Empathy contact list. Who now owns the panel? Logically Firefox should, as it looks like it forms part of that window. Except now the panel contains the title (and menu) of Empathy, inside the titlebar of Firefox.

This basically has the effect of hiding the Firefox titlebar, the window controls for Firefox are no longer there, there is no way to close Firefox without focusing it first. Except of course you can still drag the titlebar of Firefox, so really we now have this situation where both Firefox and Empathy own the panel. It's confusing and ambiguous and the annoying thing is it really doesn't need to be.

There are three solutions, any of them would make the panel far more usable:

1. Don't merge the titlebar with the panel, retain a visible global menu (OSX style)
2. Merge the titlebar, make the panel only contain the controls and title of the top maximized window (e.g don't change with focus), abandon global menus entirely
3. Merge the titlebar into the panel complete with the hidden menu, but only for the top maximized window (don't change with focus). Keep the menu inside unmaximized windows.

Either of those options would provide a consistent experience without any special cases or confusing situations. In each option you always know which window currently "owns" the panel.

Summary

While using Unity have seen a far higher number of bugs than I'd like to see this late in the development of 11.04, but I've ignored them for now, I have every faith that they will be fixed. They always are.

I do worry about the above design decisions in terms of usability. Yeah, we'll probably get used to them, but then again if I lost a limb I'd get used to that too, it still wouldn't make it ideal. :)

* Edit: Apparently it doesn't unminimize one window, it unminimizes all of them... who would ever want that to happen?

1 comment:

  1. I think your third suggestion is by far the most promising. In many ways we've had this problem since Ubuntu Netbook Remix, which interestingly handled it that way when the automatic maximizer failed to work.

    ReplyDelete