If you’re reasonably familiar with Linux based desktop operating systems you might’ve heard this phrase before in some form or another. It has been repeated every year for the past 2 decades or so. Well, looking at Google Trends, it first pops up around the start of the available data (2004), but the phrase might’ve been used earlier than that.

To be fair, it’s pretty clear that the phrase is a little ridiculous, since it’s seemingly repeated every year and people are more or less implying that “this time is different”. Although often times it’s also just seen as a meme, understandably.

Now to make things clear here, I’m not going to be that guy who just trashes on Linux, but I’m also not going to be that guy who acts like Linux will take over the world and replace Windows over the course of a year. While Desktop Linux is very good, there is also a fair share of issues that hinder its adoption. A lot of which aren’t actually the fault of Linux, but rather the circumstances around it.

The baseline

Let’s start of by assessing the situation. As you may know, there isn’t just one operating system called “Linux”. Linux is just the kernel after all. Instead, there are a lot of operating systems built on top of said kernel. The ones I’m referring to here as “Desktop Linux” (or just “Linux”) are generally GNU/Linux based operating systems intended for use on a personal computer. Not the ones used on servers and the like, as those already hold a significant market share.

Adoption of Desktop Linux is still very low, somewhere around 3%, with the exact number varying slightly depending on who you ask. Of course, there are various reasons for the lack of adoption. Linux is free, easily available and many Distros aren’t any more difficult to install than Windows. So what exactly is holding Linux back? Well, I’ll go over some points that I believe are significant in order of my percieved importance.

It’s an alternative

This is, in my opinion, the biggest reason why the market share for Linux is so incredibly low. It’s not the default, but rather an alternative you have to go out of your way to use. This is already too much of a hassle for most users, as they just want their computer to work out of the box. They won’t build their own PC, they won’t swap out parts and they won’t install a different OS either.

Sure, what they do on their computer may be entirely doable using Linux, but if their computer ships with Windows, they’re just going to use that. Telling those people that Linux is free is generally not going to work either, since users weren’t billed for their OS anyways. In their eyes, they just paid for a computer. Of course, the price of Windows is factored into the price of the PC, but lets face it: a lot of manufacturers don’t even have Linux as an option.

For example, the Laptop I’m using right now originally came with Windows 11. I did buy it from a refurbisher, but they didn’t give me an option to buy it with Linux preinstalled or even without an OS entirely. It was either buying it with Windows or not buying it at all. Me being a nerd, I did install Manjaro Linux on there first thing after I got it, but most users aren’t nerds. Many may not even know what an operating system is, so in order to understand why they might want to use Linux they’d need to be on a fundamentally higher level of knowledge. Most people simply don’t need that knowledge for what they do.

That doesn’t mean non-tech savvy users aren’t using it at all though. I’ve seen people here and there who have very little technical knowledge but they still use Linux. And believe it or not: they are very happy with it. I occasionally helped them out setting up printers and such and not once did they express the desire to go back to Windows. I’m sure many more people would enjoy Linux over Windows if it came shipped with their PC by default, but even then, they’d have to go out of their way to find a PC that comes with Linux.

No matter which way you look at it, just giving Linux a try is an inconvenience that many people are not going to subject themselves to, even if it might be an overall better experience.

Picking a Distro

Have you ever heard of a phenomenon called choice paralysis? Some of you may experience it on a regular basis, being the decision of what to eat, what game to play, what to watch on streaming and so on. Now, why am I bringing this up? Well, you can probably guess if you’ve tried or wanted to try Linux before.

There is a truly absurd amount of Linux distros. On one hand, this is a good thing. You can pick one that already comes set up just the way you like it with all sorts of specific features you may want. Or it could be a blank slate that you can set up however your heart desires. Many people will do something called “distro hopping”, where they essentially change Linux Distros all the time in an attempt to find the perfect one for them.

But on the other hand, this is massively overwhelming for new users. All the talk about different Linux Distros doesn’t help either because no matter what you choose, there will be someone out there telling you your choice is wrong. But here’s the thing: the exact Linux distro you use isn’t actually all that important at all. While it’s not exactly advisable to go for small obscure Distros unless you know what you’re doing, you can pretty much go with any major Distro and have a good time for many years to come.

