Thursday, September 18, 2008

Does Linux Lag Windows? If So, Why? Part 1

It's often claimed that Linux is not as prepared for the desktop as MS Windows (hereafter called just "Windows") is. I'd like to compare the time-lines for some parts of the Desktop systems to figure out whether that's true and if so, why it might be.

The Kernels

Let's start with the kernel. Given that yesterday was the seventeenth birthday of teh Linux kernel (by some accounts), I thought it was appropriate to start there.

Linux 0.01 was released on Sept 17th, 1991. It couldn't run enough of a system to compile itself. Linux hit the 1.0 mark in March, 1994, nearly three years later.

When did the Windows kernel hit 1.0? I'm not sure that question can be answered. Windows 1.0 (really, 1.01) was released in November of 1985 (almost 23 years ago), but that used MSDOS as the underlying kernel, which saw its 1.0 release in August of 1981 (over 27 years ago), and I'm not sure that MSDOS uses a kernel that should be compared to modern variants in any way. Also, unfortunately, modern Windows doesn't use any of this kernel. The first NT kernel was released with Windows NT 3.1 in July, 1993, which effectively makes the 3.1 release the actual "1.0," and also makes it the elder of Linux 1.0 by less than a year. They are essentially the same age.

Both kernels had networking in their first real releases. The NT kernel had the benefit of running preexisting 16-bit Windows applications without any problem and also getting 32-bit Windows applications with a simple recompile in most cases (similar to Apple's move to Intel). Linux had the preexisting GNU tool set and many other Unix applications which were easy to port. Again, most of this seems equitable.


What about drivers, the often cited reason for Linux's poor performance on the desktop? NT 3.1 had very limited drivers available for it, but it ran on most 386 and 486 machines. A year or two later, the NT3.X series had reasonable driver support. Linux wasn't so lucky and took much longer to get support for devices common outside the server room. Six years later, Linux was still struggling for drivers while Windows 98 / NT 4.0 had cornered their respective markets and had drivers for virtually every consumer device produced at the time. Linux got a lot of press just before 2000, but that didn't change the fact that the driver situation made it unready for prime time. The difference in driver availability between the NT kernel and the Linux kernel has diminished since then, but certainly still exists in a major way.

The Desktop including toolkits)

Desktops? Where do we stand on those?

Windows 1.0 was released in November, 1985, and saw steady development until 2000, after which the environment has been fairly stable. We'll discuss the move to .NET soon.

Linux doesn't have an official desktop, so I'll decribe the first few.

Unix had the available Motif-based Common Desktop Environment (CDE), but it was painful to use and to program for. It was supported by almost all the major Unix vendors, though, so it had a large number of applications early in Linux's history.

KDE was the first really usable open source desktop and saw the 1.0 release in July 1998. Because it was based on the QT toolkit, which at the time wasn't fully open source, there was a lot of political discussion about it.

Gnome arose as an attempt at a fully open-source desktop, including toolkit. Its 1.0 release was in March 1999, fourteen years after MS Windows released its first version. Because of Gnome's relative success on the Linux desktop, I'll be using it for comparison from this point on.

2D Graphics (outside toolkits)

MS Windows developed DirectDraw (part of DirectX) to handle modern 2D graphics requirements. It was later deprecated and the 2D rendering was taken over by Direct3D. The first release of DirectX was in 1995.

Gnome has used Cairo for its 2D rendering since 2005, but its not exactly analogous to DirectDraw. Gnome is beginning to use a new OpenGL-based canvas named Clutter.

Direct3D is definitely more mature than any of the Gnome options.

3D Graphics

Microsoft uses Direct3D to render 3D images.

Gnome uses OpenGL, which , though venerable (c.1992), is supposedly more difficult to write for, but good front-ends like SDL exist for it. Then there's Clutter.

Again, DirectX beats out Gnome's choices for right now, though Clutter and SDL are developing well.

Sound and Video

Microsoft has, again, DirectSound and DirectX. It's mature and (supposedly) easy to use.

Gnome now has the GStreamer framework.  Gstreamer began as a separate project in 1999, but was only included as a part of Gnome in 2.2 in February, 2003. GStreamer 0.10 is also mature and easy to use.

This area appears to be a draw between the two.

Part 2 will talk about applications native to Windows and Gnome. That promises to be a much less technical and more divisive comparison.


Post a Comment

Other I' Been to Ubuntu Stories