In a recent column, Tom Yager provocatively declared that Linux can't kill Windows. Linux is just an OS, he said, whereas commercial offerings such as Windows and Mac OS X give developers a complete platform on which to build applications. His conclusion was that Linux will never be truly ready to compete for a seat at the big table. He's wrong, of course.
For starters, Linux isn't even an OS. It's just a kernel. Only when combined with countless other libraries, tools, modules, and applications does it become a usable OS. Standardisation is a problem, sure; but don't think it isn't being addressed. The open source community has continued to build on this layer cake of technologies through the years, adding tiers of ever-increasing sophistication.
The Gnome and KDE desktops are just two examples. By writing code that takes advantage of these environments' APIs and toolkits, developers can create complex applications to rival anything available on proprietary platforms - the KOffice and OpenOffice.org suites being prime examples. But under the hood and behind the scenes, the community has begun building even more advanced components, efforts not readily apparent to the casual observer.
For example, one of the most exciting developments for Linux coders in recent years is Mono, the open source implementation of Microsoft's .Net development environment. Mono isn't about running Windows .Net software on Linux. Rather, its purpose is to make the modern technologies that are available on the Windows and Java platforms - including virtual machines, sandbox security, and just-in-time compilation - available to Linux developers, even when writing Linux-only software. When finished, Mono should be a welcome relief for coders who have previously been forced to tinker with lower-level languages."
Similarly, don't assume that Linux programmers will always be forced to wrangle with primitive and convoluted graphics architecture. A project called Cairo, aimed at creating a standardised, high-quality library of vector-based graphics routines, has already attracted the attention of developers working on Gnome, Mozilla, and OpenOffice.org. Think Microsoft's Avalon or Apple's Core Image, only with Scalable Vector Graphics in place of proprietary technologies.
There are more examples like these targeting both desktop and server applications. The true miracle, however, is that these technologies are being developed despite the fact that the lower-level underpinnings of the OS have also continued to evolve. New versions of the Linux kernel and its associated core code libraries appear regularly. So do new releases of Gnome and KDE. Not even the compilers used to build open source software have stood still.
I suspect that frustration with this seemingly constant state of flux is the true root of Tom Yager's assertion that Linux will never offer a platform to compete with Windows or Mac OS X. He should remember, however, that the Linux of today is still very much a work in progress.
The road from DOS to .Net was a long and arduous one, fuelled by billions of Microsoft's R&D dollars. By comparison, open source's volunteer army is being asked to come up with a robust computing experience to compete with Windows in just a few short years. Can you blame them if they're still working on it?