Stefan's Website

about me projects tech talk brick movies

Why not to use Gnome anymore

17 Jun 2014

In this post I will state a simple reason why the display manager Gnome version 3 should not be used.

What is Gnome

Unix and Linux use a graphical user interface system called X protocol version 11, or X11 for short. There are several commercial and open source implementations of X11, most notably Xorg. There are also a couple of replacement systems under construction, because X11 is slow by design, but we won't talk about that today.

X11 implements a client/server architecture where clients (programs) can request graphical areas (windows) from a server (Xorg) on one of (possibly) several screens (displays) in the network and start drawing into these areas. The X protocol used for this is encapsulated in a set of very low level libraries that basically allow you to draw different kinds of points, lines, rectangles and circles, plus basic event handling (mouse clicked, moved, key clicked, and so on).

Writing software on this level only is near impossible, since application developers will want to use high level widgets like buttons, sliders and text input fields, embedded in resizable windows (the windows X provides are just rectangular areas without any decorations or handling possibilities on the user side). The widget part is implemented by a toolkit, the window handling part is implemented by a display manager. So working in a graphical environment under Linux (or Unix) means using X11, and that means using a display manager of your choice (the toolkit can't be chosen by the user, but is part of the individual application programming). Unlike e.g. Windows, where the graphical system and the display manager are integral part of the operating system, the X11 protocol as well as the display managers and toolkits are not part of the operating system by design, they are user space software started by users, just like any other program a user might want to start. This means that you can implement and run X11 on virtually any platform (including Android and iOS), because it is system independent.

There are several toolkits available. Each one defines its own look and feel (Motif, GTK, qt, wxwindows, ...). There are also quite a few display managers available, starting with the huge ones (Gnome and KDE), but also a couple of smaller ones like Xfce, fvwm, and others. While toolkits define the basic graphical building parts of an X application, window managers also define their part of the look and feel of a system (window decorations, mouse behavior, ...).

Gnome and KDE both come with their own toolkit of choice (although you can of course run programs under them that were linked against other toolkits) and lots of software, which makes them more of a desktop environment than just a simple display manager. This alone is not a problem. Both Gnome and KDE worked fine for a long time. I myself stopped using KDE a while ago and started using Gnome, because it was smaller and faster, plus it comes with a nice set of tools. I stopped using Gnome again when version 3 appeared in Gentoo (and went back to fvwm). There are simple ways of preventing version 3 from getting emerged in Gentoo (version 2 is still present), but it was clear to me that version 3 of Gnome means a dead end as soon as version 2 stops being supported on Gentoo, so I stopped then and there.

The problem with Gnome 3

So what's the problem with Gnome 3? The real problem with Gnome started when version 3 started requiring the use of systemd. This piece of software is really evil, because it not only replaces things like udev (the Linux device daemon) with its own (completely incompatible) implementations, but it also replaces the very nice system V boot concept used by most Linux systems today with a piece of crap that needs special fumbling around with every daemon it should start. Basically, systemd wants to do everything that is not kernel domain or application level. As a remark, I think this alone is bad enough, because I don't see how non-commercial systems of this magnitude can provide the necessary long-term support.

Now let's rethink: Gnome needs systemd. systemd boots your Linux OS. So the software that you want to use to arrange your graphical X11 windows on your desktop (Gnome) defines how your operating system must be booted. Again: not how the operating system works or what features it provides, but how it has to be booted. What user space software (Gnome is user space) should do such a thing? Simple answer: none.

My professional opinion

It is my professional opinion that this obvious design flaw of Gnome 3 makes it unfit for any future use.

My personal opinion

I've seen this kind of "not having understood basic concepts and quickly writing very nice looking software before starting to think" before. It is the basic methodology of Mac programmers. This works fine for Mac users, they respond well to nice looking software, while being accustomed to crappy functionality.

It just is not the Linux way.