Introduction

20 Apr 2011

Gnome 3 was released on 6 April 2011. So, I used Fedora 15 Beta Live to test it. The main change is, of course, the new Gnome Shell, which will be the main focus of this text.

I have been Gnome 2 (and Gnome 1) user for years now. Gnome 2 is my primary personal and work desktop and I spend north of eight hours using it daily. I also use workspaces extensively.

Note that this text is not dealing with keyboard shortcuts, because they remained mostly unchanged and are not in question. It deals with visual user interfaces alone. So, any arguments along the lines of "but this can be done using a keyboard shortcut" do not apply, because these things can be done using keyboard shortcuts in older versions of Gnome as well.

This text is not bashing of Gnome 3. It is meant to be a constructive criticism.

Two modes

If you are like me and need to use Gnome both on a system with 3D acceleration and on a system without it (for instance, over VNC), you will notice that the two modes, Gnome Shell and the fallback mode, behave in almost entirely different ways. The fallback mode resembles Gnome 2 in many ways. Gnome Shell introduces the overview, which makes it act nothing like Gnome 2.

Obviously, this is an issue of consistency. Breaking consistency to gain better ways of doing things is a good thing. However, the new Gnome Shell "overview" way isn't it, as I will argue below.

In fact, if overview was not introduced, it would have been much easier to make Gnome Shell and fallback mode act more like each other (or maybe there would be just one mode, with and without 3D acceleration).

Overview

So, what is Gnome Shell overview? Let's quote Gnome Shell design page:

This is a separate view designed to enable users to get an overview of their current activities and to enable effective focus switching (in this regard, the overview is a facilitator and a mediator, not a destination).

So, the assumption is that normally you will want to stare at your current work and when you are ready to do something else, you will bring up the overview. Now, this "something else" may be starting a new application, finding an obscured window or doing something with workspaces.

Watching a video of screencasts with overview action is rather nice. However, when overview is actually used, every time you need to perform even the most trivial "something else" action, you are exposed to a change of view and other unnecessary eye candy. This gets old rather quickly, unfortunately. In plain speak, many (if not all) of the things that require "something else" to be done, should not and do not really require a view switch. I will talk about this more later.

For now, let me just say that, unfortunately, the biggest new feature of Gnome Shell is a mistake.

Overview: The root cause

Something that's been written on Gnome Shell design FAQ page is quite instructive:

The Shell is designed in order to minimise distraction and interuption and to enable users to focus on the task at hand. A persistent window list or dock would interfere with this goal, serving as a constant temptation to switch focus. The separation of window switching functionality into the overview means that an effective solution to switching is provided when it is desired by the user, but that it is hidden from view when it is not necessary.

And:

The omission of a window list or dock also reduces the amount of screen space occupied by the Shell, and therefore makes it better suited to devices with smaller screens.

I have never been temped to switch focus just because I had a persistent window list (taskbar), a dock or a workspace switcher in front of me. In fact, the above text claims in the very next sentence that users actually do know when they want to switch to something else. So, saying that they would be tempted just because a window list is there, is, I hate to say it, nonsense. A cynic may even say that, by the same logic, the new Activities button would also be one such temptation. :-)

Users switch focus, because, in the operating system parlance, they've hit a blocking call, the task finished or they received an interrupt. Reasons for blocking could be boredom, task at hand too hard, running out of ideas etc. Your usual human conditions, not the presence of a mechanism to switch.

But, let's assume that it is true that users are tempted to switch by the mere presence of a mechanism to switch. The good old panel already has an autohide option, which makes it invisible unless the user really wants to see it. Given that, overview makes even less sense.

I would theorize that the problem might actually be something else. In Gnome 2, there were two panels, one on top and the other one on the bottom. One of these panels held the taskbar (window list) and the workspace switcher. Two panels were using quite a bit of space, especially on modern widescreen displays. I would always remove the bottom panel anyway and move workspace switcher and taskbar to the top panel. There was plenty of space for them there, even with the inefficient Applications, Places, System layout of the top left corner of Gnome 2. However, default was two panels.