I dare say what Distro you should pick is entirely personal preference. Of course, there are objectively bad choices, for instance joke distros like Hannah Montana Linux. Or depending on your level of experience and willingness to tinker, something like Arch Linux or Void Linux might not exactly be the best idea either. But then again, people who use ultra-minimal Distros usually know what they’re getting themselves into and are willing to deal with the added complexity for the sake of total customization. Or they just use them because they enjoy tinkering with their computer. They’re definitely aimed more at hardcore nerds rather than regular users though.

Okay, you get the idea. Established Linux users generally have Distros they prefer and Distros they dislike, but the same can’t be said about new users. There is a simple answer for the newcomers though. When in doubt: use Ubuntu. It’s popular for a reason. If you don’t like that, try Fedora or Linux Mint. Maybe one of those will become your favorite Distro, or maybe you don’t like either and end up using arch btw. It truly is a rabbit hole that never ends.

Compatibility

Let’s address the elephant in the room. You can’t talk about the adoption of Linux without talking about software compatibility. In the past I tried switching to Linux many times, usually in form of a dual boot setup. After a while however, that would quickly turn into me booting Windows exclusively. And the reason for that is generally that a lot of things I used simply didn’t work on Linux.

For me, this has changed to an extent. These days, I run Manjaro Linux on my personal laptop and my work laptop. This is because I simply realized that nothing I do on these machines actually requires Windows, so I decided to ditch it on those machines. What surprised me the most however is the Steam Deck and SteamOS 3. Every single game I played on there in the last 1 1/2 years worked without too much trouble. It’s gotten to the point where I pretty much exclusively game on my Steam Deck now.

But despite the many machines I use Linux on these days, there’s still one machine left that I can’t help but run Windows on. That is my big desktop PC. And the reason for that is entirely down to compatibility. Both hardware and software. For illustration, have a look at my desk:

My desktop PC setup

This picture is a little outdated, I actually have a couple more things on that desk by now, but this is enough to get my point across. I have a lot of very unusual Hardware meant for music production. And even among music producers, some of this hardware is not exactly widespread. And believe me, I would love nothing more than to ditch Windows on this machine as well.

But that’s only the start of the compatibility Issues. I use Reason for music production, so of course I tried running it with Wine. And sure enough, it does start up and the integrated devices seem to be working and Sound is working too. But that’s where the good news ends. The Toolstrip is not clickable and you can’t use ASIO as far as I know, which makes it effectively useless for me. I didn’t even bother testing beyond that, because that’s already broken enough that it simply wasn’t worth testing further.

And this is really just one of many examples. Sure, you could say “just use [insert FOSS alternative here] instead”. And yeah, there are some people who make music exclusively with FOSS, but this is simply not practical for most people. In fact, I’d go as far as to call it a self-imposed challenge, sort of like a Pokémon Nuzlocke. Sure, some people might enjoy working like that, but you are very much limiting yourself if you choose to go down this route.

This might not be a big deal if you start out with tools like this, but most of us already have Software for our various use cases that we know and maybe even love. And if you’re like me and you’ve invested 4-figures into the software you use, you will not be okay with ditching it. After all, that would be about as smart as just lighting a stack of cash on fire.

Okay, this section turned out a bit negative, but in the end, whether this affects you depends entirely on what you use your computer for. As I just made abundantly clear, massive proprietary software suites tend to have some issues, but it’s not like this is down to tools like Wine being bad. Sure, it’s not perfect, but it actually works very well for what it is, especially when you pair it with other tools.

For instance, game compatibility is actually downright phenomenal considering 99% of games were never meant to work on Linux at all. This is mostly thanks to Valve and the community contributing to Proton, Wine, DXVK and other related tools. Sure, you may have to occasionally install a different proton version or adjust launch parameters, but you can generally get a game up and running perfectly within 5 to 10 minutes if it doesn’t work out of the box already.

There’s even some games that won’t work properly on Windows 10 anymore due to their age but work perfectly fine running through Proton. Sure, there are some situations like how excessively privileged and invasive anti cheat software tends to be incompatible, or how videos in Visual Novels sometimes won’t play, but everything else usually works.

Not to mention, for less complex software Wine is actually very reliable. This is especially true for older games or utility applications. You can simply download them, double click the EXE file, and the application will run just like it would on Windows. Of course, there’s also all the software made specifically for Linux that you can’t easily run on Windows without a virtual machine of some kind. And sure, you can always virtualize Windows on Linux too, but I don’t think virtualization is a particularly good solution to the problem. This is essentially what WSL2 is doing: running Linux in HyperV.

