I've been a long-time GNOME user, but for the past few months, I was in a loving relationship with Elementary OS. I found much to love in the minimalist Linux-based operating system, and I encouraged readers to give it a try.

But that has changed. The number of bugs I encountered grew over time, and I've recently had enough. As a freelance writer, the only thing I need is a working laptop. If that's not reliable, then I'm wasting time trying to fix the one tool my job requires.

This isn't the first time this has happened. Sometimes Linux distributions that start off rock-solid get buggy after a month or two. The question is, why?

1. Not Enough Manpower

I'm not going to spend this entire piece harping on about Elementary OS. I love what the team is doing, and I admire its vision. I think what it has been able to achieve with so few people is phenomenal. But therein lies the problem. There are only a few people working on this distro.

That means the same people that are working on visual design are also squashing bugs, coding new apps, attracting developers, marketing, and doing whatever else the project needs done. That's a lot of work for anyone to take on. It prevents someone from specializing or spending all of their time perfecting and maintaining a single piece of software. Founder Daniel Foré isn't going it alone, but he does have to wear many different hats for the project to continue.

The Linux world is filled with small, rag-tag teams producing great work. Solus is another example that is heavily dependent on the work of a single man.

Larger, more established distros are still impacted by this issue. Ubuntu is ubiquitous in the Linux world, and it has a massive community -- but Canonical employs a relatively small number of people to make the desktop what it is. Fedora and openSUSE have been around for decades, but they lack the kind of manpower we see creating commercial desktops like Windows and macOS.

2. A Lack of Funds

Most open source software is free to use, but that doesn't mean it's free to make. Whether someone pays a developer, donates to a project, or spends their own time volunteering code, the end result cost somebody something. With such varied and often unreliable funding models, attracting talented work can be a problem for Linux distros and apps.

Maintaining a distro comes with plenty of unavoidable costs. Teams have to host websites, provide downloads, and distribute software. With contributors living in different parts of the world, it can cost thousands to travel and collaborate in person. If fixing a bug requires having access to certain hardware, the issue can go ignored for however long it takes a developer to get their hands on what they need. Sometimes that never happens.

I've used Windows long enough to know that money alone doesn't make all bugs disappear. But a lack of money sure makes it a lot harder to make them go away.

3. No Direct Relationship With Hardware Manufacturers

As I just mentioned, that bug that affects your specific laptop model is hard for a developer to fix unless someone provides them with a similar machine. But that's only part of the problem. Bugs don't merely stem from developers not having the impacted hardware. Manufacturers don't care if their machines work with Linux.

Unless your laptop came with Linux pre-installed, there's a good chance no one involved in making your machine tested if Linux works. They may have used a Wi-Fi card that lacks Linux compatibility, leaving you unable to get online. They may have picked a graphics card that doesn't yet have Linux binaries, leaving you with basic features and a glitchy experience.

In that case, it's not that your desktop environment is laden with bugs. You're trying to run software on hardware that no one created with this code in mind. Sometimes Linux developers can reverse engineer a solution, but that doesn't always work.

4. Reliance on Other Projects and Software

Most open source programs depend on software that someone else made. Linus Torvalds, the creator of Linux, doesn't make any of the interface you see on screen. That comes from a team of contributors that may be located on the opposite side of the globe. The applications you run inside that interface likely come from a different set of developers.

People are writing code that must interact with software that they may not fully understand. The source code may be open, but who has the time to learn how every component works? And if they do spot a problem, they have to reach out to that component's maintainer and hope they can integrate a fix.

5. No Centralization

Microsoft created the Windows kernel, the desktop environment, and the default applications. This gives the company a fair degree of control over the experience that users will encounter. If the experience isn't polished, Microsoft can decide to postpone a release until employees fix all of the showstopper bugs. Linux distros try to do the same, but there can be major bugs that are simply out of the team's hands.

This lack of centralization also leads to other problems. While Windows and macOS each have one primary package format, Linux has several. Developers may have to jump through different hoops to guarantee that their software works with each distro, and that can be a lot for one individual to support. And this is hardly the only example of duplication of effort. Linux has multiple audio frameworks, display servers, and window managers. Pretty much any component of your system can be swapped out for another, causing an app to break.

6. Bugs Are Boring

Creating software is fun. That's partly why there's so much duplicated effort in the open source world. Starting from scratch and "doing it right this time" stirs more excitement than weeding through existing code and knocking out the kinks.

Squashing bugs is tedious, time-consuming work. A developer can lose hours simply trying to replicate a bug before they even start trying to fix it. Then once all of that work is done, the app doesn't have a fun new feature -- it's just more stable for the subset of users that bug may have affected. This is important work, but when a developer is unpaid, it can be hard to expect them to make the time commitment necessary to engage in such drudgery.

What Can You Do to Avoid Bugs?

All of this aside, Linux has a reputation for being more stable than Windows. If this open source operating system is capable of powering most of the world's supercomputers, it can handle your laptop. You just have to find the right distro.

No single option is the most stable for all users. That depends on factors ranging from what hardware you're using to which applications you intend to run. But it's a good bet to go with a well-established distro, from a team that has the resources to keep things running smoothly.

I've gone back to Fedora, and I'm again using GNOME as my desktop environment. As part of Red Hat's giant Linux ecosystem, Fedora is one of the most supported distros. GNOME may not be quite as minimalist as Elementary OS, but it's pretty darn close. And as one of the oldest open source desktop environments on Linux, the community of users that can spot bugs is significantly larger. Plus Wayland in Fedora 25 is pretty darn fast.

My Choice of Linux

That's the choice I've made, but I'm not saying it's the best. openSUSE is another distro with plenty of financial support. If you would rather use a Linux operating system that doesn't have a company attached, Debian has the support of such a large community that you won't be missing out. Ubuntu (based on Debian) is the most well-known version of desktop Linux out there, so when bugs do arise, you can usually find a fix if you search long enough.

Though if you really want to address the problem, file bug reports. Even if you can't write a fix yourself, writing detailed descriptions of issues is a big help.

What Linux distro do you use? What bugs have you encountered? Have any tips for users banging their heads against the wall in frustration? Let's get a conversation going in the comments below!