So, in order to remove the problem that existed in default Gnome 2 layout, an argument was constructed to get rid of the taskbar and workspace switcher. Supposedly because they were tempting users to switch focus.

Another theory may be that someone created a "cool" new way of doing things and then constructed an argument that justified it. Just because something can be done, doesn't mean it should be done.

In any event, this gave birth to the new overview behaviour, supposedly in an attempt to "minimise distraction". In reality, it meant that there was no way of starting applications and switching workspaces and tasks from the main view any more.

Unfortunately, while in overview, the distraction to the user has only been increased. I will discuss this next.

Overview: Kitchen sink

Computer users of today are not computer users of the 20th century. They are far more savvy. They have seen and used quite a few systems. Without exception, all of them know exactly what they would like to do next when using a computer system.

If a user wants to start an application in Gnome Shell, he needs to click on Activities. Now, let's ignore for a second that activities is a rather meaningless term to most users. Short of them reading Gnome 3 design documentation, it will not be immediately obvious what it means. But, this is not a big problem, because by trial and error, they will find out that pressing Activities eventually leads to applications as well.

The real problem is that when Activities is pressed, several unwanted things happen:

Poor user just wanted to start a new application and yet many other, completely unwanted things happened. If user is lucky, his application will be on the dash. If not, he'll need to click again on Applications and then actually start it.

Of course, the real problem is that Activities overview contains everything but the kitchen sink. And this is precisely why overview is a mistake. Instead of simplifying things, it makes them more cluttered. More visually complicated. It gives the user interface elements that he never asked for.

And to top it all off, the change of view and continuous exposé animation isn't helping here. It adds to the poor user being visually attacked all the time and his eyes getting tired.

Just consider another simple action, like copying some text from a window in one workspace to a window in another workspace. Select text, copy, click Activities, change of view and exposé, go to workspaces bar and click on another workspace, another view change, find the other window, paste. In comparison, in Gnome 2, the same action is performed more simply. Select text, copy, click on another workspace in the switcher, change of view, find the other window, paste.

The same argument applies to a large degree to other actions user wants to perform. Finding a lost window involves getting a dash and workspaces, in addition to exposé. Sure, dash can be used for window switching too, but taskbar was criticised because it doesn't really represent actual windows, which, by the same token, makes dash also supposedly unsuitable for this task. Changing workspaces involves two view changes instead of one. And workspace switcher is far from Activities button, which isn't helping either.

Overview: RFC 1925 (6a)

Yet another problem with overview is that the shell is now a very schizophrenic system. You can half-manage windows in normal view, half-manage them in overview. It really is an implementation of RFC 1925 (6a) - another level of indirection has been introduced in the hope that it will solve something. Instead, the net affect is that another level of indirection has been introduced. :-)

Overview: Zero visibility

And to finish it off, visibility of the desktop as a whole is now zero, thanks to the removal of the workspace switcher. Instead of providing quick visual clues users can simply glance at, it is now necessary to perform GUI or keyboard actions to see where things are on the desktop.

Say a user switched to a new workspace to start a new long running task, as a result of a request from someone to do something. The task is then started there, workspace is switched to the previous task and the new task is quickly forgotten. Without the workspace switcher to provide visual clues of all running tasks at all times, the user has to remember to manually go into the overview in order to see what is currently in progress.

This kind of thing happens to me quite often on a busy day, where many different requests have to be handled. The overview behaviour makes work more obscure. I found myself forgetting about a number of tasks in progress with Gnome 3.6, for instance.

Broken GUI methaphors

Various GUI systems established certain metaphors over the years that users are used to. One such metaphor is the concept of minimising windows. Windows are simply reduced to something smaller on the desktop. When that something smaller is clicked or hovered over, it shows the full window or its preview. It is not always desirable to have all windows in full view, so this behaviour makes perfect sense.

Gnome 3 removed window minimisation by default, but gave an option for the behaviour to be enabled. When windows are minimised in Gnome 3, however, they simply disappear from view. Magically, in overview, they appear as windows that are not minimised. Completely nonsensical and illogical behaviour, once again caused by the existence of overview and lack of taskbar.

