maciejsitko said:
I mean why do you have to buy hardware that your system supports instead of OS supporting a wide variety of devices.
Because that's the way it is. Everybody does it.
Let's get one thing straight: Windows is the only operating system under which the majority of people can expect to never experience hardware support issues. This is not because Windows supports the hardware, but because hardware vendors develop drivers for Windows in order to maximize their profit margins and market saturation. The only role Windows plays in that process is to be installed on the greatest number of personal computers in the world, and since (as the OP said) most people can't be bothered with mucking around with anything after buying a new computer, vendors work under the assumption that most people will (and perhaps should) just use Windows. Hardware vendors support Windows, not vice versa.
OS X works very well on the very limited combination of hardware for which Apple has developed it. That's it. There's no guarantee it could work on anything else. People who want to (only semi-legally) run OS X on machines other than those manufactured and sold by Apple need to build computers with the same hardware combination, and then need to use collections of software shims to work around firmware and kernel incompatibilities. Again, it's expected that if you're gonna use the Mac OS, you're gonna use an Apple computer, and since the range of hardware is so limited---one model per product line per year, each containing one model of Intel CPU, one model of Nvidia GPU, Intel motherboards and Toshiba disk and optical drives---Apple has managed to work out deals with vendors for specialized drivers. It's very easy to develop a decent OS when you don't even have to think about hardware compatibility, since every one of your customers and employees are running the same computer year after year.
Linux works astoundingly well on a wide variety of hardware, from ten-year-old laptops to the latest souped-up desktops and enterprise-grade servers and even a few tablets, provided that hardware was manufactured by Intel and/or Nvidia. Try running a Linux distro with the latest kernel release on an all-AMD or ARM motherboard, and see how many problems you run into. I've yet to run a Linux distro on AMD hardware that didn't require users or developers to maintain their own separate Xorg builds in order to keep things running, and CPU throttling/frequency scaling can be a pain And while it's true that the Linux kernel contains drivers for tons of hardware and gets new drivers fairly early, much of the in-kernel drivers are for obsolete hardware, and many new drivers are made on the "Good enough" principle, after which they just lay around until something breaks (Nvidia Optimus comes to mind: as long as Bumblebee worked, nobody bothered writing a proper driver. Then not long ago Bumblebee broke, at which point everyone got pissed. Preliminary, official Optimus support has been sitting in the kernel for a long time with little progress). The Linux kernel contains dozens of obsolete or non-functional hardware drivers that exist only because nobody's bothered to remove them. In the last couple years, most of the in-kernel hardware support has focused on the latest Intel chip developments and Nvidia dual-graphics support, because
Intel and Nvidia have paid employees working on those things. Most everything else hasn't changed in some time---partly because the hardware hasn't undergone any fundamental changes in some time, and partly because Linux devotees are already used to buying computers with hardware that's proven to work. Again,
it's very easy to provide a decent OS when everyone's using the same hardware.
In all of these cases, though, the primary issues are graphics and ACPI, and FreeBSD is no different. FreeBSD does indeed support a wide variety of devices, but it isn't a wide variety of devices you're worried about---it's your graphics chip.
The only complaints I've seen about hardware support in my short time here all involve integrated graphics and ACPI (namely suspend-to-RAM). The former is finicky; the latter, despite being a
de facto standard, varies from one machine to the next, and drivers for it are made
by vendors
for Windows. It was precisely this that kept me from switching to FreeBSD as my main OS for ~1.5 years. Everything else---SMP, USB support, wifi, SD card slot, AHCI interfaces, all of it---worked just fine the first time I tried FreeBSD some years ago. FreeBSD now contains support for multi-core CPUs, Intel hyperthreading, TRIM for SSDs, support for most wifi cards, for ZFS, for hardware and software RAID, and everything else you'd expect from an advanced, modern PC operating system. It just doesn't have a proper driver for your integrated grapics chip right this second. Yes, it takes a while for FreeBSD to catch up to new integrated GPUs because resources are limited (Do you buy a new machine every year, and write the driver for its GPU yourself?) and the devs insist on doing things right the first time. If you'd installed FreeBSD on a "typical" Intel + Nvidia desktop, though, you'd likely have nothing to complain about. Either everything else FreeBSD has to offer is worth waiting a few months for the next release, or it's not. That's your call.