I love using Linux. I make a point out of using only free and open source applications. This is easier on a desktop than on a phone, yet at the end of the day, I have to admit that I still end up using quite a bit of proprietary software.

Chances are, even if you're a free software-loving Linux user like myself, you are too.

This is something that became clear to me the longer I used Linux: It's really hard to only use open source software. Even when you think you are, there's often closed source code operating quietly in the background.

Turns out, the Linux desktop isn't quite as free as it's made out to be, and that's only part of the story.

Let's Start With the Linux Kernel

When you install a Linux distribution, what you see on screen isn't Linux. The operating system known as Linux is technically just the kernel, the part that enables software to talk to your computer's hardware. Most of what you see is free. It's in the kernel where things get iffy.

The Linux kernel contains binary blobs. These are closed source bits of software that are packaged only as opaque binary files. That means not only are we not permitted to edit the code, we're not even able to see it.

These binary blobs consist primarily of hardware drivers and firmware that make Linux work on more hardware. Ideally, companies give developers the technical documentation needed to make Linux run on their hardware. Many provide closed drivers instead.

Linux is able to run with these drivers, but it often doesn't work as well as it otherwise might (that is, as if the coding were done by the same people that work on the kernel itself). These drivers also introduce security risks, since we don't fully know what they do or what flaws may be present.

The Linux kernel hasn't been entirely free and open source since 1996, the year it began accepting binary blobs. For over two decades, Linux has contained bits of closed, proprietary software.

If you find this troublesome, you can download Linux-libre, a version of the kernel with all the closed bits stripped out. Unfortunately, Linux-libre doesn't support the hardware whose vendors don't provide technical documentation.

This means you can expect to run into more issues with graphics cards and network cards. Your Wi-Fi may not work at all without buying a special USB dongle.

Then There Are the Drivers You Install Yourself

When I first switched to Linux, I needed to install a proprietary driver in order to get online wirelessly. My graphics card worked, but I needed a proprietary driver to get the smoothest experience and play games.

The situation has improved in the years since, but if you're using an NVIDIA graphics card, you still need a proprietary driver to get the best gaming experience.

Oftentimes, you install these drivers immediately after installation and forget about them. You don't have to think about them again until it's time to upgrade to the next version of your Linux distro. But all the while, proprietary software is running in the background. There's a corner of your computer where the code is blocked off.

This isn't merely a matter of security and privacy, which you may be concerned (or ambivalent) about. This is also a matter of Linux developers being less able to provide you with the best computing experience.

When they have access to the documentation, they can fix bugs and make sure all the parts fit together. As things are, you're dependent on outside companies to provide well-developed drivers for a relatively small number of users.

Not All Software in Linux App Stores Are Free

In most Linux distros, the vast majority of the software you download doesn't cost money. Most of it is also open source. But there is occasionally proprietary software tucked away as well, and unless you both care and know what to look for, you can very easily end up with more closed source code on your PC.

Examples include software like Steam, Skype, and Slack. This is often software you need in order to do your job or stay in touch with friends.

Maybe you'll install codecs to get music and video files to work, unaware that these are proprietary files. You think you're using a completely free and open source computer, only to gradually realize that hasn't been the case.

Now Let's Talk About the Web

Even if you jump through any hoops necessary to run a completely free distro running the binary blob-free Linux-libre kernel, don't install any additional hardware drivers, and block proprietary software from your Linux app store, you're still likely relying on a large amount of proprietary software. It's coming in through your browser.

Browsing through GNOME Software on Fedora the other day, I saw that Slack was available for download. Then I noticed that it was marked as proprietary.

Open Source

This put me off, so I didn't download it. But then I thought about it. I use Slack in a browser tab, and it's no less proprietary there than it is with a dedicated client. My browser may be open source, but much of the content coming through it isn't.

The transition from using desktop apps to cloud software has been a mixed bag for Linux. On one hand, it's easier to transition to Linux than ever since you can fallback to the web for many things you couldn't do in the past. Microsoft Office 365 and Adobe Photoshop, for example, now offer a certain amount of functionality online. You can also stream movies on Netflix and listen to music on Spotify.

Desktop apps aren't as necessary as they used to be. But on the other hand, all of these are proprietary services. If you try to use the web without touching closed source code, the way Richard Stallman does, you greatly reduce what you can do online.

Then There's the BIOS

The BIOS, short for Basic Input/Output System, is the part of the computer you see for a brief moment before your operating system boots up. It comes pre-installed and is typically proprietary software.

Even compared to the web, this is the part of the computer you have the least control over. You can use a different kernel. You can avoid certain drivers and proprietary apps. You can even stay away from most of the web or reside offline entirely. But changing the BIOS?

You can replace the BIOS on your computer with an open alternative such as coreboot or Libreboot, but they support only a limited number of PCs. On most PCs, you're simply out of luck.

So How Free Is Linux, Really?

At the end of the day, there remain many closed parts to your typical Linux computer. On the flip side, the experience is still much more open than Android.

If using free software matters to you, don't lose heart. Your computer and the web may not be entirely open, but the fact that you care enough to make the effort matters. This influences people who design software, whether now or in the future.

Open source alternatives to cloud services appear all the time. Open source desktop software continues to improve. Twenty years ago, open source was still a novel idea, and we've come a long way since. But we can't lie to ourselves: most computers running Linux are only partially free even to this day.