A lot has been written about drag and drop over the years and for a good reason. The objects on the desktop are moved just like they are moved in real world. Once an object is placed somewhere, the system is supposed to remember where that object lives, because the user obviously prefers it to be there. All of that sort of behaviour has been removed from the shell's panels. Strangely, it was kept in the dash. Another broken metaphor. Inconsistent, illogical and really a regression, when compared to the GUI systems provided during the last few decades, including Gnome 2.

Dynamic workspaces

Somewhere near the end of Gnome Shell development and its first official release, a concept of dynamic workspaces was introduced. Essentially, instead of predefining all the workspaces user would like to have, they get created as required. They also get removed when no windows are present in the workspace. Sounds great. Unfortunately, in practice, it is not.

I have been a heavy user of workspaces for years now. I find them to be one of the best features of Gnome and other open source desktop systems. It almost completely removes the need to search for windows lost behind other windows. It also enables separation of "activities" by what they mean to the user. For instance, I will have an e-mail workspace, a browsing workspace, a software development workspace, a remote connection workspace etc. I know where these workspaces are, visually. And if I don't, I just glance at the workspace switcher, which on my desktop is located within the only panel, at the top of the screen.

Well, this is no longer possible with dynamic workspaces in Gnome Shell. If my browser crashes in my browsing workspace, this workspace will be automatically removed. So, my browser, if I want it on a separate workspace, will have to go to the back of the workspace sequence. Which will completely change the layout of my whole desktop.

The problem is compounded by the fact that Gnome Shell also removed workspace switcher from the main view, so unless I go to overview, I cannot even tell on which workspace my windows are.

Sometimes things that look elegant in theory do not turn out that way in practice. Workspaces need to be a static thing. At least their removal.

The fix

I believe the problems described above can be solved easily. The following is just one way to do it and not necessarily the best one.

The first thing that needs to happen is that overview needs to be dropped. There is simply no justification to tiring users with a view switch and unwanted exposé animation when no such thing is required or requested. Once that's done, the top panel should look something like this:

Panel

Instead of having the abstract Activities, top left corner would have Applications - a term all users are familiar with. And this would be a direct way of getting to all applications - favourites and others included.

On the left, next to the Applications button, a good old workspace switcher would show users where they are at all times. Note that workspaces would be static.

On the right, there would be the customary clock/calendar and other system status icons. What I didn't do in my mockup is an icon that would lead to system functions, such as shutdown, hibernate/suspend, system settings and user functions such as logout. There is no need to display user's name in the panel to do this - most people know their own name. So, this could be covered by a simple icon to the left of the clock.

Applications

Applications menu could look something like this:

Application Picker

Note how dash is placed horizontally to increase its capacity. The search box could also be moved to the bottom, because no click-to-focus is required to search, so the distance to it is not important.

If the screen has more pixels vertically than horizontally, the dash could be displayed the way current Gnome Shell does it - vertically.

I have used default Gnome 3 background in my mockup, but the applications menu should display over the existing windows, in its own box. In 3D mode other windows could be in deep background of that menu box. Importantly, there would be no complete view switch, overview style, here.

Windows

Search for lost windows would also be simpler, done exposé style:

Window Picker

User could search for the window by its title. There are no other distractions on the screen.

As an alternative method of finding lost windows (without completely changing the view), a taskbar may pop up (exactly the same one as the one used when Alt-Tab is pressed) when user hovers over the current workspace in the workspace switcher or if, for instance, user right clicks on the current workspace in the workspace switcher. I'm sure there are many other ideas that can provide the same functionality.

Workspaces

Workspace switcher could gain its enhanced cousin when current workspace is clicked:

Workspaces

Again, this would not trigger a change of view. User could drag windows from one workspace to the other, with windows possibly being dropped at different locations in another workspace when Alt or Ctrl are pressed. Shift key could perform the customary snap action.

Resurrect desktop right click

Another issue that needs fixing, and that I haven't mentioned above, is lack of "by default" right click functionality when mouse is hovering over the desktop. A menu related to file system should pop up on right click, giving users the ability to browse files, go to favourite locations (places), possibly even open the most favourite applications from there.

Provide ability to customise without extensions

