How to choose your Linux distro
September 06, 2020 - 10 min read
First things first
For many people - myself included - choosing which Linux distro to use is always a hard choice to make. When you're on Windows or Mac, you don't have too much to think about (you end up being forced to use the latest version sooner or later anyway), but on the Linux world, we have so many choices that it is often overwhelming to think about it.
To make things a bit more focused (and easier), I devised 6 criteria that help me to narrow down my choices to one (or, in some cases, a few) distros to look for. While these criteria were created using my (admittedly subjective) experience on the matter, I think it still might help in the majority of cases.
Server versus desktop
The question you need to ask yourself is if the machine will be used as a server or a desktop/workstation environment. Or, more broadly speaking "what will I use this machine for?"
If you're creating your home server, the focus in on stability and security, not flashy apps or a super cool desktop environment. You want something that once set up, needs no babysitting in any form. In this scenario, distros like CentOS or Debian are a natural choice, because the lack of "updated" (read: broken) applications and the strong focus on security fixes is exactly what you need.
On the other hand, when you're talking about your desktop or workstation, you will want a distro with more up-to-date software versions, and probably one (maybe more) Desktop Environment. This is the category where most mainstream distros like Ubuntu, Linux Mint and openSUSE fall on. Even hardcore distros, like Gentoo and Arch are a good choice here, if you're okay with the philosophy behind their decisions.
Popularity
Another thing to consider in your distro of choice is how popular it is and how much you care about its popularity. Popular distros, like Ubuntu and Mint, for example, have a much higher chance to have all the applications you commonly use already available on their respective package managers, so you don't need to compile everything by hand. Since the userbase is bigger, when you have trouble is very likely that someone, somewhere on the internet, also had the same problem as you and posted the solution online.
This doesn't mean that a less popular distro is always at a disadvantage. Having a smaller, but more active userbase means that the access to the developers are often easier and work best on a personal level. The lack of binary packages compared to popular distros might not be a problem if alternative methods are supported (like AUR for Arch and xbps-src for Void) and, if everything else fails, you can always try the good old Make
.
In the end, the point about popularity can be summarized by this question: how annoyed you get when a certain software is not available right away on your package manager or when you need to google more than 5 minutes to find an answer?
Release cycle
An often overlooked criteria when choosing a distro is how the release cycle works. You distro can use the stable release or the rolling release model. Which one is better depends on your personal preference.
Stable release is the most traditional release model and works using a distinct numbered release version that gets support for some years. After a few years, a new mature version is released and the user can either choose to upgrade directly to the new version (with varying degrees of success), reinstall the system with the new version, or even not updating (but be wary that eventually the support for the old version will be dropped). I'm not talking here about package or even kernel updates, but entire OS upgrades. If you're new to Linux, notice that this is the same model used by Mac or Windows (every few years a new "Windows XXX" is released and... well, you know what happens).
Rolling release works by having smaller and more frequent (in some cases, even daily) updates. You don't have a "new" version every few years and you don't need to upgrade because your system is always moving (well... rolling...). Keep in mind, however, that if big changes happen to your distro (for example, when Arch decided to use systemd), the update will likely need a certain degree of manual intervention (this is generally very well documented by the distros themselves).
The better option depends on if you prefer having to deal with a big upgrade every few years(stable release) or if you want to deal with this question in small doses. Pick your poison.
Desktop Environment
Your preference (or hate) for a specific DE is also something that must be considered. People that, for example, love KDE will probably be happier using Kubuntu instead of plain Ubuntu. Some distros opt to have only one "main" DE and install it by default, while others support a certain number of DEs and allow the user to choose what they're most comfortable with. Others don't even have a standard DE and you have to install and configure one manually if you wish.
The choice here is not necessarily to pick the latest and greatest, but the one that works best on a given scenario. For example, XFCE might not look flashy but works wonders on that 15-year old PC that your grandma uses to read email. If you're unsure about which DE you want to use, try to find a distro that supports more than one (preferably on the install) so you can switch between them until you decide. There is also the case where a Window Manager is all you need. In this case, I recommend trying a distro that has the option of not installing a DE at all, so you can start with a perfectly clean slate to build your configuration.
Note that if a certain distro looks perfect to you in every way, except by the DE, remember that you can change it later. How easy it is depends on the distro and how much effort you want to put in customizing it.
Hand-holding
Do you like to configure and tinker with your OS or you prefer a pre-packaged solution that "just works" and lets you focus on your tasks? Some people just don't care much about the small details of the UI or the design decisions offered by a certain distro or DE, while others like to customize everything that they use, to make it more suitable to their workflow.
If you're more on the "just works" side of things and think it is easier to adapt to a pre-selected software configuration, you'd be happy with most of the mainstream distros, like Ubuntu and Fedora, because the default settings will cover most of the common usage scenarios. If, on the other hand, you're more akin to create your own experience, distros like Arch, Gentoo and Void are a better alternative, since the default installation tends to be more minimalistic and leaving the installation and configuration of most software to the user.
This choice has nothing to do with how "beginner" or "advanced" you are; this has to do with which approach is more comfortable to you. For example, Linus Torvalds uses Fedora, because he just wants to install and get work done. I'm not an Ubuntu user, but if my company came for me asking for a distro to install in every corporate machine, I will probably say Ubuntu exactly because of the same reason.
Systemd
Systemd is still a somewhat controversial topic on Linux. Some people think it is broken by design and is a menace to Linux, while others think the hate is not deserved and that people will eventually learn to love it. The adoption of systemd caused a lot of drama on the Debian, and Arch communities, for example (in fact, the Artix distro was born as a direct result of Arch embracing systemd).
If you don't know or care about it just ignore this when choosing your distro. If you do care about it and prefer to avoid systemd, you can find more information here or here.
There's not much objectivity here; just choose based on your available options and how you feel about the whole situation.
An example
To better illustrate the process, I will use myself as an example and explain the reasoning behind the distro I'm currently using. For starters, let say that after reading about the various available distros, I want to decide between Ubuntu, Fedora, openSUSE, CentOS, Manjaro, Debian, Arch, Gentoo and Void.
I'm talking about my laptop (criteria #1), so CentOS is out of the question right away. Of the remaining distros, they're all popular enough for my needs (criteria #2) and I've no problems in eventually compiling from source or using other alternatives besides the distro package manager. The release cycle (criteria #3), however, is a very important topic to me, and a rolling release model better adapts with my expectations. This will cut Fedora and Debian leaving us with Ubuntu (Rhino), openSUSE (Tumbleweed), Manjaro, Arch, Gentoo and Void.
The desktop environment (criteria #4) and the level of hand-holding (criteria #5) are the two points that will cut down this list. I do not use any of the provided DEs of any of the remaining distros and I like to have a clean slate to build my configuration upon it, thus removing Ubuntu, openSUSE and Manjaro from the list. The last item (criteria #6) is about systemd. While I don't think of it as the antichrist, I'm also not a big fan of it and like to avoid it if possible. This removes Arch from the list, leaving us with only Void and Gentoo.
Since we finished with two items on the list, and no criteria left, how to choose between them? Here are a few tips:
- Try using both for a while.
- See if one of them is easier/better than the other in any (measurable) aspect.
- Choose randomly. If, after choosing, you don't immediately accept the choice made, eliminate it from the list. Repeat until only one option is left.
In my case, I've gone with option #2, and noticed that the Gentoo installation is way more involved than the Void one. So I will focus on Void and if after using it a bit I end up not liking it, at least I know to avoid it next time.
The important thing to remember is that choosing a distro is not about what is "cool" and "hip"; it is about what your use case is, so different strokes for different folks. Also, you're not married to your chosen distro (even if you were, divorce is a thing), so feel free to experiment a bit before settling for good.
Code Overload
Personal blog ofRafael Ibraim.
Rafael Ibraim works as a developer since the early 2000's (before it was cool). He is passionate about creating clean, simple and maintainable code.
He lives a developer's life.