Why Gentoo is awesome
I've been running Gentoo since fall of 2025 and I want to share my thoughts about why this distribution rocks.
What is Gentoo
To those unfamiliar, Gentoo is a Linux distribution with a unusually unique approach to package management.
While virtually every major distribution under the sun distributes binary packages in their package repositories, Gentoo's package manager portage primarily distributes not binary packages, but recipes to compile the package locally on your machine.
With that out of the way, let's dive in why this is better than Ubuntu, or even Arch.
The good
… Maturity
Gentoo is mature. Having been around since 2002, it stood against the test of time.
… Source-first
Gentoo most prominent perk is that the distribution is source-first.
This means is that every package, and dependency your machine needs will be compiled on your machine, with your compiler, your compiler flags, and your specific requirements (called USE-flags).
You might think, "Why would I want to compile all my packages, that takes ages!", You aren't wrong. A system update usually takes a few hours.
But, you get rewarded with a remarkably stable system. When I first started with Gentoo, I expected the distribution to be either rolling-release, or even bleeding-edge, but surprisingly the Gentoo team is very determined to keep systems as stable as can be.
They succeed at this, too. With tools like eselect news read which directly distributes concise, easy-to-follow, news about your installed packages directly in the terminal.
… Customization
Gentoo heavily lies into customization via USE flags, these enable the user to only enable certain parts of software that they actually need.
If you read this blog post, you're probably pretty familiar with configure scripts, and the general process of compiling software. If not, this following passage will probably not sound like such a great feature to you, but alas.
USE-flags in Gentoo specify what features of a package should be enabled when it is compiled.
This is directly useful to make you system slim, and prevent bloating the installation with stuff you don't actually need.
Examples
PostgreSQL: For development, I need the PostgreSQL headers, and client installed on my system. Depending on the distribution, you might be forced to pull in both client and server, when you only need the client.
On Gentoo, I set the USE-flag dev-db/postgresql -server, with this, Portage only builds the client. The server binary is never produced.
Waybar: Waybar has tons of modules for different purposes, GPS, or WiFi, or Backlight, etc. Most of which I don't need, I am on a desktop, I don't have WiFi, nor Backlight, nor a battery nor GPS.
Gentoo enables me to only select the parts of Waybar that I need, I don't need to pull in mpd or something that I don't want or need on my system. This directly reduces the amount of dependencies on my system, as well as the compilation times. Neat.
Emacs: Certain features are hidden between flags. When Treesitter support first landed in Emacs 29, the (IIRC, Arch-Linux Package) didn't have it enabled by default, and there was no way of enabling Treesitter until the packagers came around to publishing a new version with new dependencies.
Back then, I removed Emacs via pacman and manually compiled it to get the functionality, but then I was pinned to that point in time, unless I manually update it.
On Gentoo, I now just cherry-pick the USE-flags my Emacs installation needs, and I only get those features compiled, no need to add in X11 support, I am on Wayland.
… Security
Security is what Gentoo provides in a manner that Ubuntu, and consorts cannot due to their packaging philosophy.
If you're familiar with tech and open-source, you have not missed the increase in supply-chain attacks in recent time. First there was the almost catastrophic libxz takeover, then there have been numerous attacks on the NPM ecosystem.
These are all very real threats that we need to be aware of, whether you're a private user, or you maintain a number of servers.
What Gentoo offers me is peace of mind. My machine compiles the packages it needs locally plus they are pinned for long enough, that transient threats (such as the libxz attack) will probably have blown over by the time they land on my system.
Now granted, you cannot be 100% secure against supply-chain attacks, but being source-first mitigates the threat stemming from "black box" binaries.
I shiver to this day when I think about what could have been if Andres Freund hadn't caught the libxz attack…
With binary blobs, you cannot even check what your system is running. Sure, you might go to GitHub/FreeDesktop/Whatever and check the source out, but can you guarantee that the source wasn't patched before landing on your system as a binary blob?
… Let's paint an even darker picture, what if the packagers themselves are not even malicious, but instead were infected with a backdoored compiler by some state actor?
What running binary blobs means is that you are running code compiled by someone you probably do not know, with patches you have not seen, on a machine you do not trust.
Now, in the real world the threat from all this is rather slim.
Ubuntu, as far as I am aware, builds the core PPA in their build-farm, i.e. dedicated machines that do nothing but compile packages, already quite good.
Generally, I believe it's save to say that commercially supported distributions such as Ubuntu or Fedora should carry less risk here.
Archlinux, with the AUR and its *-bin packages, carries the biggest risk. Introducing malware to uninformed users has the lowest entry burden here.
Now, in a perfect world, packages are compiled by in-person verified and trusted parties on strictly air-gapped machines that themselves have been produced from-source by verifiably non-backdoored compilers, where package sources are carried over via USB-Stick…
… Yeah, that doesn't sound feasible.
This threat of being fed malicious software stays pervasive on any distribution, not even Gentoo is immune against this, but being source-first, Gentoo does a damn good job of minimising the threat from binaries.
… Documentation
The Gentoo Wiki is a phenomenal, well written, knowledge base about all aspects of your system.
But the real kicker are the tools distributed with the portage.
equery
equery has a long list of things it can do, but what I more often than not had to use it for are three things:
-
equery u app-editors/emacs: shows you what USE-flags are enabled, and disabled for this package. With a short description about what the flag does if enabled. -
equery f app-editors/emacs: lists all files installed by this package. -
equery b /usr/share/emacs/site-lisp: does the reverse off, and searches for the package that installed the given file.
eselect
eselect has two main use-cases.
One that is similar toupdate-alternatives, updating symlinks to use a particular version of Java, Rust, Lua, whatever.
The other is reading news, this is where Gentoo maintainers publish upcoming changes, bumping the default python version, etc.
All with documentation on what this means for you, and what you might need to do to ensure clean updates.
The bad
… Compile times
Being a source-first distribution, your machine will spend a lot of time compiling your packages, even on beefy hardware. Running an emerge --update @world might take a few hours (looking at you, www-browser/chromium)
Granted, this can be mitigated by using --getbinpkg, but that directly negates