Windows as a poorly debugged set of device drivers?

I often quote Marc Andreessen‘s 1995 comment that Netscape would reduce Windows to a “poorly debugged set of device drivers” when talking about Linux on the desktop—namely, that with applications increasingly moving to the web, it matters less whether Windows is on your desktop, because all you need to run your apps is a browser. The assumption here is if you no longer need Windows to run your apps, you’d run Linux, either because of the freedom of choice it gives you, or simply because it doesn’t cost $200 (take your pick there).

Of course, there’s a flip side to this: if the operating system is just a set of device drivers, wouldn’t you want the most extensive set? As far as Linux on the desktop has come in the past few years, it still lags Windows significantly in plug-and-play value. For example, during my recent trip to Moscow, my Windows-running colleagues hopped onto wireless networks with impunity, both at the hotel and even sitting in taxis in the infamous Moscow traffic. While they were clicking on nice little balloons saying “wireless network detected”, I was learning more than I ever wanted to know about iwconfig, cursing all the while. And it’s not just wifi. My laptop only successfully suspends about the half the time. For whatever reason, the 3D acceleration on my laptop doesn’t work with the latest eye candy. And so on..

Me, I actually prefer the Linux desktop over Windows. But now, with all the improvements in virtualization over the past few years, I can still use the Linux desktop as my primary UI and have access to the most extensive set of device drivers. For the cheapskates among us, cost really isn’t an issue either—VMware Player and VMware Server are now available for free, and who doesn’t have at least five Windows licenses sitting around that they aren’t using? Besides, who wouldn’t pay a measly $200 to get Linux perfectly working with their laptop hardware?

Food for thought. Let the flames begin..

17 comments on “Windows as a poorly debugged set of device drivers?

  1. Michael Banck

    Greg KH discussed the ‘Linux is bad at plug&play’ “myth” (as he calls it) at his OLS keynote:

    As for wireless networks, NetworkManager is supposed to do away with all the legacy fussing around in iwconfig et al. Of course, it has been predicted that it would take over the world a couple of times over the last years now, but it seems to be getting there. A big part of the problem are the device drivers of course, at least the underlying WLAN stacks (including WPA) seem to be merging.

  2. nobody

    Ian, use Network Manager. I set my wife up with a cheap wireless-B card for her laptop with NDISWRAPPER and Network Manager. I don’t have wireless at home so I wasn’t able to test it except that I could see neighbours’ secured networks. She is not technical at all but had no trouble jumping onto a wireless network at the hotel she stayed at.

    I use Debian sid.

  3. Fuzzie

    I find stability far more important than having access to buggy drivers for obscure hardware – the “poorly debugged” part of the quote is important.

    But, of course, I have a laptop which sleeps/resumes perfectly, on which the wifi is magical, and with which all my random gadgets work, so it’s easy for me to just sit here and ignore the crazies with that mythical hardware which doesn’t work perfectly with Linux.

  4. Ian Murdock Post author

    It’s no myth, it’s my reality. And it’s not like I’m running super bizarre hardware. I’ve got an IBM Thinkpad X31. Don’t get me wrong.. For the most part, everything just works. Unfortunately, it’s the “for the most part” that’s the problem here, and it’s the few remaining little things that don’t always work—wireless, power management, 3D, etc.—that make for a supremely frustrating experience. And almost working is, in some ways, worse than not working at all.. At least in the latter case, you know what you’re getting into. I used to have time to futz around for hours trying to get stuff to work, but I don’t have the patience anymore, and these days, I have other things I want to do.

  5. Ian Murdock Post author

    Believe me, I’ve tried NetworkManager, multiple times. I actually had it working back in the 0.5 days, and it was nice. When I upgraded to 0.6, it stopped working. I think the problem has something to do with the new wpa_supplicant dependency for WPA support (which I don’t even need)—I need the airo driver, and that doesn’t seem to play well with wpa_supplicant. I tried going back to 0.5, but now it doesn’t compile against the newer DBUS. The old bleeding edge software lockstep dependency problem. Figuring my 0.6 woes had something to do with the driver, I tried ndiswrapper, but that seems incapable of setting the ESSID properly on my card. Or something. I eventually just gave up.

  6. Ian Murdock Post author

    Here’s another one of my favorites (happened just now): The USB mouse will periodically stop working, and I have to unplug it and plug it back in again to get it to work again.. I tried using a PS/2 mouse instead, but when I do that, the scroll wheel doesn’t work after I undock and redock.

  7. gary ng

    I have been running in this mode for almost 2 years but using colinux instead of vmware. It is even more efficient than vmware and suspend/hibernate works which I have a little problem with vmware(the linux clock skewed after resume). Happily having the best of both world and no one can deny a pre-installed XP anyway on a new notebook/desktop.

  8. none

    Do you really think doing this encourages driver development?

    And what happens when you start getting mysterious problems with windows drivers? Is it even possible to track down the problems & fix them? No. You just have to shrug and reinstall windows.

    Best of both worlds, eh?

  9. Adam Brandizzi

    It’s really pratical and useful, but it smells like the OS/2 error: adopting compatibility with Windows drivers, why would hardware vendors produce Linux drivers? Didn’t you see here a serious risk?

  10. Pingback: Linux Daily Log » XGL, repositório autenticado, problemas com drivers e falta de tempo.

  11. Alexandre Oliva

    And what do you do when you hit a bug in the driver? Heck, I have even a USB mouse that will instantly crash Windows on boot up if it’s plugged in on my wife’s notebook! Good thing we don’t ever use Windows :-)

  12. Ian Murdock Post author

    I don’t propose this as a general strategy for Linux by any means! Maybe a practical solution for a frustrated individual like myself. But mostly just food for thought.

  13. Pingback: » Blog Archive » Agent provocateur, or: nice try

  14. Somebody passing by

    All in all this has to do with 3rd party drivers and software, you can’t only rely on smart people working in the kernel guessing what to do with devices they didn’t design. Linux keeps getting better and better, but it has to keep pace with vendors. Some people are lucky and have everything working (like me) and some other aren’t. It can only be changed in the mid-term by making it easy for vendors to deploy their software (I’m thinking of the LSB and Portland) and off course encouraging them to go open source, but also being practical and flexible about propietary software for Linux.

  15. Ian Murdock Post author

    It does have a little bit to do with the kernel though. Right now, it’s very hard to write and distribute a third party driver because the kernel ABI is a moving target. (Yes, the ABI is important—compiling drivers is not a viable option for the vast majority of people out there.) The current solution, “get it added to the upstream kernel”, is an odd and inconsistent one. Why? One of the fundamental strengths of open source development is its distributed nature; yet in the case of Linux drivers, we’re told the only viable solution is to centralize everything. I understand that’s so the kernel developers can change the API at will. But at some point, the quality of third party software/drivers/etc. needed to build a strong ecosystem needs to come before making the lives of the developers easier. -ian

Comments are closed.