First, I want to be absolutely clear about something. I have been a full time Linux on the desktop user for well over a decade. It has been and will always be my preferred platform for desktop and server usage. It does just what I need and I appreciate that.
All of that said however, the "masses" haven't gravitated towards Linux for their desktop usage like I had hoped. In this article, I'm going to explore the reasons why I think this has happened.
Inside the Failure of Desktop Linux
1) Linux isn't pre-installed - No matter how much we may debate it, having Windows pre-installed on PCs means that's what people are likely to end up using. In order for someone to move over to Linux on the desktop, there must be a clear reason to do so. There is the problem. The only time I've personally seen users make the switch over to Linux from Windows comes down to frustration with Windows or a desire to advance their skills into an IT field.
My own Linux story, for example, was a mixture of the two examples above. First off, I was just done with Windows. I had already been dabbling with Linux at the time I completely switched, but I become disenfranchised with the Microsoft way of doing things. So for me, the switch to Linux was based out of frustration.
Had I not experienced any frustrations with Windows, I might not have ever thought to jump ship over to an alternative. Even when I built my own PCs myself, the OS offered at computer stores was Windows only. This is a huge hurdle for Linux adoption on the desktop.
2) Linux freedom vs convenience - It's been my experience that people expect a user experience that's consistent and convenience. How one defines this depends on the individual user. For some, it's a matter of familiarity or perceived dependability. For more advanced PC users, a consistent convenience may mean a preferred workflow or specific applications.
The greater takeaway is that when people are aware of other operating systems, they will usually stick with that they've used the longest. This presents a problem when getting people to try Linux. When using a desktop platform for a long time, you develop habits and expectations that don't lend themselves well to change.
3) Linux lacks legacy software - Expanding on the idea of convenience, another challenge is enticing those who have legacy applications only found on Windows. Even if we consider suggesting Linux-specific software alternatives, we're expecting users to change existing workflows. I've found most people to be resistant to this. Not because one type of application is better or worse than another. After all, this is a matter of personal perspective. No, the real issue is that users have existing workflows, file types and overall application expectations. Switching away from this doesn't always go all that well.
4) Linux networking isn't for the faint of heart - Networking in Linux is reliable, however, it's reliant on understanding the differences between Windows and Linux networking. In Linux, both Samba and NFS file sharing are conf file based. And while it's not difficult to learn, it's not going to be as straightforward as you might find with Windows.
On the flip side, connecting to the network itself is incredibly simple. Wired or wireless, modern Linux distros handle connecting to a network in a seamless manner. But it's unfortunate that even with the most newbie friendly distros, you need to drop to a command prompt to create a Samba password or edit a conf file for an NFS share.
5) Linux video card support is tricky - From a basic perspective, graphics card support works just fine in Linux. However, things become a bit muddled when you bundle in Wayland vs X. Two different display server options mean different benefits and downsides when choosing one vs another. Some distros use Wayland as the default, which means some X reliant applications won't work.
Then there are the laptops with shared graphics. Laptops with NVIDIA/Intel graphics tend to be the biggest challenges with some Linux distros. I've found this to be one of the most common issues facing newer Linux users. Granted, graphics switching has gotten a lot better over the years. But it's still distro dependent and sometimes upgrades can throw new issues into the mix.
Last, there is the issue of choosing the right driver type. In some distros, a FoSS friendly driver is set by default. But in other distros, a proprietary option is the default. On the surface this doesn't seem like an issue, but it does add to some confusion.
6) Linux PulseAudio sound server is confusing - Linux audio is actually pretty good. However, the PulseAudio sound server sitting on top of the audio architecture is out of touch and out of sync. The fact that I can adjust the volume with PulseAudio yet if the sound device is muted in alsamixer it must be dealt with at the alsamixer level blows my mind. If you're going to layer a sound server on top of ALSA, make darn sure it syncs up its adjustments between sound server and architecture.
Making matters worse is the fact that most popular desktop environments don't fully take advantage of what PulseAudio has to offer. Most desktops lack Recording and Playback tabs in the volume control settings. When you launch a Hangouts session or play music, you might wish to route said audio to different playback devices. With most distros, this requires you to use padevchooser.
7) Linux lacks triple A gaming titles - Linux gaming has come a long way. Thanks to Valve, GoG.com and others, Linux gaming has evolved tremendously in recent years. The title availability and desire from developers to include Linux in their operating support has been fantastic. That said, there is still a lot of improvement to be had with Linux gaming.
I'm not sure what the solution is to get more game developers on board with porting games to Linux, but for now I think we'll have to continue voting with our wallets. Sadly, I continue to see Linux users justifying their "need" for Windows games and thus, dual-booting their operating systems. This is a cop out and frustrates me more than anything. No one needs Windows gaming, it's a choice, not a requirement for sustaining life.
8) Linux desktop environments - As much as I love the choice presented with Linux on the desktop, I can understand how some people might feel overwhelmed. It can be challenging to select a specific distro based on a desktop environment. So being able to choose and discover new desktop environments is exciting. It can absolutely be confusing for some newcomers.
The reason for this is most people are coming from the limited world of Windows or OS X. You have a release and that's what you get. There is no choice, unless you wish to use an older release of those proprietary OS'.
9) Linux distros vary in quality - Most popular Linux distros are fantastic. Unfortunately there are distros that are less than fantastic. Some of them are downright bad. Without labeling some and leaving out others, suffice it to say that it's not enough to merely choose a distro based on popularity.
My advice is to look at distros with a strong backing. Whether or not this is a strong community backing or corporate backing depends on what you're looking for.
10) Linux is overshadowed by ChromeOS - ChromeOS is an incredibly limited OS yet has gained in popularity thanks to cheap, easy to use laptops and its deep integration into Google services. Sadly, printing and scanning remains a joke with this OS. Yes, it's doable...but not without jumping through hoops. Despite this, ChromeOS is based on Gentoo Linux and perhaps this is as close Linux will get to being a mainstream desktop OS.