Feature There never will be a year when Linux conquers the desktop, because desktop computers are going to merge into tablet-style touch-driven devices and disappear. But desktop Linux was getting close, until Microsoft derailed it a few years back.
The GNOME project’s recent release, GNOME 3.8, served to remind me of the significance of Microsoft’s actions.
That’s because GNOME 3.8 introduces a new GNOME desktop, something it’s calling Classic Mode and which the project describes as "the traditional desktop experience".
GNOME Classic Mode brings to six the total number of GNOME desktops and takes the Linux and open-source community down a path of fragmentation they seem only too willing to venture down.
But if there was one product that nearly put a single FOSS desktop onto tens of millions of PCs, it was GNOME 2 that was released in 2002. According to the GNOME Project, GNOME Classic Mode is a return to GNOME 2 "with the underlying power of GNOME 3 technologies" and "enhanced" by GNOME 3's growing library of extensions.
You can thank Microsoft for this fragmentation.
Four years after GNOME 2002, in 2006, Microsoft started signing no-sue patent-sharing pacts with Linux companies. The following year, it started to make threatening noises about "the Linux desktop including OpenOffice" infringing a worryingly precise 235 patents. It didn't sue anyone, but then, who could it prosecute? No single organisation is responsible for the Linux desktop: it's the work of multiple independent groups of developers, often volunteers, many in loose, non-profit cooperatives.
Of course, the big question – worth an awful lot more than $64,000 – is: was Microsoft correct? Does the Linux desktop stack infringe Microsoft patents?
To answer, we have to look at what "the Linux desktop" means. There are dozens of window managers, but in 2007 there were only a few complete desktop environments – KDE and GNOME being the main contenders. So let's consider what they have in common: windows, obviously, with a menu bar inside each one.
Microsoft's Windows 95 (Credit: Guidebook Gallery)
KDE 3.5 from 2007 - click to enlarge (Credit: KDE.org)
At least one "panel", by default along one long edge of the screen. In the panel's left corner, a button that opens a hierarchical menu to launch programs, shut down the system and change settings. Optionally, next to that, some shortcuts for launching often-used apps, then an app-switcher. In the right corner, a collection of status icons for sound volume, network status and so on, plus the clock.
It's an absolutely standard, generic layout. In the late 1990s, loads of OSes used something much like it: OS/2 Warp 4, BeOS and QNX Neutrino, pre-KDE Linux window managers IceWM and FVWM95 – the latter built on FVWM v2 to make it look like Windows 95 from Microsoft.
You need a really long memory (and to be quite old) to remember what new features were first seen in the 1994 beta of what was going to be Windows 4. These included the "Taskbar", along the bottom edge of the screen, the "Start Menu"with a hierarchical list of installed apps, and the "notification area" in the bottom, right-hand corner that contained status icons and the clock.
It also inherited features from earlier versions of Windows: menu bars inside app windows, as opposed to the menus of most existing OSes. Windows 3's "program groups" become submenus of the Start menu instead, as categories containing entries for the main apps of each software package.
I could go on, but you get the picture. Everything that unified GNOME 2, KDE, Xfce and pretty much every other desktop GUI in the world originally comes from Windows 95.
If you look at the handful of surviving GUIs that predate Windows 95, such as RISC OS (1987), Mac OS X (based on NeXTStep from 1988), AmigaOS or GEM (both 1985), they're totally different. Look at screenshots of long-dead early GUIs from the 1980s, such as SunOS's SunView or Smalltalk, and they don't even have features like menu bars or buttons on window title-bars at all – Apple invented most of that stuff with the Lisa and later Macintosh projects.