on Unity2D and llvmpipe, and the differing approaches of fedora and ubuntu

Ubuntu’s Unity desktop invites comparisons to GNOME 3 for a bunch of reasons, but one important similarity is their reliance on hardware OpenGL support to power their visual animations and effects. In their first releases, both desktops used “fallback” modes to handle systems without OpenGL support, but in Ubuntu 11.10, Unity is available for those systems using a new project called Unity2D.

I think Unity2D is not just a terrible idea, but also another example of the new direction that Ubuntu is taking that makes me wonder if it’ll be my distribution of choice for much longer.

Not so unified

Unity2D removes the reliance on OpenGL by avoiding it entirely: it’s a rewrite of Unity from the ground up, based on the Qt toolkit and using the Metacity window manager instead of Compiz. While it looks and feels much like standard Unity, it’s an entirely separate codebase, and keeping the two in sync as features are added will require a substantial amount of extra work. Perhaps the Ubuntu developers have the resources needed to keep up, but it seems like a very shortsighted approach to me.

GNOME 3’s current fallback desktop is definitely a hack, too — it cobbles together a UI that looks a bit like GNOME Shell using the panel and related components that have been ported from GNOME 2. It has neither the flexibility of GNOME 2 nor the elegance of GNOME 3, so it’s not a particularly compelling experience, but the Fedora developers plan to make the full GNOME Shell experience available for nearly everyone in Fedora 17, using some very cool technology.

Software OpenGL with llvmpipe

OpenGL isn’t inherently limited to systems with hardware acceleration; Xorg actually provides a software implementation of OpenGL by default whenever hardware support is unavailable, but its performance is far low to handle desktop effects. However, a new software renderer, called llvmpipe, aims to change that. By using LLVM, a generic virtual machine that produces optimised x86 or AMD64 code on-the-fly, and utilising multiple CPU cores, llvmpipe performs far better than the standard Xorg renderer.

The gains are impressive: running Quake III Arena at 800×600 on my dual-core laptop, Xorg’s renderer managed 3.9 FPS, while llvmpipe managed a fairly playable 34.9 FPS. While that only makes llvmpipe about as fast as my old Matrox G400, that’s okay — it just has to be fast enough, and for GNOME Shell, and even the odd game, it definitely seems to be. llvmpipe has actually been used as the default software render in Fedora since Fedora 15, but it’s only in Fedora 17 that it supports all of the OpenGL features required to run a compositing window manager.

GNOME Shell on llvmpipe

GNOME Shell running without hardware acceleration on Fedora 17, using llvmpipe

I tested the Fedora 17 development packages (aka “Rawhide”) in a KVM virtual machine, and it worked fairly well; logging in revealed a complete GNOME Shell desktop, and while it was a little choppy, it was definitely usable. I’d definitely expect it to be faster on an actual PC, especially with a mutli-core CPU. The Fedora developers have plans to improve performance, too, by optimising llvmpipe and disabling some minor effects.

So, on the one hand, we have Fedora working on key infrastructure that will improve the Linux desktop experience for all users without hardware OpenGL acceleration, and on the other, we have Ubuntu developers throwing effort away on a developmental dead end. Ubuntu has copped flak before for not contributing to Linux development, but I don’t generally buy in to that argument — “contribution” isn’t something you can measure just by analysing commit logs or counting lines of code. Canonical can pay its developers to do whatever it wants them to do, but increasingly, it seems that the effort they’re expending is pushing Ubuntu in a direction I’m not sure I want to follow.

It’s hard to elaborate on exactly why I feel that way — I think it’s really down to little things, like insisting on forging its own path with Unity, the increasing number of built-in monetised services, and their sleazy dealings with Banshee (be sure to read the comments on that one!). Maybe the result is a great OS for a lot of users, but for me, Ubuntu is slowly drifting away from being the OS I want it to be.

a week-and-a-half with GNOME 3

I’m as surprised as anyone to admit it, but I’ve spent the last using GNOME 3, and it hasn’t been too painful — in fact, I’ve had no trouble remaining productive in it. I’ve definitely missed some of GNOME 2’s features, but it’s definitely been a more pleasant and productive experience than my time with Ubuntu’s Unity desktop after the 11.04 release.

A lot of people have reacted poorly to GNOME 3, and I can understand their frustrations. I’m not sure why I haven’t had the same experience, but perhaps my time with Mac OS X has something to do with it — I’m already used to using the Expose-style overview in the GNOME Shell, and to having Alt-Tab work on an application-level. There’s a new key combo for switching between the windows of an individual application; it defaults to Alt and whatever key sits above the Tab key in your locale (Alt-` in my case). It still took a bit of adjustment, but I was soon zipping between windows and launching applications without any dramas.

GNOME Shell's overview provides quick access to your applications and windows

The GNOME Shell cheat sheet covers a lot of the less obvious functionality built in to the Shell. I do find some of the hidden functionality a bit silly — having to hold Alt to reveal the “Power Off” menu item, for instance — but it still doesn’t take long to come up to speed.

I will add one caveat to my comments: I’ve been using GNOME 3 on my laptop, where (as I remarked a couple of posts back) I spend most of my time using Firefox, Chrome, Thunderbird, terminal windows, and a text editor. I haven’t used it with JACK and my regular assortment of music tools yet, so I’m still not sure how it’ll handle that workflow, or if its greater use of video hardware is going to cause any latency issues.

A quick reality check, nine years in the making

One thing I can’t help but feel in the release of GNOME 3.0 is a sense of history repeating; after all, it’s not the first major release of GNOME to slash away at the desktop’s feature set and remodel the remains based on design principles put together by a core team of developers.

Red Hat Linux 8, with the then-new GNOME 2.0. I'd forgotten how much like a browser Nautilus looked

GNOME 2.0 had substantially less functionality and configurability than the 1.4 release that preceded it, and it imposed a set of Human Interface Guidelines that described how user interfaces should be designed. I think you’d have a hard time finding someone today who’d claim that those changes weren’t for the best in the long run, but at the time, the streamlining was considered too extreme, and the HIG was controversial.

I think we forget just how much was missing in GNOME 2.0, partly because it’s been so long, but mostly because all of the really important features have found their way back in. To remind myself, I took a look back in time: I installed Red Hat Linux 8 in a VM and fired up its default GNOME 2.0 desktop.

The configuration dialogs in GNOME 2.0 did actually cover some options that are currently missing in GNOME 3, such as font and theme settings, and its panels had greater flexibility than the GNOME Shell’s single top panel, thanks to the bundled selection of applets. However, there were surprisingly few applets that provided functionality that hasn’t been incorporated in to GNOME 3 in some way.

Even this minimal window settings dialog from Red Hat 8 wasn't an official part of GNOME 2.0. A complete window settings dialog was added in the next release, GNOME 2.2

Leafing through the release notes for the subsequent GNOME 2 releases showed how quickly some of its missing functionality came back, and just how much the desktop has been polished over the years. While GNOME 3 throws away the visible desktop components, there’s a lot of GNOME 2 still in there, from the power, disk, sound, and networking management infrastructure through to its many tools and utilities.

GNOME 3.0 is a little different from GNOME 2.0 in that it changes the basics of navigating your desktop, and the developers have so far resisted requests to relax those changes. I’m still sure that it’s going to improve rapidly, though, and I do think that its developers will take the various criticisms on board. I don’t expect any dramatic design reversals, but I do expect improvements and refinements that will make GNOME 3 a viable option for many of the users that find it frustrating today.