Do you think Linux will one day be able to match
Windows support numbers without suffering any degradation in final, delivered (not just kernel)
stability? Sound off in the
LangaLetter
threads.
Fred Langa is a senior consulting editor and columnist
for Windows Magazine. Fred's free weekly newsletter is available via subscribe@langa.com. You can contact him at fred@langa.com or via his website at http://www.langa.com.
Last week's discussion of "The Sorry State Of Desktop
Software" led to some interesting side discussions, as is often the case whenever there's a
gathering of well-informed--and opinionated--people such as InformationWeek readers.
One heated discussion erupted as result of my hypothesis that at least part of Linux's stability
stems from the fact that it supports less hardware than Windows.
The most vocal participants in the discussion had two main issues with that. One, they said, is
that Windows instability (or Linux's stability) has nothing whatsoever to do with the number of
supported hardware and software products. The other issue was with the idea that Linux might
not support more products than Windows; several people strongly maintained that Linux offers
far wider hardware support.
Let's look at both these areas.
My point about the tradeoffs between stability and complexity was (I thought) straightforward.
The more hardware any software tries to support, the more potential interactions it invites. As
the count of supported hardware products goes up, the number of potential interactions also
rises--and the rise is probably closer to geometric than linear. If support for many devices is
built into the operating system (as opposed to retrofitted by the user), the software can become
bloated and harder to maintain. Eventually, you can reach a point of diminishing returns where
performance can tank and debugging becomes a superhuman task.
As a real-life example, look at Windows' deserved reputation for instability. Yet despite all its
architectural flaws, Windows becomes significantly more stable--in fact, nearly bulletproof--if
you drop to vanilla video, vanilla sound, vanilla networking, etc. That's exactly what Safe Mode
does, and it allows Windows to run (well, OK, limp) on all but terminally FUBARed systems. When
you strip away the complexity, you gain stability. I didn't think this was an outrageous
thought--until I applied it to Linux.
Linux starts out with a stability advantage in this area because its kernel is better architected
than Windows and is more resistant to applications- or peripheral-induced problems: It's harder
to crash Linux's kernel than Windows. But last week's column wasn't a debate about stability of
competing kernels in isolation (and it certainly wasn't an anti-Linux column at all). It was about
stability in toto, and the tradeoffs between stability and functionality. Regardless of your
operating system, if your applications crash or your peripherals won't work well, or don't work
at all, there's only limited benefit in having a stable kernel.
At the core level, part of Linux's stability is simply due to a better architecture, and (so far)
better debugging. But I have to believe that at least part of Linux's stability is also due to the
severely constrained number of hardware interactions it has to handle (I'll give you some sample
counts in a moment); and the limited way Linux supports much of the hardware it does recognize.
And make no mistake, sometimes, bells and whistles just get in the way. In some cases, it's
smart to focus just on essential, core functionality.
But not always. And not for everyone--especially if you or your company has paid for advanced
features you want that the operating system simply doesn't support.
There's a lot of confusion about Linux hardware support, in part because Linux runs on more
platforms than Windows--and indeed, this is an undeniable strength. But something in excess of
90% of PCs shipping these days are Wintel boxes, and the overwhelming majority of peripherals
are made for Wintel systems. Indeed, most Linux installations appear to be on Intel boxes.
Although Linux offers support in the non-Wintel space, the blunt reality is that it's a relatively
small space: Being strong in a small area isn't the same as being strong in a mainstream area.
So let's return to the 90% slice of the pie. How many products does Linux support there? And how
does that compare to Windows?
With no single, central clearinghouse, it's hard to find Linux numbers. The best source I could
find is the Linux Hardware
How-To; the most-recent version I could find was maintained by the Linux Documentation Project.
This is a wonderful volunteer operation doing excellent work. But as volunteers, no one is doing
full-time work counting the number of products Linux supports: Their focus is (rightfully) on
helping people get Linux up and running. Plus, Linux is growing fast, so no matter what any given
count is, the numbers go out of date almost immediately. This means any given hardware count
will tend to underreport the amount of hardware that Linux actually supports. That's worth
repeating: The following numbers are almost surely low.
But there's also an offsetting factor: The Hardware How-To is mainly intended as a compatibility
guide. In the Video Card section, for example, popular cards are often listed multiple
times---under XFree86, and again under each of the commercial XFree alternatives, for instance.
To prevent penalizing Linux in any way, I did not "dedupe" these multiple entries. Also, to give
Linux the fairest possible interpretation, I counted each listed card's chipset revisions or
versions as separate instances. The lists are dense and inconsistently formatted so I may have
missed a few among the multiple hundreds, but I'm sure these counts are close.
On the Windows side, Microsoft also has no central source of compatible hardware per se, but it
does maintain a list of products
that have been "Certified for Win95/98/NT" logo marketing programs. This marketing-oriented
list probably also understates the total universe of compatible products for Windows because
not all vendors bother getting the official Microsoft certification. So the Microsoft numbers are
also probably low.
And, just as on the Linux list, Microsoft also sometimes lists the same product multiple times: A
product separately certified for Windows 95, 98, and NT would appear three times. To level the
playing field, I did not "dedupe" these, either.
Because Microsoft's is a logo-certified list, not a full compatibility list, it also chose not to
include Win95 products in the Win98 listings. Win98 supports Win95-compliant hardware, of
course. In the following numbers, I'll show you both the native Win98 numbers and the more
realistic combined Win98-plus-Win95 numbers.
Two final points: First, both lists are inconsistent in how they handle minor variations such as
identical cards with different amounts of memory; or cards with the same chipset that come in
(say) otherwise identical ISA and PCI flavors. In each case, I based my counts on the way the
cards were listed (separately or not) in the How-To and on the Microsoft site.
Second, it's worth mentioning that Linux supports many more than the listed items through
emulation. For example, Linux can support virtually any sound card that offers a true
SoundBlaster emulation mode. This is a key point we'll come back to, but for now, here are some
key raw numbers:
Desktop/server video cards/chipsets supported: 773+ for Linux; 1,175 for Windows. For Linux,
this breaks out as basic support for 174 adapters/chipset, including those supported by XFree86;
plus an unspecified number of Diamond video cards; plus 450 cards supported by extra-cost
commercial X-servers. The Windows numbers break out as 298 adapters/chipsets for NT; 367 for
Win95; and 510 for Win98, comprising the Win95 units plus an additional 143 native Win98
units.
Audio cards/chipsets: 50+ for Linux; 1,005 for Windows. For Linux, 50 is the actual number from
the Hardware How-To, but Linux also will support many more cards in SoundBlaster emulation
mode. (Of course, so will Windows.) Please see the note on generic emulation that follows. The
Windows' tally is 203 for NT; 322 for Win95; and 408 for Win98, comprising Win95's 408 plus
158 more on its own.
SCSI devices: 126 for Linux; 422 for Windows. For Linux, see the note on generic emulation that
follows. The Windows breakout numbers are 99 for NT, 145 for Win95, and 178 for Win98
(comprising 145 Win95 units plus 33 Win98 units).
Standard NICs: 72 for Linux; 1,812 for Windows. For Linux, see the note on generic emulation that
follows. For Windows, it's 446 for WinNT, 592 for Win95, and 774 for Win98 (592 Win95 units
plus 182 Win98 units.)
There are other categories on the list, but you get the idea.
As mentioned, Linux supports many, many more peripherals via emulation. Of course, so does
Windows. But the point is that Windows usually offers specific drivers while Linux often does
not. Got a fancy video card? There's a good chance you'll have to forgo any advanced and
extra-cost functions the card might offer, and run instead in generic SVGA mode. Paid extra for a
fancy sound card or chip? Chances are Linux will treat it as a vanilla $19 SoundBlaster clone.
Got a DVD player? You'll probably lose access to any brand-specific features.... Etc.
In many areas, Linux treats peripherals generically. This simplifies things enormously, and (I
believe) increases stability by reducing the amount of code required and by keeping the number
of potentially adverse interactions to a minimum.
And make no mistake, as mentioned before, it's sometimes very smart to focus just on essential,
core functionality. Sometimes, bells and whistles just get in the way.
But not always. And not for everyone--especially if you or your company have paid for advanced
features you want that the operating system simply doesn't support.
Which comes back to the column: We seem faced with a choice of either full functionality with
instability or limited functionality with greater stability. And that's I meant by "the sorry state
of desktop software."
What's your take? Do you think Linux will one day be able to match Windows support numbers
without suffering any degradation in final, delivered (not just kernel) stability? Can Linux gain
support for myriad brand-specific functions and yet avoid the bloat that's plagued Windows?
Would Microsoft be smart to start paring away functions in order to improve Windows' stability?
Join
in!