TL;DR: OS X users pick their hardware from a very short list of known-good configurations, and when you do the same thing for Linux, the results are equivalent.
Like most nerds I know, I don’t mind disagreement, but something in me just can’t stand a poor argument. And thus it is that I feel compelled to write about one such argument. The one that goes:
I’d use Linux if the hardware support was as good as OS X.
This is (usually) a bullshit argument. Read on for why.
Do you use OS X? Great! I used it for close to two years, and was very impressed with it. I’ve already written about why, for me, switching back to Linux was the pragmatic choice based on the work I do. Linux gave me a more broadly useful, reliable, it-just-works development environment than OS X. YMMV; I’m not here to tell you what works for you, or rehash that old article.
Anyway, if you use OS X, what are you running it on? Did you put it on that old Dell you had lying around? Or the Toshiba with the funky keyboard layout? Or are you dual-booting it on your hand-built gaming rig?
What’s that? None of the above? You bought it pre-installed on Apple hardware? And, lo and behold, it supports that hardware really well? Amazing. What are the odds of that?!
Here’s the problem with the “Linux has lousy hardware support” argument. What people are really saying when they make this argument in comparison to a Mac is this:
Linux didn’t support the hardware on whatever random computer I tried to throw it on. But OS X runs on its reference platform with no problems!
This is a double standard. To have its “great” hardware support, a given release of OS X has to support a few dozen hardware configurations. Linux has to support eleventy-billion, including but not limited to intelligent prosthetic knees. But while a poor argument, this would still be a perfectly viable reason to buy a Mac if Linux had no reference platform. Supporting 95% of the hardware in the universe is no great comfort if your laptop’s touchpad is in the other 5%.
But here’s the thing: it does have a reference platform. No, it doesn’t have an official reference platform, not even whatever PC Linus happens to be using these days. But for developer workstations, there’s a de-facto reference platform, and it’s called a ThinkPad. If you’ve been using Linux for any length of time you know that if you want a linux desktop machine to Just Work, you buy a ThinkPad. There is a self-reinforcing cycle that perpetuates this phenomenon. Linux developers tend to use ThinkPads, so they tend to make sure that the hardware is well supported, so Linux developers tend to buy more ThinkPads, and so on. I don’t know where it started, but that’s how it works.
Chances are you implicitly picked a MacBook or a MacBook Air when you chose your next OS X machine. You paid a premium, but it was worth it for the great overall experience. When I last decided it was time for a new development machine, I picked a ThinkPad X230 because I know ThinkPads are the gold standard for running Linux on the desktop. And guess what? It Just Works. Beautifully. (In fact, these days I’m starting to see Linux support PC hardware better than Windows in some cases, which is just embarrassing for MS. But that’s another topic…)
It’s not completely limited to ThinkPads; these days you can also get a Dell XPS 13 Developer Edition, with Linux pre-installed and tweaked to work perfectly. And of course there’s always System 76.
The point is this: if you have a great OS/hardware experience because you picked from a short list of known-good configurations, that’s no great feat of engineering. If you do a little research, you’ll find that there’s a similar short list for Linux machines. Your choices are limited and you may pay a little more… go figure.
But stop complaining that Linux didn’t work on your dad’s old Compaq as well as OS X runs on a brand new MBA. It’s a double standard and you know better.
(Addendum: in rare cases, someone actually makes the “Linux has bad hardware support” in good faith. Usually it’s in the context of some very new (or very obscure) hardware which they need for their work, but which Linux doesn’t yet have drivers for. If this is you: I hear ya. This article is not about you.)
EDIT: There is an important corollary here for Linux users. If you use Linux and like to advocate for its use, it’s time to stop telling people they should try it and it’ll Just Work. Because it won’t. It’ll probably Mostly Work. And the remaining 5% of not-workiness will cause yet another person to start propagating the “Linux has bad hardware support” meme. If your friends are curious about running Linux, tell them to go ahead and give it a whirl. But make sure they know that for best experience, they will have to research and choose a known-good configuration. Just like they did when picking out their shiny Mac.
EDIT 2: I should also point out that I use Ubuntu, because it has the highest it-just-works factor of any distro I’ve tried. I’ve thought about going back through this article and s/Linux/Ubuntu/.
EDIT 3: Yes, it’s true, even some ThinkPads (or some choices of components) are wonky. I checked ThinkWiki before I pulled the trigger on my last workstation purchase.