Introduction
Building A Foundation
When Linux was conceived, how it would perform as a gaming system was probably not anywhere in the minds of those who worked on the initial code. The goal was to build an open source Unix derivative that would work in a stable and efficient manner on the Intel x86 architecture. By all accounts, they have succeeded beyond their wildest expectations. They built a very stable, very fast operating system that could be managed by the command line with no need for a Graphics User Interface (GUI).
However, thanks to the flexible architecture, GUI developers could, and would, develop interfaces to help make Linux easier to manage and configure. Since the GUI is run as a separate process, they can be killed and restarted without affecting the underlying system, which is a huge benefit. It is reminiscent of the old DOS 5, Windows 3.1 days in a way, though Linux could be hosting Web, FTP and Mail servers in the background the whole time without missing a beat. But hey, DOS was still cool back in the day.
Linux is cool in its own right because it is so incredibly flexible. Unlike operating systems like Windows and MacOS, there is no default GUI that must be run in order to get things done. This means you can pick and choose which GUI you want to use, and for a while, there were more than a good handful of them. However, as time has gone forward, the list is pretty much down to two: KDE and Gnome. Both are good implementations, but they do things differently. In order to be effective and optimize the functions of the GUI as much as possible, both camps have implemented their own set of features, guidelines and protocols. While this is great for giving consumers choice, it can be problematic for game development.
Laying The Groundwork For Gaming
The command line interface does not provide for a set of de facto graphical APIs (Application Program Interfaces), and while KDE and Gnome offer some unique libraries of system calls for things such as window management and other GUI concerns, they do not offer a set of APIs tailored towards high performance gaming. There have not implemented a common set of APIs for graphics, sound, controllers or other things specific to gaming. So if you look at it from the perspective of a gamer, by default, the OS does not offer you the kind of all-in-one solution that DirectX for Windows might, for instance.
Unified, standardized APIs make programming games a much easier task. Instead of reinventing the wheel so that they can get their game engine to perform the tasks that they want it to, programmers can call upon these existing building blocks to help ensure consistency and increase efficiency. Also, a common set of functions can help ensure compatibility with system hardware - what works for one game using the APIs should work for another game using those same APIs.
With a common API, device manufacturers of components ranging from video cards, to sound cards, to game controllers can focus on writing a single set of drivers that works well with the available programming interface. Being able to write one driver that reaches many users is much more palatable than writing multiple drivers for small pockets of gamers who use different protocols to develop their products.
I know that as a programmer, it is much easier for me to make calls to existing routines in resource libraries than it is to program operations from scratch. For example, if I want to have a user specify a drive and directory where they wish to have a multimedia demonstration installed, I can make calls to existing, self-contained chunks of code that will handle the complexities for me and just send the result back to me in a user defined variable.