I found a rather long article
by Kim Bauters, a 20-year old computer science student, about Linux on the desktop. Her conclusion is that Linux isn't ready yet (and, between the lines, that it'll never be ready). I won't bother you with details, but one paragraph near the end stood out:Lastly, I would once again encourage those who evangelise Linux to start using self-criticism. To tell you the truth, Linux has not made any advancements when you compare it to Windows. Windows has gone forward with leaps and bounds towards becoming a secure and productive system. Linux hasn't made such advancements. Linux has only made some small steps, and there can only be hope that one day, Linux will actually start to make some leaps. Windows is a lot better than Linux because in the past, Windows has learned from their mistakes. Linux hasn't. And OS X, well, they play in their own league.
"Windows has learned from their mistakes"? Really? Let me tell you a story, Kim. I have Debian GNU/Lnux (which I'm using as I write) and Windows XP installed on my PC. My Debian installation is of the "unstable" flavour which basically means that everything in it is bleeding edge. The very latest software Debian has to offer, and thus not always very stable. I use it for lots of things, from work to play, from programming to writing, yet the OS itself has yet to crash on me. No kernel panic, no blue screens of death.
The Windows installation, on the other hand, is an XP Pro with all the service packs, patches and such that Microsoft has made available. It should be "stable", in other words. Now, I tend to use XP less than Debian but when I do, it's for about the same stuff. Work and play. Programming, writing, and, of course, gaming, which is the one area where XP is better. Or rather, the availability of games is better.
Anyway, some months ago I thought it would be a cool thing to run BOINC
, the Berkeley client software that uses your computer in screensaver mode to find aliens, the cure for cancer, and a number of other tasks suited for distributed computing. Not long after, inexplicably, XP started to try to shutdown itself, and whatever software that happened to be running, when emerging from screensaver or standby mode. It turned out that my particular version of BOINC was causing this so the cure was easy enough: once an update to BOINC was available, I installed it and voilà, the problem vanished.
But BOINC never was the real problem. Windows was. What kind of OS allows an application, a screensaver at that, to access such core functions as system shutdown or killing other processes?
I've had my share of unstable applications in Debian crash on me, simply because they are of early alpha quality, untested or simply not very well designed. But none of them ever managed to bring the OS down with them. And none of them ever tried.
Why? Because a well-designed OS separates user space from kernel space, sees to it that the running privileges of any given piece of software never interleaf with the privileges of another, independent piece of software that happens to be running on the same OS at the same time.
Yet, in the Windows world, the mix-up of user and kernel spaces is a time-honored tradition, there from their very first attempts at a multi-tasking OS. They've learned to hide the mix-up, yes, but the basic design flaw is still there and often readily apparent.
Considering her age, Kim Bauters probably wasn't using that many computers when the first versions of Microsoft Windows appeared (or, for that matter, the first versions of MS-DOS), but I can assure her that the kind of thinking that allowed BOINC to try to shutdown XP was there, just as it is now. In this respect, Microsoft has learned very little. Linux, on the other hand, has never had this problem (and thus no reason to "learn" from its past) since its solution is not that hard and is present in just about every *nix version ever designed.
But Kim Bauters is entitled to her opinion, even though I wonder what they teach to computer science students about OS design these days.