The amount of customization options in Desktop Linux is nothing to scoff at either. Things you simply couldn’t do on Windows without a lot of tinkering. And even then, you might not be able to get it to work at all. KDE Desktop effects are one such thing, and I absolutely love them. The compatibility issues really go both ways. But of course, most people don’t even know about the stuff exclusive to Linux, which brings us to our next issue.

Lack of familiarity

No matter how good Linux is, most people have simply never used it in their entire life. This will inevitably lead to users blaming Linux for issues that are caused by their own lack of knowledge. Many people believe that Linux is difficult to use, as is evident by memes such as this:

Linux Web Browser Install Meme

Sure, this is still a Meme, which is very much an exaggeration of reality. But people wouldn’t make memes like this if there wasn’t at least some some truth to it. On Linux there are often many ways of achieving the same goal. Some are very easy, some are very difficult. I presume this meme came to be since Google Chrome is by far the most popular web browser. However, Google Chrome usually isn’t shipped in the default repositories for any Linux Distro, so you can’t just use your Distros built in package manager. You have to manually download a deb or rpm Package from Google and install it yourself. Guides on how to do so will often tell you how to do it on the command line.

To be fair, I think the guides are partially at fault here too. Using Google Chrome on Linux is quite unusual. They should probably direct people towards Chromium instead (which is essentially the OSS build of Google Chrome). Unlike Google Chrome, Chromium is available in the official repositories of pretty much every Linux Distro, so it’s very easy to install. In fact, I’d argue this is even easier than on Windows. It’s just that due to peoples lack of experience, they expect to do things like they do on Windows.

This is simply not how you do things on Linux. It’s a different OS after all, so things are not going to be exactly as they are on Windows. I genuinely believe that if most people grew up using Linux, the popular opinion would likely be that Windows is difficult to use. However, the reality is that most people are currently using Windows, so they will expect things to work exactly the same way they do on Windows. When Linus Tech Tips did a Linux Daily Driver Challenge about a year ago, Linus ended the last episode with the following statement:

I saw an interesting criticism of this series that basically accused me and Luke of intentionally smearing Linux and its Developers. Because we were gonna come into this with a “basic Windows gamer perspective” and try to do things the way they do things. Well, newsflash guys, that’s most people. And if you legitimately […] want Linux Desktop to grow, you need to accomodate those people.

I believe this is a reasonable thing to say. Naturally, if you want someone to switch to a different OS, why would they do it if they are going to end up having a worse experience? However, I think there is a reasonable limit to the amount of accomodation that should be done. Linux does certain things differently, yes. But it’s not different for the sake of being different, it does certain things differently because they are aiming to do things better.

But of course, it’s not like Linux Distros aren’t trying to accomodate Windows users at all. In fact, they’re already doing quite a lot. Most noticeable is that many Linux desktop environments such as KDE Plasma or Cinnamon are often set up to imitate a typical Windows desktop by default. However, there are always going to be things that are just different due to the nature of Linux being a different OS. In fact, it’s many of those differences that actually make me want to use Linux in the first place.

If everything was exactly the same as Windows, why would anyone want to go through the effort of switching to Linux in the first place? They already have a Windows license after all, so it’s not like they’d be saving money. I believe doing things better than Windows is just as important as accomodating users coming from Windows. Realistically speaking though, users who attempt to change to a fundamentally different operating system also need to accept the fact that they will need to learn how to use their new OS at least to some extent. You weren’t born with the knowledge to use Windows, you had to learn it. So you’re very much capable of learning Linux too.

The command line

Here’s a brief little side tangent that’s related to the lack of familiarity. But this one I’ll blame on how some people are trying to teach new users Linux. Look, I love the command line just as much as they do, but we need to realize that most users will be intimidated by it. People almost never use the command line on Windows, so we shouldn’t tell people how to do things on the command line. We should tell them how to do it on the desktop.

For example, if someone asks how to install a program, don’t tell them to run sudo apt install program on the terminal. Tell them to open the Software Center, search for the program and click the install button. This should be a very familiar process for anyone who has used a smartphone before. Seriously, avoid pointing new users to the command line as much as possible.

Their initial experience shouldn’t be fucking around on a terminal. It should be interacting with a beautiful desktop environment. There’s a reason why people moved away from MS-DOS. I know many people believe that learning the command line is a core part of learning Linux. But look, they can still learn it later if they want to. You don’t even need the command line for normal use so stop directing beginners towards it.

System Updates

