"Which Linux distro should I use?" Is a recurring question people ask without an end in sight. I have been hearing this for more than a decade at this point. So I decided to share my framework/checklist for choosing a Linux distro along with my recommendations. This way, even if my recommendation doesn't fit someone's needs, they still can find one that suits them. The below recommendations are for desktop linux and NOT server side. Although some of them below can be used for both. Do keep this in mind. And most importantly, this is based on my experience personally and professionally. This means my recommendations might not make sense for everyone. Which is also why I am not just writing a review of distro but thought process and a framework I have behind it. Use it and ditch my recommendations if it doesn't make sense to you.
Who is this for?
- People who are doing Desktop computing (not servers)
- If you are the IT guy on work or for your family/friends
- New and Old people alike. Even if you are 60+ years old folks
- Developer or power users
- Users wanting to use Linux for professional use cases
- Users wanting to use Linux for personal use cases
Who is this NOT for?
- Designers who are stuck with some proprietary tools.
- People who are NOT ready to learn and change
Vocabulary
Terminologies which you want to be aware of.
Term | Meaning |
---|---|
Distro | Short for distribution. Linux is just a kernel. In order for it to be a complete Operating system, it needs other interfaces like GUI, bootloader etc. A Linux distro is a full operating system which bundles all the things that is necessary to make it a full operating system. With Linux kernel as it's brain. Eg; Debian, Linux Mint are Linux distros. |
Community based distro | By community based, I mean a distro which is led by benevolent dictator for life (BDFL) or a small team. Without being controlled by a corporate. It will be community funded & listens to the community. Linux Mint, Elementary are good examples of this. |
Community driven distro | Projects which are driven and directed by the community where the entire process is community oriented. Arch Linux and Debian are good examples of this. Anyone can jump right into the project and make a contribution. Community driven are the best kind of Linux distros. The experience as a user is wholesome when you need help or when you want to get involved. But most importantly, disruptive changes which go against the community will be less. |
Linux Derivative (Based on Distro) | Distro's which are based on other Linux distros are based on distros. Ubuntu is based on Debian linux. Linux Mint is mainly based on Ubuntu. This means they could be using packages, tools or other infrastructure. Things which are impossible or extremely hard to replace. Eg; Ubuntu depends on Debian's packages for Ubuntu Linux. |
Independent distro | Linux distro which do not dependent on other Linux distros can be called independent distros. Arch Linux, Debian, Void Linux and Alpine Linux are examples of this. |
Upstream provider | Upstream means the source of a package. Mozilla will be upstream provider of binaries for the Firefox web browser. Which is then packaged and distributed by a particular distribution like Linux Mint or Ubuntu. |
Downstream provider | Usually the packager or the Linux distribution which takes the upstream binary provider/source and then packages them for a particular Linux distro. Eg; Linux Mint uses Firefox binaries to package the Firefox browser for Linux Mint users. |
Point release distro | Point release distributions are Linux operating systems which releases major versions on a particular interval. Like six months or 12 months. This means packages on these distros are thoroughly tested but frozen against a particular version. You will have to wait for certain interval to get updated packages. Only security bugs and important packages gets updates in between when necessary. Point release distros is meant to ensure stability for server side. Debian, Ubuntu, Fedora, Linux Mint, Pop OS! are all examples of point release distribution. Eg; Ubuntu 22.04 is a point release for Ubuntu. |
Rolling release distro | Unlike point release distros which releases new major version in a regular interval like 6 months, rolling releases doesn't have a major version release. You install it onces and you will get continous updates for upstream packages and OS. This means latest features, up-to-date development environment if you are a developer. No PPA, sideloading apps from AppImages, binary etc. Arch Linux, PCLinuxOS, OpenSuse Tumbleweed and Void Linux, are examples of this. |
Repos of a distro (Unstable/Testing/Stable) | Repos for the packages in a distro means a package is being tested against a particular distro. Usually a distro has unstable, testing and stable repositories. This doesn't mean the package itself is stable or unstable. Meaning, if Firefox v110.0.1 is in unstable repos of a distro, it doesn't mean Firefox is unstable. It just means the distro hasn't tested Firefox v110.0.1 against them to ensure it is working properly. |
Checklist
Check | Description |
---|---|
✓ | First and foremost, use whatever that solves your problem. Any reasons to choose a distro should be on top of this. I have deployed Linux workstations at work, to friends & family. My recommendation is based on my experience and my understanding. We have like 300+ Linux distros. Let's not fight over which one is the best. |
✓ | If possible, choose independent distros which doesn't depend on other distros. This helps with long term usability, experience and helps avoid unwanted surprises. For example Debian is an independent distro. While Ubuntu depends on Debian for packages etc. Another example is Linux Mint is based on Ubuntu. But they also have an edition (LMDE) which is based on Debian precisely to answer the question. What if Ubuntu stop existing tomorrow? |
✓ | For personal computing, choose rolling release so that you always have |
✓ | Use a community based or community driven distro instead of a corporate backed one for long term usability. Snap enforcement and CentOS being discontinued are some simple examples of why community oriented/driven projects are better. There are more reasons other than just ethos to use a community based/driven distro. If you are looking for desktop computing, a community one will always stand tall. So if you can't one that is community driven, at least use one that is community oriented. |
✓ | Distro should have a good and large community. This helps with the long term use cases and fixing things when you are stuck. |
Hardware IS IMPORTANT!
Before naming names, we need to talk about Linux & hardware. Linux has a notorious name for being able to work on anything. I say notorious cos people think it is great thing. It is most often NOT. Sure, it works. But not 100%. You will miss something or the other. It will be either WiFi, Bluetooth, audio or something else. And you will be blaming the community, the distro or Linux itself for the sub par experience. And that is not fair. Your windows laptop and macbook JUST WORKS because of not just the software. But also the hardware, which is supported. Use a supported hardware to use Linux. There are Thinkpads, Dell XPS & System76s in the world right now. Please don't use laptops and hardware from companies like Razer which has bad compatibility with Linux. And please... don't complain that Linux is bad after that.
My recommendations
I have been using Linux as a primary operating system for the last 14ish years. And since then I have used Ubuntu (Kubuntu, Lubuntu and Xubuntu included), Debian, Linux Mint, Fuduntu(R.I.P), Fedora, Elementary, MX Linux, Manjaro, Kali Linux, ParrotSec, NixOS, Arch Linux and many more. Only few distributions stuck with me for longer periods as a primary operating system. Fuduntu, Linux Mint, Fedora, Debian and Arch Linux. Of these, I have only found Fuduntu, Linux Mint and Arch Linux suitable for "I could use this forever" category. But Fuduntu is dead. Leaving me with Linux Mint and Arch Linux as my recommendations. These two can fill in for any of your desktop use cases.
Distro | Based On | Release Model | Rolling release | Independent Distro | Community Based | Community driven |
---|---|---|---|---|---|---|
Arch Linux | Independent | Rolling release | ✓ | ✓ | ✓ | ✓ |
Linux Mint | Ubuntu | Point release | ✗ | ✗ | ✓ | ✗ |
Honorable mentions
These are distros I have heard good things about but have not used enough or have not used enough as my primary driver.
Distro | Based On | Release Model | Rolling release | Independent infra | Community Based | Community driven |
---|---|---|---|---|---|---|
Void Linux | Independent | Rolling release | ✓ | ✗ | ✓ | ✗ |
Alpine Linux | Independent | Point release | via edge branch | ✓ | ✓ | ✗ |
PopOS | Ubuntu | Point release | ✗ | ✗ | ✓ | ✗ |
NixOS | Independent | Point release | via unstable channel* | ✗ | ✓ | ✗ |
Debian | Independent | Point release | via unstable repo* | ✓ | ✓ | ✓ |
* Again, unstable/edge here just means it's not tested against NixOS/Debian or Alpine. Not that the software is unstable. It is the latest stable package from upstream provider/developer. As it was intended by the developer.
Important Note: A lot distros can be be made into a rolling release by using their unstable/edge repo/branches/channels. They are not always the primary focus of the distro. They exist mainly for development. You don't have tier-1/first class support needed if you are using it for work or serious stuff. Which is why I don't recommend it for daily use. Which is why I recommend traditional rolling releases like Arch Linux.
Why Linux Mint?
Linux Mint is my pick for a point release. If you are a beginner to Linux or if you are recommending Linux to others, always pick Linux Mint. The distro works out-of-the-box (OOTB) and passes the test of time. Usually for Ubuntu, things work out of the box initially. Then as updates and other things ensue, it starts throwing errors. Linux Mint don't. It always surprises me because Linux Mint is based on ubuntu. But it doesn't have all the problems ubuntu has.
Linux Mint is IT people's favourite as well. I have installed it for my friends and family. And never have I come across an issue. I installed Linux Mint on my Father's laptop like since Linux Mint 19.x. And I have updated them a ton of times. Nothing ever broke. And have once upgraded from v19->v20 through CLI. I was blown away with the amazing walkthrough even on CLI. They guide you well. I am going to give GUI a try for 20->21 upgrade. And also as someone who was forced to use Debian based distro for work, I thought I will choose Ubuntu. Oh boy, was it a mistake! The snap is such a performance hog. And system in general uses more resources. And most importantly, it throws errors from time to time.
Since I have the freedom, I have switched to Linux Mint for my work computer from ubuntu. And I am really liking it. I see approximate 20% less CPU utilisation and 1-2GB of ram usage reduction since I have moved to Linux Mint from ubuntu. The main reason could be firefox snap. But also, now that canonical is asking for us to pay for security updates in LTS, you really don't know where this will reach. Being a ubuntu compatible distro, Linux Mint has a great advantage in this scenario. The only problem could be that some security policies of organisations might not let you use Linux Mint for work. But if you have the power or freedom, I recommend Linux Mint for the best experience.
Nix with Linux Mint
Disclaimer: Learning curve is high for understanding Nix and nixpkgs. But if you are interested in sticking with it, I have listed resources for you.
You can use Nix with Linux Mint if you want latest stable versions (using nixpkgs unstable channel) but also the reassurance of a stable distro. You get latest stable version of packages and keep the assurance or Linux Mint.
A good starting point is:
- https://leward.eu/using-nix-on-linux-mint/
- https://nixos.org/manual/nixpkgs/stable/#overview-of-nixpkgs
- https://zero-to-nix.com/
- https://zero-to-nix.com/concepts/channels
Why Arch Linux?
Arch Linux is my pick if you are a power user or a developer. Or someone who is using Linux in 2024 and beyond. To be honest, if you are coming from point release distros like ubuntu, Fedora or Debian, Arch will take some time to get used to. But it is a skill issue which you can change. Arch Linux is marketed as a DIY distro. So they expect users to take responsibility in setting and maintaining it. Which is not the case with most distros. IMO this is why there is a misunderstanding from users expecting Arch Linux to do things for them which they get in other distros. For example, the stability of the installation solely depends on you. This might sound scary. But after wasting more than almost half a decade of my life under point release distros like Ubuntu & Debian, Arch Linux is a breath of fresh air. It's easier to fix. Rolling release means you always have the latest stable packages. Arch also has one of the biggest collection of packages/apps. Whatever they don't have in their official repos, they have it in AUR repository. AUR hosts any proprietary packages I might need for work or software development. You can extend it by using Nix with Arch Linux.
Then there is the Arch Wiki. I have Arch Linux specific documentation for most thing I might want to use:
- How do I setup nodejs in Arch Linux? - https://wiki.archlinux.org/title/Node.js
- How do I make Arch Linux more secure? - https://wiki.archlinux.org/title/Security
- Hmmm what about AWS and Arch? - https://wiki.archlinux.org/title/Arch_Linux_AMIs_for_Amazon_Web_Services
- I wonder how I use Zig - https://wiki.archlinux.org/title/Zig
- System maintainence - https://wiki.archlinux.org/title/System_maintenance
- What about all the programming languages packaged for Arch Linux? - https://wiki.archlinux.org/title/Programming_languages
- Nix on Arch Linux? - https://wiki.archlinux.org/title/Nix
Since it is community driven, Arch is what the community make it out to be. You can be as involved as you want to be. They are the perfect combination of enough flexibility and enough convenience for me. They are a practical bunch with an amazing culture. Easy to get involved and make a difference. Check out https://whatcanidofor.archlinux.org/.
Myths about Arch Linux
But Arch community is rude: Arch Linux is a do-it-yourself distro. They expect you to read stuff. You don't complain that your IKEA furniture is not already assembled, do you? They DO NOT appreciate help vampires. Help vampires are people who do NOT put any effort in trying to solve the problem at hand. But expects others to spoon feed it to you. They suck the blood of the community like a vampire. Hence the name. I really wish more communities are as direct as Arch folks. This is an IT guy's dream. Actually, Arch folks have softened in recent years if not anything. I have observed that as long as you try your level best, the community will guide you. Arch is helpful and tolerant to mistakes. Intolerant to help vampires.
Arch is hard! : It is not. As a do-it-yourself distro, it does have walls of text for you to read which can be intimidating. But Arch wiki have intructions clearly explained in step by step manner, about any topic. The only problem is getting used to wall of texts which is not the case for a lot of other distros. But the initial time invested will reap rewards in the longer run. Whatever issue you have, all you have to do is go to Arch Wiki and search for it. I have used Ubuntu, Debian, Fedora for years as my primary distro. They give initial jumpstart for a functional distro. But as time goes by, they are often a PITA to maintain. I use Arch as my main distro not to say I use Arch BTW, but because I am extremely lazy. I want to set things up and it should just work. And if it breaks, it should be easy to fix.
Not to mention, Arch now have an official guided TUI installer bundled with Arch .ISO image. Terminal based installer which sets up Arch for you by just answering serveral questions. It cannot get easier than that.
- I won't use Arch since it is not stable: My installation is 4-5 years old. Haven't broken anything. Since the distro is DIY, your installation will be unique. This is not the case for most Linux distros which provides a fixed set of images to choose from. That means those distros have specific settings and configurations upon which you make changes. This makes it easier to debug or get help from. But on Arch you set up the packages you want. The components, configurations or settings to use. I setup full disk encryption completely on my own by reading the Arch Wiki. While installing Arch for the first time on Arch while installing it. This means, some of the combinations like how grub or disk encryption and partitions are done might be unique. If you don't remember this, it can be challenging to ask for help from the community. This means the stability of the installation depends on the things you install and how you set it up. While this might sound intimidating, it really is not hard. Just time consuming initially when you do it the first time. I use Arch not just because I can tinker. But because I am lazy. With Arch, I have become lazy because nothing ever breaks*. But if it breaks, I have found Arch is easier to fix. If manual intervention needed, Arch News which is on the front page of archlinux.org will have instrutions. Simple instructions like this Arch news. This is where DIY kicks in. I am expected to do this. Arch is not tricking you into something and giving something else. It also has one of the most vanilla Linux experience. They try and ship latest stable versions of packages with least amount of tweaks. While kernel in other Linux distro's are tweaked, Arch Linux has the vanilla kernel shipped it as it is, *as much as possible. Same things goes for the packages. This means, anything you see is how the developer(s) of the software intended it to be.
Update:** As I was finishing up this draft, my Arch linux installation broke for the first time. And the issue was with an update. But it was easy to fix. But there was few hours of down time. Why am I saying this? Because it doesn't break often but it does break. But also, it's not any pretty on point releases. And they are harder to fix from my experience. I still recommend 4-5 years of uptime with minimum maintenance over regular issues in a point release. Not to mention, buggy interface makes me angry. I have been pissed many a times with ubuntu. Not a good way to interact with software or your OS.
Myths from Linux ecosystem
There are some myths I would like to debunk as they are no longer relevant or is a misunderstanding.
Hardware doesn't matter for Linux
While this is true for the vast majority, having a well supported hardware makes all the difference. Razer laptops for example are notorious for bad Linux support. So if you are installing Linux on a Razer, you will probably have a sub-par experience. Little things like mousewheel or something won't work. But Thinkpads have an amazing level of support and everything works. Firmware updates and every other feature. It makes all the difference. So if you want a good experience, choose a hardware which has good Linux support.
Rolling release distros like Arch Linux are bleeding-edge and unstable
Rolling release means they provide the latest stable versions (and NOT development branches) of a package/software. This means you get the latest stable version of a software with latest features and the latest available security patches. Rolling release === bleeding edge comes from an era where development was slow and patches took anywhere between 3-12months to land. This meant more testing was needed. Another thing is Linux historically was for servers. Coupled with patchy software at the time, it made sense to use a point release and test them they way it was done. But most of that has changed. We have continuous development cycles. By using a point release distro, you are compromising on features and security. Which is unnecessary.
In fact, what point-release distros do is backport fixes. This means they cherry pick fixes and tweaks from the latest version of a software (say Firefox v122). Then they apply that fix to an old version (say Firefox v116). This has in the past created security bugs. And this will create more bugs. But with rolling release, all you have to do is update your package. This also means different point-release distros could bring fixes in different way. Duplicating the effort.
People circumvent all of this by using PPA's or Snap, Flatpaks or AppImage which are all trying to provide what rolling release already provides. They are also doing this with added abstraction and bloat (in the name of marketing BS called sandboxes and security) which effects performance and security. IMO, Snap, Flatpaks and AppImage are the answer to people wanting rolling release inside a point release distro. They also wants the promised stability people usually talk about when it comes to point release distros. Which is all there in rolling release. But rolling release still have a bad rapport.
Confusion about Distro's repos (Stable, Testing, Unstable) and upstream package branch (Stable/development or testing)
The new users get confused when they hear software packages are in stable/testing/unstable repo. They are often compared or thought as stable and unstable repos of development vs stable branches of the upstream software. Like branches you see in github or gitlab. But in reality when a package is in a distro's particular repo, for example testing, the package is being tested against the distro to see if it is working as expected. This has nothing to do with stability of the package/software itself. They are making a stable version of a software (say Firefox v122) go through unstable, testing and finally to stable repo of their distribution.
FAQ
Why not Debian?
They are community driven and independent. Why am I not recommending it? Because I have used Debian for 2 years and its extremely stable but extremely annoying. If you are doing anything more than browsing and spreadsheets, you will definitely need to patch up things with PPA and what not. Your software are at times older than a year. 2-3 generations of GNOME DE major releases behind. You will stick with those annoying bugs you might interact with on a daily basis for months if not years before you get the fix.
But if you are fascinated by their community and I approach. I recommend you to give it a go. And maybe use nix for latest packages (using unstable nix channel) can solve a lot of the issues?
You can also make Debian a rolling release by using it's unstable branch. I know people do this but I was told there are some catches. So proceed forward after reading up about this.
Why not Ubuntu?
I started writing this blog on 5th April and on 15th April, my microphone stopped working on my Ubuntu work machine. Was working fine on Arch. I haven't updated anything and it still broke. I am suspecting something Snap since I haven't had time to investigate. Even if it is not, the fact that it breaks like this when Linux Mint and Arch Linux doesn't proves my point. One of the reasons why people use corporate backed Linux distro is reliability. Even that cannot be promised by ubuntu. This is just my latest experience with Ubuntu messing up.
They are notoriously messed up for a Linux newbie to play with. They are not optimal. They don't always work as expected. Previously, I almost didn't get my current job because I couldn't get my microphone to work for an interview call. Arch to the rescue again. The fact that this is still happening is messed up. Linux Mint or Arch doesn't have these problems. Since Linux Mint is a Ubuntu derivative but works as expected shows this is a problem with Ubuntu and NOT Linux.
Why not Fedora?
They are IBM backed test horse for RHEL. I have used Fedora for my personal computer. They are technically good. It is just not my cup of tea for personal computing. The community doesn't have a say in anything and the way things are going, there is nothing stopping from pulling another centos. Or something like Snap by Canonical. When you are looking for a personal computing distro, you are looking or should be looking for much more than the technical aspect. Besides, most distros offer the same things. Arch has more packages, more flexibility and a better community aspect. So why should I change?
Another thing is the reason why Fedora is liked techincally is because they have the latest packages every 6 months. That without the 6 months wait IS Arch Linux by default. So I am not seeing anything that is a standout feature in it.
Why not OpenSUSE?
OpenSUSE is one beast that I have not used all my life. I have tried installing it back in the day a couple of times. But it never worked for some reason. So I don't think I have any comments to make about them. I have always heard only good things about them. And from what I have heard, openSUSE brilliant. Give it a try. My intention is to share my experience and let you take your own decision.
Conclusion
There you have it! Use Arch or Linux Mint. Mix them up. Recommend these to your friends. It should cover most of the usecases for personal desktop computing. I highly recommend Arch Linux for desktop.
Future?
Linux land
On Linux, Personal recommendation is Arch Linux or Linux Mint. But Nix package manager and Nixpkgs is something I am exploring now and is seeing absolutely great experience. I guess you can try Nix with any OS (It's cross platform. Runs on Linux, Mac and FreeBSD(partially)). Instead of using NixOS which can be completely different, you can use Nix the package manager and use Nixpkgs with your linux distro. Its like best of both worlds.
BSD
My personal journey is making me lean towards BSD for the future. The immutable distro people keeping talking about? That is BSD by default without any extra layer of bloat. There is a distinction between BSD OS and packages. Unlike Linux which needs different projects developed by different teams in different time frames. A BSD is developed by the same team, together and the vertical integration is just better. On top of it, they have jails for containers and nix is already there on FreeBSD. I am slowing moving away from Linux to BSD one step at a time.
They are rich in culture and technology. In 2024, one of my goal is to explore BSD's like FreeBSD, OpenBSD, DragonflyBSD and NetBSD more.
Some reads and sources:
- https://unixsheikh.com/articles/technical-reasons-to-choose-freebsd-over-linux.html
- https://unixsheikh.com/articles/freebsd-is-an-amazing-operating-system.html
- https://unixsheikh.com/articles/why-you-should-migrate-everything-from-linux-to-bsd.html
- https://www.unitedbsd.com/
- https://vermaden.wordpress.com/
As always. If you have any feedback. Reach out to me at unsungnovelty at protonmail dot com
.