uring the recent LinuxWorld conference, Linux proponents loudly celebrated Linux' increasing importance in the world of software. It's true that Linux has made great strides in becoming a standard part of the computing landscape, but it has made far more inroads into the Unix space than into the Windows desktop space. Despite that, there's simply no doubt that the desktopand Microsoftare the current target of many open source software projects. These projects are conceived, executed, and extended to compete with Microsoft's desktop applications.
They're making progress, too, particularly with early-adopters and in IT-mandated vertical application environments, but as these projects mature, they're going to have to compete head-on with their far better funded and user-tested Microsoft counterparts on average users' desktops. To compete successfully, Linux needs a standardized platform and robust installation mechanisms so that users can choose software on its merits, without worrying about whether the software they want works on their particular Linux flavor or GUI choice.
A GUI Decision
Linux is a kernel, an operating systemnot a complete operating environment in the sense that Windows is a complete operating environment. The tradeoff is one of choice. Windows has a single interface (true, there are variations between versions, but those are largely transparent to users). In contrast, Linux has no built-in GUI interface. Users are free to choose among many commercially available or free GUI X-Window interfaces, such as Gnome, KDE, and Motif, each of which provides a different look and feel.
Unfortunately, to some degree differences in GUI X-Window interfaces extend to the programming interfaces as well, meaning that software developers must either support multiple GUIs or choose which GUI(s) they plan to support. Because the interfaces are slightly different, application developers generally target one or two primary GUI programming models. Supporting many GUIs isn't just a simple process of including one set of libraries or another; it's often a frustrating and error-prone exercise in writing GUI-specific code. While these applications may run on non-targeted GUI interfaces, vendors often guarantee support for only one or two.
The multiple-GUI problem illustrates a basic difference in Windows and Linux. Windows has one general GUI interface which has served many millions of people and works for many millions of different applications. The Mac (another successful consumer OS) is similar; one general GUI works across all Mac applications. Why is Linux different?