Even the most trivial of customisations require an extension in Gnome Shell. For instance, to remove accessibility icon from the panel, someone had to write an extension. If a user wanted to move the clock from the middle of the panel to the right, he'd need an extension for that too. And so on. These are serious usability regressions when compared to the old panel.

Consistency

Fallback mode of Gnome 3 could implement most of the above functionality without much trouble. It would also lose the second panel, therefore leaving more space for applications. So, mentally switching from Gnome 3 running on a 3D accelerated display to Gnome 3 running on a 2D accelerated one would not be a problem at all.

Conclusion

Gnome 3 is young and it has a few teething problems. This is not uncommon in software development. Let's hope the above ideas (or some other ones) improve Gnome 3 for everyone.

What others are saying about Gnome 3

These folks found mostly other trouble with Gnome 3, but same points overlap with mine:

PS. Using Mutter as window manager in fallback mode

See: Gnome fallback with Mutter.

PPS. The myriad of shell extensions

Gnome Shell 3.2 has been released recently, so I had another look at the whole thing, just in case. In the process, I found the real irony - a whole myriad of shell extensions have sprung up, which address the issues I wrote about above. If you install enough of those, you may even get away with never seeing the overview mode, which was supposed to be the big innovation of the shell. ;-)

Some of those extensions are part of Fedora 16, some are not. A very useful set that is not included can be found here: http://intgat.tigress.co.uk/rmy/extensions/index.html. Yet another one can be found here: https://github.com/linuxmint/MGSE.

Gnome 3.4: The nonsense deepens

With the release of Gnome 3.4, a new "maximise by default" behaviour seems to be taking hold. The "rationale" is explained in Allan Day's blog post:

Displaying multiple windows at the same time means that screen space isn't used efficiently, and it means that you don’t get a focused view of what it is that you are interested in. Windows that aren’t maximised also create additional tasks for people. Often you need to adjust their size, or you have to move them around.

Breathtaking nonsense. Simply breathtaking nonsense.

In the process, it seems that some apps have been broken, including ICAClient, which now creates windows that take the whole workspace and then display ugly margins around the actual remote desktop space. Wonderful.

Gnome 3.6: In the real world

As a point of practical, real world experience, I have been using Gnome 3.6 (non-fallback) for a while now. There are large memory leaks in the shell (it gets up to half a GB of memory on my systems after a few days), which makes everything slow. On the systems where software rendering is in use (llvmpipe), the CPU usage is through the roof. Of course, the main reason for requiring this is 3D rendering - completely unnecessary when not there in hardware.

And to top it all off, remote work is noticeably slower now. Every time something happens, the shell likes to change every single pixel on the screen, which then causes VNC to go into a frenzy of updates that are being sent down the wire. Sure, setting deferUpdate to a high value helps, but it is still not in line with what fallback can do - not by a long shot. High CPU usage only exacerbates the situation. Borderline unusable.

To be fair, many of the above problems are being fixed in 3.8 and 3.10. As of 3.6, however, Gnome (non-fallback) is still pretty painful, especially on a remote machine.

Notification system is entirely puzzling (and largely useless). After notifications disappear from normal view, there is absolutely nothing on the screen that would suggest that there are items that need to be looked at. Another zero visibility problem. It is so easy to forget about the notification that just disappeared from the screen on a busy day. Without visual clues, user has to rely on his own short term memory to remember that there was something to do (which, in GUI design, is always a bad idea). I was always under the impression that computers and software should do things for us, not the other way around. Not in Gnome 3, it seems.

Given that Gnome 3 is a feature poor system (even the most basic customisations are impossible), users learned to rely on extensions for this sorely missed functionality. Apart from the extension system being the wrong means to provide customisations, it is also the source of maintenance problems. Many extensions have been written by someone enthusiastic about Gnome at the time, only to be left unmaintained for newer versions of the shell. Mess.

Gnome 3.8: More from the real world

In this version of Gnome, notification bar has been reworked (again). This time, edge "pressure" has to be applied in order to see the bar (i.e. cannot be seen in overview by default any more). This does not work with remote windows, so one has to define a custom keyboard shortcut to see the notification bar (the regular shortcut will be picked up by the local system, of course). Another piece of functionality that has been changed without being properly thought out, as GUI is unusable for getting to notifications in the remote session.

