The Oatmeal made a webcomic that's been reformatted and recently passed around Facebook and other social media. It's titled “How To Fix Any Computer” and pokes fun at Windows, Apple, and Linux each in its own way. And although I love The Oatmeal, this comic’s screed on Linux promotes a myth that needs to be dispelled. The "How to fix Linux" instructions begin:
Learn to code in C++. Recompile the kernel. Build your own microprocessor out of spare silicon you had lying around. Recompile the kernel again. Switch distros. Recompile the kernel again but this time using a CPU powered by refracted light from Saturn.
Nothing could be further from the truth. In my experience as a professional Linux systems administrator, people who compile their own kernels are at least one (and usually two) of the following: kernel developer, avid hobbyist, or doing it wrong.
Part of the problem is that since Linux has always been a favorite operating system for hobbyists and programmers, people assume that you must be a hobbyist or a programmer to use Linux. Combine that with the bad habits and assumptions learned in other operating systems, and you get a comic like The Oatmeal wrote.
What really makes Linux challenging for new users are the bad habits they've brought with them from other operating systems. For example, let's say that you went to a retail store and bought a new wireless card. You brought it home, installed it in your system, and—if the system is Windows—you probably put the CD in the drive and tried to figure out from there what to do to install its driver. Did Windows bring the “new device detected” dialog up and ask if you wanted it to look for a driver? Maybe. If it did, should you click “OK” or “Cancel”? Well, that's hard to say—some devices will work one way, some devices work another. What's on that driver CD? Is it just the driver files that Windows' own installation wizard should be pointed to, or is it an executable that does the whole installation for you? Again, who knows? It's also entirely possible that the driver on the CD is too old and outdated to work properly on a modern machine. Maybe after discovering that you can't connect to your WPA2 network, you'll have to go to the manufacturer's site and download a new driver. And so it goes, on and on (and on!) from there. This is considered normal, and nobody likes it, but most people are accustomed to it.
So it's no surprise that the same person with a Linux computer might immediately start looking for a driver on CD, or a driver to download, or something else to make things difficult, where in fact, it should Just Start Working immediately, no installation required. Of course, I picked on wireless cards for a reason. Although most of them are supported out-of-the-box under Linux, they’re still the class of device most likely to not be supported, due to factors like a bewildering array of constantly changing chipsets and regular efforts to lower costs. But, being accustomed to having to do everything the hard way because of other operating systems, a user is likely to make the mistake of delving into 20-page long forum posts with talk of madwifi and encapsulated Windows drivers and blacklisted kernel modules, until ten hours or more deep into the rabbit hole, they cry, “Linux is HARD!”
Whereas the proper response was to realize that although most hardware Just Works with no hassles under Linux, this particular piece didn’t. The solution would be to simply exchange it at the store for something that does.
Users’ own expectations of frustration is generally their own worst enemy. Because other operating systems have taught them that everything is frustrating, and you just have to deal with it, they consider that experience normal. But it isn't, and it shouldn't be. And that makes Linux the better option—not the more difficult one.