Recs.
Updated
Gentoo is a source-based Linux distributions where packages are compiled and customized on your system. This allows to "create your own distribution" as you can decide which features and configurations software on your device has.
SpecsUpdate
Pros
Pro More fine-grained control over packages
Thanks to the Portage package manager, you can forbid the installation of certain packages by "masking" them, adding packages to different "world sets" for maintaining them separately, using stable and unstable branch of packages individually or system-wide and installing different versions of the same package in "slots". And unlike Arch, because of compiling, linker errors after package manager actions are less likely to happen, and when they do, you can build dependencies reversely.
Pro USE flag system for extreme flexibility
A feature called USE flags control how packages are compiled from source, and what options are configured to get compiled. That means you can have per-packages USE flags to enable or disable certain features in them, or system-wide USE flags to enable or drop support for something you don't want entirely.
Pro systemd is optional
Gentoo's default init system is OpenRC. Gentoo also officially supports systemd-free Gnome and udev. systemd can be installed by the user's choice.
Pro Good for people who want to compile everything
Based on everything being compiled from source which means it comes with a very flexible system for compiling packages - USE flags, CFLAGS, and company, both global and per package.
With USE flags you can select what is included in each package and with CFLAGS you can set various compiler optimization options (it's recommended to stick with the more common ones for most packages except those known to benefit from more extreme optimization as overdoing it can actually produce slower binaries, make compiles take forever and introduce weird bugs). Binary packages are available for some packages, especially those that are hard to compile correctly or those that take very long.
Pro Rolling release, yet stable
One possible motivation for wanting a rolling release system is not to have to regularly do fresh installs. Gentoo does just that whereas other popular rolling release will let you pile updates until you reach a point of divergence that will call for a fresh reinstall.
Pro Portage's emerge is powerful
With the USE flag, you get the most fine-grained control over packages you could ever have. The ebuid is developer-friendly, easy to make changes to adapt it for you own special requirement. Even it is pretty easy to integrate your own patches for a specific package, or a specific version of package, without changing the ebuild. With the powerful portage system, one can easily turn an external package (technically, anyone) into a portage-managed package, which makes every package under your control. All you need to do is write an ebuild. For many packages, you can choose your favorite alternative over another, like ffmpeg and libav, openssl and libressl, etc. With eselect, you also can have multiple versions of one same package installed in your system, like python, php, ruby, gcc, jdk, kernel, etc.
Pro Great for anyone who is serious about learning the intricacies of Linux
It's useful for both beginners and professionals. For the installation, Gentoo offers various types, which are referred to as stages. Basically meaning how in depth you would want to go into the process of installation. For beginners it's useful to choose for a starting distro due to its various stages that can be very time consuming but beneficial as you learn the composition in general of Linux.
Pro Vast possibilities and options for system programs
While having less official packages for desktop applications compared to something like Arch Linux, it has many options for system programs and utilities.
For example the choice of glibc, uclibc and musl.
Also the choice of kernel, vanilla kernel, gentoo patched kernel and even GNU/Hurd. You also have the choice to have a Gentoo FreeBSD!
Pro Easy to add non-managed software
At the simplest, a proper Gentoo system already has all of the compiler tools necessary to build a program from source. Assuming dependencies are well documented, those can typically be grabbed via the package management system, making most builds as simple as ./configure
, make
, sudo make install
. Writing your own ebuild requires a little bit of a learning curve, but can allow for installing custom software via the package system of choice.
Cons
Con Compiling takes time
If you're in a hurry and only have 15 minutes to install the new app, you're going to be in trouble since it takes about 2 hours to do so.
Con Very steep learning curve
You should already have some clue how a Linux distribution's internals work. The wiki is a great help in learning, but it requires some experience to not struggle at basic problems.
The less you touch in gentoo, the easier it is though. But that's of course not the point.
Con Customized package installation can take a long time and cause installation failures
The Gentoo package management system allows you to configure what compilation flags packages should support - i.e. specific processor flag support (SSE, SSE2, etc.), -O1, -O2, -O3 optimization, etc.
If you accept one of the default flags, Gentoo downloads binaries from the server. However, if you decide to optimise, it can and will download all source packages and start compiling ALL the programs and libraries on your system. If your chosen flags don't work with a particular library, installation will fail.
Con Somewhat outdated solutions
While being outdated per se is virtually impossible for a rolling-release distro with a large community, a large portion of said community sticks to outdated solutions. For example, Gentoo's primary init system is OpenRC, which is cumbersome and awkward to use and provides little control over the system. While you can just choose systemd, it will require some tinkering. Other examples include stubbornly declaring an initramfs a last resort and an "oh my god 1337 H4XX0RZ surely have nothing better to do than trying for a month to exploit some vulnerability to steal my pony art, I have to fortify so hard my performance and ease of use will suffer" 90s security mentality.
Because of just how much freedom Gentoo provides you with, this usually isn't a big deal though.