In a famous posting to fedora-devel-list back in 2008, adam Jackson wrote: “If I could only have one thing this year, it would be to eliminate [the meme that ‘linux is about choice’] from the collective consciousness.”
The issue at the time was the choice between Juju and PulseAudio on Fedora, and the notion that both should be made available to the end user. Jackson noted that “the solution is not to try to deliver two things at once, [since you’ll then also need to] deliver a way of switching between the two. Now you have three moving parts instead of one, which means the failure rate has gone up by a factor of six… The chain of logic from ‘Linux is about choice’ to ‘ship everything and let the user choose how they want their sound to not work’ starts with fallacy and ends with disaster.” The point wasn’t that we shouldn’t have choice but that sometimes fewer choices make for better code and give the user a better experience.
Choice and complexity, fragmentation and disunity have been a problem or a gift to developers and users since the first Linux distros arrived on the scene, bringing with them a new dynamic and sense of urgency. The drive was to get anything that worked, so the desktop evolved as a collage of quick and impatient hacks that used a random patchwork of widget sets.
It wasn’t until KDE and GNOME came along that a coherent approach emerged to creating applications with a common look and feel, but KDE and GNOME haven’t always talked to each other well. As Federico Mena has expressed it, “Applications expect an ‘environment’ to live in, and that environment is very badly defined. GNOME apps expect to be able to read some parameters from an ‘XSETTINGS manager’ and they break when they run in a KDE desktop. KDE apps break in similar ways when run under GNOME.” To make matters worse, “OpenOffice needs patching to be able to use anything from those desktops. Mozilla also thinks that it is a separate platform, and it also needs patching…” An unintended outcome of this underlying complexity, he has noted, is “that we can’t share font settings easily, or network proxies, or do cut and paste of rich text reliably.”
“We free software hackers tend to focus on the absolutely-latest versions of the libraries,” Mena observes, “and we pay no attention to how one can write an app that runs adequately with different versions of the libraries” – with the consequence that “independent developers have to resort to horrible things like dlopen()ing the libraries and doing dlsym() to find if particular functions are available.”
Miguel de Icaza traced the problem to the hacker culture of the Nineties. “The attitude of our community was one of engineering excellence,” he wrote. “We do not want deprecated code in our source trees, we do not want to keep broken designs around, we want pure and beautiful designs and we want to eliminate all traces of bad or poorly implemented ideas from our source
code trees.” The result is that “things change too quickly, breaking both open source and proprietary software alike”, which is exacerbated by the lack of compatibility across Linux distros. This has “killed the ecosystem for third-party developers trying to target Linux on the desktop… You would try once. Do your best effort to support the ‘top’ distro or, if you were feeling generous, ‘the top three’ distros. Only to find out that your software no longer worked six months later.”
Essentially, each Linux distro is a unique operating system that happens to use the elements of free software, and a third-party developer can’t rely on compatibility between any two GNU/Linux distros – and in some cases between any two versions of the same distro.
This has been an historic conundrum for the Linux desktop. Choice at the desktop level has been the default position, and the applications (and users) have had to take care of themselves. In designing a desktop, the decision is between taking a minimalist approach – where choice is limited, ‘less is more’ and simplicity is the aim – or a more inclusive approach where the desktop becomes an aesthetic playground for the user, with add-ons, themes and extensions. The latter runs a greater risk of failure because it tries to be all things at once, lacking co-ordination or a common vision. Users expect a certain level of predictability and stability, and are piqued when the behaviour of the desktop changes.
It is in this context that Canonical has expressed the desire, rightly or wrongly, to exert tighter control over Ubuntu’s graphics stack through the in-house development of Unity and Mir – and the GNOME developers have tried to limit the use of extensions and themes that differ from the core aesthetic and philosophy of GNOME 3. The aim is to find coherence over time.
Whether any of this matters in the long term depends upon whether commercial success or fun is the yardstick by which free software, and the free software desktop, ought to be measured.