I go in deep with a review of Gnome 3
Gnome 3 has received a lot of disapproval of late, from the Gnome foundation being charged with not taking care of its users, or losing mindshare, to Gnome 3 itself being an unusable mess. I’ve been using Gnome 3 myself for a few months to sort the truth from the fiction, and to try and understand just how the Gnome foundation expects their newest shell to be used. I will end with some thoughts on how Gnome 3 can be improved. The review will require a fairly lengthy preface, however.
While using Gnome 3, I’ve tried to actively understand what the Gnome developers were trying to achieve, and “go with the flow” of Gnome 3. As such, I’ve tried to use as “vanilla” a Gnome 3 experience as possible, only straying when I’ve felt I understood what Gnome was trying to do. I can be described as a “power user” but overall I have fairly simple needs as long as I can stay organised.
Before we begin, I feel we should discuss the “desktop metaphor” as it was understood in the 90s and how it is understood now. The “desktop metaphor” can be split roughly into two competing ideas for the computer desktop. The first is “document oriented”, and the second is “application oriented”. Originally, neither of these were dominant due to limitations of both ideas.
The idea behind a “document oriented” desktop is that you get work done by manipulating “documents”. You create “documents”, as well as “folders” (which you can put documents inside), you view or edit these documents, and you throw these into the “trash” when you’re done. Most early desktops like Windows 3, Apple Mac, and Gnome 2 roughly followed this model. “Spatial Nautilus” for those that remember it, was a step in the document oriented direction: it opened each folder individually, and remembered the location and size of each folder on the desktop. However, the document oriented idea it is not without its flaws.
The problem is, what happens when a document can be opened by multiple applications (e.g. you can view or edit a document)? How do you handle new document types? What happens when a single application can edit multiple documents at once? What happens when an application (or a game) is not associated with a “document” per se? For this reason, most document oriented desktops also allowed launching applications directly, as well as other ideas from Application oriented desktops.
Application oriented desktops work on Applications. They try and hide the idea of “documents” and “folders” to within an application itself. Instead of launching multiple instances of an application to handle individual documents, instead a single instance of an Application is launched and it is expected to handle multiple documents. More recent desktops like Mac OS X or even Windows 7 and, yes, Gnome 3, are all application oriented. Traditionally, application oriented desktops had problems too.
How, for example, do applications share data? This still needs to happen via the filesystem, so “files” and “folders” show up to allow multiple applications to use the same documents, and to give applications some way of managing their data. In short, these two desktop design ideas have co-existed for a long time. However, around 2007 mobile operating systems like IOS and Android really started taking off, and with them two major concepts in Application Oriented desktop design.
The first was that an application was “in charge” of all documents you created or modified using it. Instead of a single hierarchical filesystem handling data for every application, every application could be looked at as an island, with its own documents that other applications couldn’t edit. The second was an explicit “share” button, which would hand that data off to another application. This had the benefit of completely obviating the document metaphor, at the cost of having to explicitly “share” data between applications. (in an unrelated note, having to explicitly share data between applications is considered a feature, not a bug, in the mobile computing environment where all applications could be considered mutually hostile). For example, you could have a todo list, and you could share a single todo item with your calendar to schedule when you want it done.
Most desktop environments like Windows and the Mac OS big cats have been in the process of moving to this metaphor, as has Gnome 3. It is in this context that we should be looking at the existence and evolution of Gnome 3.
Gnome 3 is a moving target. Unlike the Gnome 2 series which generally built upon older releases, leaving all features as options, Gnome 3 is as likely to remove a feature for a release as it is to add one. This happens often enough that the message of how Gnome 3 should be used becomes muddied. One gets the feeling that even the Gnome guys aren’t sure how they expect Gnome 3 to be used. This isn’t unusual. Gnome 2 didn’t really know what it wanted to be until well into the Gnome 2.16s, and really only got refined after Gnome 2.20. However, Gnome 2 didn’t really cut features until Gnome 2.2x got started.
The additional problem is all the stuff that is actively researched but never really makes it into Gnome proper. One example is Zeitgeist’s “to do later” features, where you could take a few applications and stick them into your notification hot corner, and later Gnome would remind you that you intended to use these applications somehow. There are many videos on Youtube about various Gnome 3 features which either don’t exist in “the trunk” or don’t exist “by default”. This makes it slightly confusing as you could have watched a video on how the next Gnome is expected to be used, and later find that you shouldn’t be doing things this way at all. To make matters worse Ubuntu adds its own spin on apps to work properly with Unity. In any case, I’ve tried to figure things out as best as I can.
Aesthetically, I like the minimalism of Gnome 3. The fact that everything is accessed by hot corners and the rest is hidden away suits me fine. The hot corners work even with multiple monitors. Hitting the “windows” key does the same thing as the hot corners, so even if you don’t have a mouse (or don’t want to press mouse buttons) it is easy to get at what you want. The overlay is your main interface to the Gnome Shell. There’s also a top bar, which is fairly non-configurable, with the word “Activities” on the left (which does the same thing as the hot corner, so I don’t know why it’s there), the name of the application after that, a time / calendar in the middle, and your name, network, audio, etc. on the right. The bar is always there, but I wonder why it doesn’t show up only on the overlay. I would much rather they got rid of all irrelevant elements entirely. The only thing immediately useful on the top bar is the Application context menu, which can easily go to the top of the application window instead.
For some reason, I don’t like the combination of the font that Gnome Shell uses by default, and its size. I’m unsure why, but if I make the font smaller I feel happier about it, and if I change the font but keep the same size I’m also happy. I’m a big fan of Adobe’s Source Sans Pro, so I hope they switch to that at some point. The default theme is great, and I like the “integration” between the window manager and the application, which used to be really obvious but now seems a lot more coherent. The gradients are also a lot more subtle than, say, IOS. Unfortunately, the “close application” button looks awful. It just doesn’t sit right with the gradients around it. They need to make it follow that shape.
The corners of the applications are rounded. They’re anti-aliased and look nice, but some people rightly hate them. The problem is that the if you maximise a screen, the rounded corners take on the gradient of the top bar, which is rounded outwards on the edges, whereas on a non-maximised window the gradient of the rounded corner is different. Worse, when you maximise on a second desktop, or do the Windows 7 style tiling the corners now become sharp. This looks inconsistent and silly.
My biggest issue, however, is the disconnect between Gnome Shell and GTK. Gnome Shell has its own widgets for entering text, clicking buttons, etc. and these are not the same as the GTK theme. The GTK theme also has a “light” theme and a “dark” theme, so there are three distinct ways things can look. Having a “dark” and “light” theme is a good idea, but adding yet another visual style for the Shell is an awful idea. It doesn’t help that the shell’s various UI elements like buttons or text input look terrible, with both buttons and text entry fields being rounded to the point of being semi-circles. This is in addition to the “circled squares” used elsewhere in the shell.
There is no “minimise” under Gnome 3 (in fact, the minimise feature exists, but it isn’t part of the design intent of Gnome 3). The idea is that you use applications and they’ll preferably be full-screen, but even if not, they exist as part of your workspace and can’t be hidden away anywhere (where would they go?) In addition, since there are no “documents” on the desktop, there is no reason to want to see the desktop. Instead of minimising, you use the dynamic workspaces feature instead. That is, if you have a new task to work on, you go to a new desktop and start doing the other task. You can then context switch between the two tasks you’re doing by switching the desktops themselves. Thus you never need to minimise or jiggle screens around.
I’ve found that, with some caveats, this works really well in practise. It just needs your instincts to change to “I'm doing a new thing, I need a new workspace” as opposed to “I'm doing a new thing, I want to minimise the apps I was using before and to start new apps”. These workspaces dynamically become available as you use them up. The new aesthetic for apps is also that they have no menu bar and even their Window decorations disappear when maximised. I thought I’d hate this but I find myself loving it. You “unmaximise” by “swiping down” from the top. It’s a very natural way of having your application use all the screen real estate.
As well as maximising, you can also “tile” windows like in Windows 7. However, Gnome 3 has even better multi-monitor tiling support than Windows 7 in that you can tile on any side of any monitor. The Shell overlay will also show you what apps you’re running in a non-overlapped way. This works similar to expose on Mac. On a single workspace, actually managing which windows go where is extremely simple.
You can also either launch an application, or select an already launched application from the overlay window. The overlay window lets you search for an application, select (via categories) an application, or click on an application in an application list. The application list works like the dock on OS X or like the window list in Windows 7, in that there are “pinned” apps, clicking an app will launch it unless it’s already launched, in which case it will bring it into focus.
The caveat in working with workspaces is this: when you’re working in an Application Oriented desktop, all “workspaces” or “tasks” are still only expected to have a single application instance running. When you switch to a new workspace, clicking on an already running application will simply switch to that application on your old workspace. For example, if I open a terminal on workspace one, then switch to workspace two. Clicking on the terminal icon will take me back to workspace one. This is basically what Linus Torvalds was complaining about in his anti-gnome-3 rant. One solution is to use a context menu to launch a new terminal. Once this is done, the appropriate terminal will be selected if you click on it. The other solution is to use the middle button to launch a new terminal in a new workspace.
As an aside, the application metaphor means that you shouldn’t ever have to launch multiple terminals in the same workspace (or multiple copies of any application). The way you do this in Gnome 3 right now is to use gnome-terminal’s tabs. If you require a new shell, press CTRL-SHIFT-T, and the terminal now has two tabs. This works better with some applications and worse with others. Each application needs to adjust to this new world-view (even if it means an application has multiple windows). Applications have some measure of control in what goes on the application overlay’s application list context menu, and they will hopefully integrate their features in such a way that they will be useful when running a single instance on a workspace.
However, simply having the right application on the right workspace isn’t enough. What you really want is for a workspace to store an “application context”. When you launch an application on a new workspace, it should pretend as though the other application is simply not running. Then, whatever context you create in that app should be stored with that workspace. This could allow you to, for example, “suspend” or “hibernate” a workspace, allowing you to have a task involving many applications, say “I'll do that task later” and suspend the apps (potentially freeing up resources for other tasks), then come back to it and have all the applications right where you left them. This part of Gnome 3 is clunky, but it could just as soon be the killer feature of the Shell.
The multi monitor support is both excellent and problematic. A fair bit of detail has gone into multi monitor support, and it really does make using multiple monitors great. However, there are some issues. By default, both monitors don’t move, so if you do your “serious work” on your primary monitor, and you have your web browser open in a secondary monitor, you can create a new workspace, and only the primary monitor will have the new workspace.
However, if you think of it from a “task” perspective, it is not the function of the secondary monitor to be the same across tasks. It is instead the function of each individual application, and there’s already a feature to allow an application to move through workspaces: the “Always on Visible workspace” context menu option. I thus decided to enable multiple workspaces on multiple monitors.
However, if you enable both monitors to have workspaces, the overlay does not show a thumbnail for the second monitor. This can cause problems if trying to move applications between different monitors and / or different workspaces. It is a minor oversight on the whole, but certainly one of my bigger beefs with how Gnome 3 works.
My other big beef is with integration of the Gnome Activity Journal. In a phone, it is OK to have these little application islands, but on a PC, having everything search-able is a desirable quality. Gnome’s Activity Journal is central to this idea. It’s like a centralised “recently used” list. This centralised repository means that you are never dealing with the filesystem directly, rather with the documents and applications that generated them. This might appear document oriented, but it’s more of a centralised “history” application. It tracks “documents” like they were browser history (and indeed tracks browser history as well). The “Journal”, alongside Nautilus, ties the different applications together. It is effectively the “share” feature of Gnome 3.
Unfortunately, it is also not installed by default on Gnome 3. You can get an extension to show “Journal” on the Shell overlay, but there’s no integration by default. Only by relying on Nautilus less and Journal more can Gnome 3 truly purport to be “modernised” like mobile OSes. Manipulating files in Gnome 3 is quite problematic, and while it’s no worse than in Gnome 2, this is what I see as being the big missing feature in Gnome 3.
Gnome 3 has some issues, but it’s still a young project and the ideas are still being ironed out. I certainly don’t think it’s beyond reproach or that it has lost touch with its userbase. I hope that users will engage with the interesting concepts that Gnome 3 provides and try and determine where the current pain points are. If all goes well, then by Gnome 3.16 we should have a Gnome that everyone loves.
So what solutions am I suggesting? The first is simple: Stop removing features! This is not to say that they should never be removed, but features should in general be added until a late Gnome release, say Gnome 3.14. In the Gnome 2 series, a similar approach was taken, with the Gnome 2.0x – 2.1x series being purely about adding features and seeing what stuck, then the Gnome 2.2x series was about refining and removing the useless stuff.
By default, both monitors should change for new workspaces, and thumbnails should be available for both monitors. Better, and more explicit support should also be added for the “Always on visible workspace” option. This includes the sort of thing that shows up in the context menus in the shell overlay for sticky applications, as well as how you manipulate the “tasks” in workspaces as a whole.
Middle clicking an application in the overlay should always launch that application in that workspace, not in a new one. This requires a small change in behaviour, and a lot of middle button presses, but Linux power users aren’t averse to that sort of thing. In addition, changing workspaces should only ever be done explicitly. The workspace defines the task the user is working on, and changing that “behind their back” is probably confusing. Instead, on a new workspace, left clicking an application that isn’t on that workspace should launch the application for that workspace, instead of taking the user to the workspace where the application is launched (is that ever useful?).
I did say no features should be removed, but I didn’t say we shouldn’t move these features around! Currently, “minimise” still shows up very prominently in context menus. This should be removed. If people have a keybinding for it, minimise should keep working as it does, but there’s no reason to advertise its existence when the metaphor has no room for it.
The Gnome Shell theme (and the shell itself) should be adjusted to match the GTK theming much more closely. This goes double with any widgets like buttons or text areas. Someone should also go through these themes with a fine toothed comb and fix all the “papercuts” (like corner roundness).
I would remove the black bar at the top of Gnome 3, or at least add an option to remove it (like an “autohide”). Pressing the “windows” key or going to the hot corner is sufficient to try and access all these features. I find myself doing that anyway, because it feels like the “tell the Shell XXX” button, even though I might just be changing my volume. The Activities button would now do nothing (just as well, since it didn’t look like a button) and could be removed. The Application name could also be removed, and the functionality moved to the window decorations (this also fixes the problem with having sloppy focus and menus in the top bar). You also wouldn’t need to remove window decorations on maximised windows, which would make the behaviour more consistent all around.
I would also remove the close button and the title text from the window decorations by default, and make them smaller. You can close windows using the overlay anyway, and the visual nature of the applications means that the title text isn’t used anywhere anyway — you always see the screenshot, so use this and the app icon to show the applications. On single dialog applications, there should be an “exit” button as part of the application. This basically maximises the screen real estate and enhances the minimalism, meaning you focus on the task at hand.
I would also number the applications in the overlay, with the ability to select them by hitting the overlay button, then the window number. Hitting “Windows-3” would be way better than alt-tabbing through applications like some sort of caveman. Keeping these numbers consistent would also mean that you could build some muscle memory on your tasks.
The Gnome Activity Journal is integral to the Gnome 3 experience, and this should be tightly integrated into Gnome proper as soon as possible. This would mean de-emphasising nautilus and trying to ensure all decent search operations can be done with the activity journal. I would also try and integrate desktop search like tracker with the activity journal, which would fix any issues with transitioning to the new way of doing things, and will also allow searching inside documents.
Save dialogs should also be gradually removed from apps in favour of using the activity journal directly, some sort of desktop couch integration, and version control. This could allow for versioning of documents, time-lining, and either backing up that information in the cloud, or sharing that information between desktop / mobile applications, or a little of both. The three things: a document oriented DB, version control, and activity journal, should work in unison to provide desktop apps with a more powerful version of the “share” concept.
I think that workspaces should save application contexts. This could be integrated with the activity journal and couchdb. You could then store an application context, and then later restore it. You could use this to “save” a task so you can continue it later, or shut down your PC, only to start up where you left off. This would be like an application level “hibernate”. You could also transfer this application context to other desktops or use the context as a sort of “template” for launching a bunch of apps in a particular location in a particular state.
As for the design, I think Gnome should look more towards nature for design inspiration. If you’d only just heard about a desktop environment called “gnome” you’d probably believe it would look a little like the Gaia Sprout theme. Leaves, trees, and a more greeney colour scheme would really bring the design and minimalistic philosophy of Gnome to the fore. I think a forest at once feels mysterious and safe, something which triggers a sense of discovery in the user. With Gnome as stark and minimalist as it is, this sense of discovery and acceptance of something different is vital.
This probably hasn’t been easy reading so far, but the take-home message should be fairly straight forward. Gnome 3, for all its faults, isn’t that bad. I think that people should give it a try, and the Gnome team should work on realising the maximum potential from this desktop environment. When all is said and done, Gnome has some new and interesting ideas to bring to the table, and a more holistic vision of how we should interact with our computers. Purity of vision and good design has kept people on Gnome through the 2.x series, and it’s probably also the reason why many distributions have chosen it by default historically over KDE. It would be a shame to see such a new and exciting desktop environment go to waste.