Ted made an interesting point that Microsoft is failing to market the benefits of Windows, and instead seems to just be getting angry with people who are converting.
One of the features he mentions is Windows hardware compatibility. By and large, any random piece of hardware bought from a store is more likely to work properly with a Windows machine than it would with a Linux machine.
Of course, the more interesting question is, "How can we change that?"
Last week, Tridge and I had a discussion about exactly this. Tridge's idea is to create a distributed driver test farm, along the same ideas as the samba build farm (or distcc, or Seti@Home), except for kernel testing.
The idea's pretty compelling: I get ahold of some brand new (or old, or esoteric) piece of hardware that's unsupported under linux, stick it into a spare box, and run a shell script on the box that causes it to hook up to the distributed test system. Periodically, it gets told to download, compile, and run some new kernel code and tests, and rsync the results back up to the server. A fwe weeks later you pull the card out and put it in your main box, upgrade your kernel, and presto! it's now got full support and a lot of testing.
Of course, it gets interesting when you think about the details. What if the kernel panics, wedges, or otherwise goes out to lunch? There's a few ideas for this - software/hardware watchdogs, kexec, grub fallback, etc. I've been fiddling with these ideas a bit this last week (no eureka's so far, but still much to learn.) As a last resort, I suppose we could just encourage everyone to invest in a remotely controllable UPS so the system could power cycle their hardware as needed; this seems inelegant (and possibly hard on the hardware), but might be the ultimate solution.
I'm also curious about the testing itself. Initially, we could just do install tests (just load and unload the module), but I think ultimately we'd really need a crapload of tests. Maybe a given test could work across a range of drivers, but even so I imagine we'd be talking about a LOT of tests. Recruiting enough people to write enough tests seems like it'd be a challenge.
Yet despite the devils in the details, this idea has a huge upside. Imagine helping Linux beat Microsoft at its own game, and steal its #1 best feature? Imagine having MORE confidence plugging some random dohicky into your Linux laptop than you'd have plugging it into a Windows system? :-)
Aside from the boot robustness / power cycling functionality, I think it would not really be all that difficult to do. The code to do a test farm like this is a little complicated but nothing we've not done before. A lot of us hardcore geeks have at least one spare box sitting aside that they'd probably be willing to devote to this cause. And I'm sure like me you've got a random assortment of hardware that doesn't quite work right on Linux, (and probably some old stuff that doesn't work under Windows anymore either!) So the hardware should be doable too.