We all know Windows Update, right? It’s annoying, right? If you decide to click the “update later” button a few too many times, Windows essentially forces you to install updates. As much as I like to rip on Windows, I honestly can’t blame Microsoft for this. In fact, if I was in their shoes, I would’ve probably done the same thing.

Have I gone completely crazy? Am I joking? No. I’m actually serious. Yes, Windows Update is absurdly annoying, but for a very good reason. The average user simply wouldn’t update their OS if it didn’t constantly nag you about it. And even then, most of them would simply ignore the nagging, so they still wouldn’t update their system unless you force them.

Keeping your OS up to date is more important than ever, no matter what OS you use. This is especially relevant on Linux where almost everything is installed and updated using the systems package manager. So for instance, your web browser would be hopelessly outdated unless you regularly install updates. If you refrained from doing this for too long, many sites would eventually stop working. Or worse, you might end up with your personal data compromised because of some security flaw that would’ve been fixed by an update.

There are of course ways to set up automatic updates, but by default (on most distros) you’ll just get a little notification telling you that updates are available. It’s incredibly easy to ignore or even miss entirely. You really need to be aware of your responsibility to install updates regularly. Linux does give you more freedom, but freedom generally doesn’t come without any strings attached. It’s like when you move out of your parents house and have to start paying the bills yourself.

Trusting the user

Updates were just one example of this, although probably the most relevant one for most people. But this “issue” runs much deeper. Here’s the thing: Linux trusts that users know what they’re doing. Unfortunately though, most of them don’t. If you’ve ever watched tech-illiterate people use a computer, you’ll know exactly what I’m talking about. Confirming every single popup without reading it, completely ignoring errors and warnings, clicking on any random link, downloading any random crap they come across and so on.

You get the idea, right? Most users can’t be trusted to know what they’re doing and Microsoft is very much aware of that. It’s the unfortunate reality of computing. The amount of people who really know what they’re doing is quite small. Hell, even as a Linux focused Sysadmin with 6 years of experience I still make stupid mistakes from time to time.

For example, I recently screwed up the permissions for my home directory by accident because I ran sudo chown -R root:root ~. Of course, thanks to my experience I immediately realized what my mistake was when I saw my entire desktop environment crash and go to a black screen. See, since I work on root shells most of the time I assumed ~ was referring to /root. But of course, since I was running chown via sudo and not on a root shell ~ actually referred to my own home directory, meaning I just locked myself out of it.

Lots of important stuff is in there, so it’s only natural that doing this would break my entire user environment. It took me maybe 20 seconds to log in to a different tty and fix the permissions, so this wasn’t a big deal in my case. Imagine if an inexperienced user were to run this by accident though. They’d probably call the next best tech-savvy person they know and insist that they did nothing and it just broke by itself. I very much doubt Windows would even allow you to lock yourself out of your home directory. Although even if it did, it would likely involve more steps than just a single command.

I guess that’s yet another reason why you shouldn’t point new users to the terminal. It’s very easy to break stuff if you don’t know what you’re doing. And evidently, it’s also very easy to break stuff if you do know what you’re doing but have a slight error in your expectation on what the command you’re about to run is actually going to do. Just that unlike a new user, you’ll actually know what you did wrong and won’t blame the OS for your own mistake.

Conclusion

In the end, it’s a pretty difficult situation. As much as I like Linux and would love if it was more popular in the Desktop market, I just made abundantly clear what sorts of issues are holding it back. Now to be clear here, a lot of these things aren’t the fault of the people developing Desktop Linux, but rather just circumstances that are the result of many different things coming together.

I personally will stick with Linux wherever I can, but I won’t force it. If Windows provides a significantly better experience for my application then I’ll be using Windows instead. However, in all the places I do use Linux I’m very happy with it. You’d be surprised how many things you can do on Linux that you can’t do on Windows.

The simple fact of the matter is, if we want change then we all need to work together to make it happen. This includes things like testing if we can work with Linux instead of Windows. And who knows, maybe at some point if Linux becomes popular enough it will become more common for PC vendors to ship PCs with Linux by default and Windows as an additional option for those who still need it.

It might just be wishful thinking though. I hope this post could give you some relatively unbiased information on what might be holding Linux back. Of course nothing is truly unbiased, but I did try my hardest to look at both the good and bad. Though I guess due to the nature of the topic I ended up talking a lot about the bad stuff.

Don’t let that discourage you from trying it though. I could talk just as much about things I love about Linux. I’ll probably do that in some future posts.