sysrqer wrote:the objective reality is that you can buy a piece of hardware that won't work in linux, simple as that.
And you can too buy pieces of hardware that work on Win, but not Mac. Or Mac, but not Win and Linux. If you buy hardware, then it is your duty to check support for your OS beforehand. So, this is entirely the user's fault. Except for one thing: migration. This might prevent one to migrate from one OS to the other on their existing hardware. From one OS to the other, not From Win/Mac to Linux specifically.
While documenting myself on FreeBSD, which I am setting up to try on a virtual machine, I stumbled across this, and I think I pretty much agree with it:
"BSD doesn't support common hardware."
Does Linux support hardware that BSD doesn't? Probably. Does it matter? Only if you have that hardware.
But it is simple. You don't care what hardware the OS supports, as long as it supports what you have. Read the hardware support lists and/or just try booting it up. You might be surprised.
When in doubt, check the lists. Hardware support lists are available per-release, such as the lists for 5.2-RELEASE and for 4.9-RELEASE of FreeBSD.
However, thinking about numbers, I think Linux might actually win in terms of hardware support. The fact is that many device drivers are included in the Linux kernel, so they are part of the OS, while Mac/Win don't: you install the drivers directly from the third parties. Win and Mac pretty much support very little stuff on their own. So, actually Linux might actually have the broadest built-in support really.
I think it is a bit of tricky one, this hardware thing, because if Win/Mac end up supporting something it is not their achievement: another company is writing drivers for them. While in Linux world device drivers normally make it to the kernel, as modules, so when Linux support something it is actually the Kernel, and hence the OS, achievement.