How It All Started
Though Linux has come a really long way since its conception and early geek days, after 15 years it still shows signs of early puberty. But it’s not its own fault. What has always plagued Linux from the very beginning; the very thing that had always hindered its more widespread adoption as a real, free, working alternative to Windows, was the hardware support. Or lack of it.
Unix had traditionally been a vendor based business. Vendors sold you the machine, the OS, the compilers, and almost everything else that you needed to run it. So no matter exactly what machine people were using, they had a Unix shell and system that ran on their hardware as advertised.
The PC explosion upset this whole model of doing business. While it created many new markets in the following years, it also decoupled hardware vendors from software, and particularly from operating systems. MS-DOS became king, and vendors that didn’t switch either died out or consolidated and evolved to adapt to the changes. People started having their own computer at home, and another at work.
Vendors now, instead of having to maintain both machine and operating system, found all they had to do was support MS-DOS. Thus each and every piece of hardware that came out on the market, from the early AdLib sound cards, to the latest incredibly powerful GPUs, had to get close with Microsoft.
What’s Wrong With That ?
And that’s all fine if you "just want it to work", and you don’t mind you have limited options. And are being more or less led around by this neat interdependence: vendors support Microsoft, and Microsoft makes sure they have customers waiting to buy anything they sell for a PC.
What if you don’t want your options to be limited by corporate market agreements, and just want to work, but with a free, open source, operating system? Well, then write your own drivers.
And around the world, people embraced Linux as the first truly free piece of software that had potential to actually work rather than remain a cool idea or just a boot screen. So they started getting their hardware to work.
How Hard Could It Be?
Most kernel developers, if not all, are experienced (or had to become) system programmers. Being highly inquisitive in nature, and appropriately skilled in writing system code, reverse engineering hardware became almost a sport of sorts. Little by little more hardware was added to the supported list, and through a never ending circle of development, whatever started out as a broken and buggy driver ended up as a rock solid piece of code (with very few exceptions). Basic IT shop stuff like SCSI(Small Computer System Interface)/IDE(Integrated Drive Electronics) controllers and NICs(Network Interface Card) came first, and then little by little the list expanded to sound, video, modems, USB devices, etc..
But everything was written by volunteers, people that wanted and could make their own hardware work. People that wanted to make cheap affordable hardware work with Linux as well. They always asked some help from hardware vendors, some specs, some design notes, guidelines, anything that would describe the hardware’s operation, so that they could write their own driver. But they seldom got anything.
So, for the vast majority of hardware, for the past 15 years, the Linux community has had little vendor support. Vendors didn’t really care whether their hardware ran on Linux. With the exception of some networking vendors and some I/O controllers that were already in the Unix market, (Linux had early on qualified as a successor to Unix machines, making support both easy and a logical step for these vendors), Nvidia and then ATI. (I still don’t know what made Nvidia provide drivers – I do know ATI followed suit just because Nvidia did it.) Every other hardware vendor has been oblivious to the fact that there exist Linux users who would buy their product (or bought it and can’t use it).
It Gets Worse Before It Gets Better
And apart from blunt lack of care for support, some vendors even choose to withhold information about the device, making the driver either impossible to write, buggy and/or broken. It would always be in an alpha state, and generally making people avoid it like the plague if at all possible. In some cases where that can’t happen (most notably wireless adapters in notebooks – and the whole suite of problems that the linuxwireless.org team have dealt with in the past), users are stuck either buying other hardware (which is not the point) – or sticking with Windows.
So there’s this market grip that hangs like a Damocles’s blade over user’s heads. Silently hardware vendors are encouraged not to make their products more competitive, because they believe writing or supporting Linux (and other free OSes like the xBSDs) drivers will prove harmful for them or their long lasting benefactor.
How Bad Does It Look?
Fortunately, there has been growing adoption of Linux by ordinary home users (and Ubuntu is owed many kudos for that – though it didn’t start very well). Now, there is ongoing realization by major hardware vendors and key players in the industry that Linux is no longer just a fad, but rather a reality that must be dealt with for better or for worse, and things are starting to improve. Proprietary video drivers for both vendors that cater for 99.9% of the users are available and in almost up to par quality with their Windows counterparts. Wireless networking is being treated by chipset makers as crucial to an ever more networked and mobile computer reality. With the boom of netbooks and the laptop market in general, especially when some of those run Linux out of the box, not having a Linux driver seems wrong.
Printers were an early example of a switch towards supporting Linux, since as an external peripheral it’s easier in some cases to develop a driver. Plus, it’s such a common device across all value categories -from SOHO(small office/home office) to enterprise- with usually a protocol and interface that’s common between families of the same vendor, that there’s little point in not providing a driver. Printers were also one of the first device categories to be hunted down for support by the kernel developers. Now with the Ethernet support and Samba printer sharing gaining momentum in the small office printers, Linux just plugs and plays.
Will It Really Get Better?
USB devices are a strange bundle, because first of all the USB specification isn’t exactly an RFC quality document. Vendors try to make up for it with weird software solutions or sometimes a bit of magic on their part, making writing a USB driver a challenge in itself. At least the more the industry moves towards open standards (even though Intel seems reluctant about USB 3.0), interoperability between OSes will improve. More and more vendors will support Linux as long as its "market" share grows (and the maintenance cost is lowered – AMD is thinking about open-sourcing the ATI proprietary driver just for that reason alone I’d wager).
All in all, things have painfully improved since Linux came to be, so much so that it’s now unfair for anyone to treat it as an experimental testbed, or, if you like, a poor relative.
Maybe in the near future the market will shed it’s misgivings about Linux and free software, adapt as it did in the past, so we can all make our lives with computers easier and almost, trouble free, without being forced to accept things as "fine the way they are".