|An Early Look at GNOME 3.0|
GNOME 3, the first major-version revision of the popular desktop environment in eight years, is slated for release in April. The good news is that you can now easily take the new release for a test spin with a spare USB key, and provide some real-world feedback to the project before the final code gets released into the wild.
To test GNOME 3 for yourself, you can download 32-bit and 64-bit ISO images built by Frederic Crozat. Crozat updated the first builds for FOSDEM, and said he plans to do so periodically; the underlying system is based on openSUSE. The images can be burned onto a bootable CD or DVD, but if you install them onto a USB flash memory stick instead, you can take advantage of persistence to preserve changes, documents, and additional packages you install. There are also Fedora-based images created by the distribution, and Ubuntu repository packages for GNOME Shell, the desktop user interface, although it is not clear how often either of the latter are updated.
I tested the openSUSE-based image on a flash drive (installed using Aaron Bockover's nifty image-usb-stick imaging tool), as well as the Ubuntu repository packages. That's because 3-D video card support is still flaky for the latest ISO image, and if the OS decides your card can't do the proper compositing, you will get the version-2.x-era GNOME panel instead of the new shell interface and all of its constituent updates.
Some New GNOMEponents
That's not to say that GNOME Shell is the only attention-worthy piece in GNOME 3 — it just gets the lion's share of discussion. In fact, when going over what's new and interesting about GNOME 3, quite a few other pieces come first.
That list starts with GTK+ 3.0, the basic widget library and application framework. GTK3 was officially released on February 10th, and it sports some impressive new features. First, all image drawing now goes through the Cairo graphics library, and the different rendering backends are swappable at run-time (including X11, Wayland, other OSes like Mac OS X's Quartz, or even HTML5) , so an app can be compiled once and run regardless of the renderer needed. It also uses the newest XInput2 input layer, supporting multiple pointers, has D-Bus support built into the GIO I/O API, and features an array of new widgets for application developers. Finally, there is a brand-new theming API, which uses standard CSS syntax and supports animated transitions. Applications can even request a "dark" version of the current theme, a feature that ought to simplify the need many media creation apps feel to create a dark-gray, low-distraction interface via completely custom controls.
A lot of work has gone into simplifying and unifying system status information (e.g., battery, sound, network, Bluetooth) and application pop-up notifications. In GNOME 2.x, these items were handled in a host of unrelated ways, with inconsistent behavior and placement. GNOME 3 cleans all this up, specifying the order and functionality of the status menus, which means a cleaner appearance and "what you expect" behavior like clicking on one menu and being able to slide the cursor into the next menu over. Notifications all pop up in the same place, at the same size, and behave the same way.
Plenty of low-level stuff is in there, too, even though you might not see it. GNOME is migrating away from the old gconf configuration system to GSettings, which uses dconf and will enable new features like PolicyKit. The "preferences" and "administration" menus from GNOME 2.x have been combined into a single control-panel application. There is also a new window manager named Mutter, which combines the existing WM features of Metacity with compositing like that done by Compiz.
The final word seems to still be out on Zeitgeist, the event-driven file activity log that is supposed to give users new and faster ways to retrieve documents. It was re-accepted into the fold in November, and work continues at a rapid pace, but it's doubtful it will make the freeze date for 3.0's release. Fortunately, it might still ship with the actual GNOME-based distributions a few months later.
The Shell Game
The most noticeable component of GNOME 3 is GNOME Shell, the new desktop interface that replaces the GNOME panel and various other window, menu, and task-switching components. The Shell gives you a black menu bar at the top of the screen, with a sparse selection of items in it: a few system status indicators, a combined system-shutdown/preferences/IM-status menu labeled with your first and last name, and the word "Activities" in the upper-left hand corner.
You will probably expect clicking on Activities to open up a task-switcher or application menu, but it doesn't. If you click on it, or if you move the cursor past it into the corner of the screen, up pops the "Activities Overview," consisting of docks on the left- and right-hand sides, and a field of window thumbnails in the middle. The left-hand dock holds big icon buttons representing a mix of currently-running and frequently-used apps, shortcuts to your Nautilus filesystem bookmarks, and a handful of recently-opened documents. The right-hand dock holds thumbnails of however many active workspaces (e.g., virtual desktops) you have running. If you want to launch any app other than the ones with saved launchers in the left-hand dock, you much either search for it by name in the search box, or click on the triangle next to the "Applications" label, which brings up the "App Well" — a 2-D matrix of every application launcher installed on the system, sorted alphabetically.
While you are using an app, its name appears in the system menubar, next to the Activities label and, bafflingly, halfway-superimposed on a zoomed-in and cropped-out version of the application's icon. This label also looks like a menu, but if you click on the current app's name, the only thing you can do is quit. In order to switch apps, you need to either open the Activities Overview and select its thumbnail, or use the Alt-Tab key combination, which brings up a thumbnail browser that you can tab through sequentially.
I went back and forth between the older Ubuntu repository version of GNOME Shell and the newer revision on the live USB image for about five days, and although there are a lot of good ideas involved, over time it becomes increasingly frustrating to use. Once the freshness and slickness of the UI elements wears off, you are faced with a system that imposes only one way to work on you, with no flexibility to adjust to your workflow. That's very disappointing.
For example, consider that the Activities Overview and the Alt-Tab switcher are the only ways to switch between running applications. I run a dual-monitor setup, and prefer to use GNOME 2's window list to switch between apps. That's not because I'm old-fashioned, it's because I can switch to any running app in less than a second by clicking on its window list icon. In contrast, it takes 4 to 5 seconds to switch apps via the Activities Overview, and potentially longer with Alt-Tab, depending on how many are open. On top of that, if I've been away from the keyboard, I can instantaneously tell that there are highlighted IRC messages or new IMs in the panel, because the window list icon slowly pulsates. In GNOME Shell, if I missed the transient notification pop-up, it's just gone.
So why is there no window list option in GNOME Shell? Officially, the Design FAQ tell us: "in order to minimise distraction and interruption 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." Well, my oh my — thank goodness I'm protected from temptation. Although are we supposed to believe that the 22-pixel high list of windows amounts to a greater temptation to distraction than the actual application windows themselves? I know there are users who prefer the hide-all-inactive-windows behavior of tools like Isolator, but last I heard that wasn't slated to be mandatory in GNOME. Besides, the GNOME 3 home page says the goal is "to put you in control." When I can't quickly switch between running apps when I need to, all to save me from the temptation of switching apps when I don't need to, I don't feel in control.
To the Bugzillamobile!
The app-switching difficulty is just the kind of problem that makes me feel like GNOME Shell hasn't had nearly enough real-world testing. It was obviously designed by a small team based on an in-house specification, but one that considers only one way to work. That simply isn't good enough for mass-production environments. There are too many assumptions about distraction, preferences, and daily routines that don't hold up in the wild.
Consider another problem: the menu bar has and will have no "applets." A user filed a bug report about this, specifically citing the need for a system monitor applet. Red Hat's Jon McCann, the GNOME Shell design lead, dismisses it as unnecessary, because "it would be better for the system to be robust against this type of failure." The design FAQ claims a review was done of the GNOME 2 applets, and "it was concluded that no essential functionality has been omitted from the GNOME Shell design." In reality, though, you can dig into the mailing list archives and find that McCann opposed applets for an entirely different reason: because they are "detrimental to the Identity of the product or platform" in that they they allow "ad-hoc/individually-customized design identity." So at least when your CPU overheats, it won't disturb the identity of the desktop in the process?
Fortunately, as the actual release date draws near, the voices of real users are slowing pushing back against some of the bad ideas that came out of the initial design process. An "extension" mechanism is in the works for the GNOME Shell panel, which will allow developers to code missing pieces such as system monitor applets. The API is not defined yet, but there is a git repository where you can follow some of the work.
In an even better example, McCann's preliminary design removed all categories from the App Well, dumping all application icons into a single slow-to-search alphabetized grid. He defends this choice in a bug report, citing a research paper. Fortunately developer Giovanni Campagna held fast, observing that the paper was about a different topic, while pointing out that a 2-D grid is slower to search than a 1-D application list, and that categories substantially speed up users' ability to find the app they are looking for. App Well categories returned in the ISO builds provided by Crozat, but are not in the Ubuntu repository's version of GNOME Shell. Having used both over the past week, the speed difference is tremendous.
Let me be clear: I don't mention McCann in order to single him out personally for some reason; I've never met him and don't even know him online. But his response to this series of bug reports is illustrative: the design decisions were fixed in stone — by a small team — before the code was written, and were based on a literature survey, not real users' actual experiences. For all the flak that Ubuntu-critics like to give Canonical for developing Unity "privately," the upstream GNOME project can be just as unresponsive to input and difficult to interact with, and users get weaker software as a result.
Thus, while I don't think GNOME Shell currently provides enough functionality to use in place of GNOME 2's panel on a daily basis, I highly encourage everyone interested in the platform to test it out and send your feedback to the project. Create a GNOME Bugzilla account, and file a bug reporting the problem.
There are still plenty to squish. You cannot change the placement or orientation of the menubar or notification area (so if you read left-to-right, top-to-bottom, pop-ups pop up in the least-used part of the screen; if your language is different, they're right in your way). The menubar only spans one monitor, which mis-aligns application windows on multi-montior systems and makes them hard to drag from one display to another. The "Activities" label is entirely superfluous. The Alt-F2 command-launcher is impossible to discover. System Preferences are buried halfway down the combined IM-and-shutdown menu, which makes them look like IM Preferences. For that matter, why are IM, preferences, and shutdown combined in one menu anyway (and why is it labeled with my name — in case I forget it?)?
My biggest personal aggravation at the moment is those blurry and cropped-off "current app" icons. A good 40% of the icon is gone, making many of them indistinguishable from one another, and others unidentifiable. I even asked about the rationale on "GNOME 3 User Day" in IRC, and no one could explain when or why it was done. Luckily there is still time between now and April to get it fixed.
On the whole, GNOME 3 is going to bring loads of positive changes for users and for application developers. GTK+ 3, Mutter, the polished notification system — all are clear wins. Shell probably needs more time. I try to take the optimistic viewpoint that Unity, which shares a lot of Shell's underpinnings, will serve as healthy competition, as will continued developments from outside developers working on the extension framework, and eventually we users will get a solution that supports multiple hardware configurations and individual workflows. Sure, it might be rocky for a while in the meantime, but ultimately, isn't that freedom what open source software is all about?