Gnome 3.10: Dumbing down continues

Instead of maybe fixing the badly broken notification system or something else that may actually be useful, it seems that developers had other prorities.

For instance, crazy amounts of empty vertical space have been added to window title bars. That's just great on wide screen displays that have far less pixels vertically. Not. If this trend continues, all apps will have one line of useful space in the middle of the screen and the rest will be white space. Of course, there will be just one window present at any given time. ;-)

The trend to make everything look like a knockoff of Mac OS X is also well and truly alive.

The nonsensical application menus are placed right at the very top and functionality is being moved there. Of course, if one has focus-follows-mouse behaviour configured, by the time the top bar is reached, the app in focus will change, so the menu will be wrong. And that is all before one has to travel back to the app window to continue the work.

In the similar vein, Files (Nautilus) has the litte gear button up the top. Settings, right? No - not even close. One can find New Folder menu item right in there. Completely counter intuitive.

It is fun to watch... :-)

Gnome 3.14: And the award goes to...

The Gnome devs. For making sure that at least one thing in the new release is following the most silly design pattern ever introduced. In this case, it's the old Alt to Suspend that made its way into Gnome Terminal. In the new version, one has to press Ctrl (must be some stupid Mac thing) in order to make open terminal in the context menu act as new tab. The menu doesn't even change to tell the unsuspecting user what's about to happen. Totally undiscoverable. Also, totally unnecesessary, given the small size of the context menu, which happily featured new tab option before.

On another note, the whole desktop looks uglier now. The top bar has been shrunk, so the numbers on the workspace indicator do not look centred vertically. Straight back to the 90's. Also, various apps now use different colour schemes and pretty much every single window is kind of its own thing (visually). Ugly. Something was also done to GTK in such a way that elements laid out in Evolution, for instance, look like something from Windows 3.1.

Right clicking on a window's title bar will not allow you to move the window to the workspace you want any more. Instead, you can only move it by one workspace. Sooo much better. Not!

Nautilus (a.k.a. Files) won't start occasionally. Super.

Were any of the real issues fixed in this release? I cannot see any.

This new experience was delivered to me via Fedora 21. This is one of the worst releases of Fedora in a while. Ugly, unstable and annoying. Ah, well...

Gnome 3.16: Hits and misses

The notifications have been reworked again - this time for the better. Finally one can get to them easily and they are in the right place. Kudos to Gnome developers.

The scroll bars. Yeah, they now come with that annoying feature of hiding unless you approach them with the mouse. Just makes things more difficult to use.

That vast amount of white space in window title bars has now been permanently set in stone, because the old window manager themes have been removed. Luckily, a workaround is not that complicated. I used this in ~/.config/gtk-3.0/gtk.css:

header-bar.default-decoration {
    padding-top: 2px;
    padding-bottom: 2px;
}
.header-bar.default-decoration .button.titlebutton {
    padding-top: 1px;
    padding-bottom: 1px;
}

Overall, I guess better than 3.14.

Gnome 3.18: There are lessons in Windows 10

Microsoft relented to the user pressure and reinstated the "regular" menu, but on steroids. I think Gnome folks may want to have a look at Windows 10 and get some ideas. Because, there seems to be a lot of cross-pollination going on in the UX arena in recent days. :-)

Otherwise, release is more or less the same as 3.16, with a bit more polish.

Gnome 3.20: More polish

The release is more or less the same as 3.18, with a bit more polish. The CSS has been changed, so this is now required in ~/.config/gtk-3.0/gtk.css:

headerbar.titlebar {
    padding-top: 2px;
    padding-bottom: 2px;
    min-height: 0;
}
headerbar.titlebar button.titlebutton {
    padding-top: 1px;
    padding-bottom: 1px;
    min-height: 0;
}

Gnome 3.22: Betterment continues

Another solid release. Things are shaping up nicely.

I've mostly made peace with Gnome these days. Sure, the workspace switcher is still missing, but I've learned to live without it.

Copyright © 2011 Bojan Smojver, Rexursive.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the licence is here
.