March 18, 2005

My Workstation OS: Gentoo

Author: Preston St. Pierre

After failed experiments with Slackware, a few years of SUSE, and a brief flirtation with Debian, I've been working and playing on Gentoo. I don't care for endless optimisations, and I'm not especially bothered about the bloat of a few unnecessary extra features, nor do I enjoy waiting days to update KDE -- so why do I like Gentoo? Simple: Portage package management, the hands-off approach to configuration, the excellent documentation, and the unsurpassed community support forum.

What separates Gentoo from other GNU/Linux distributions? It isn't really a distribution. It's more of a meta-distribution, a collection of tools that manage the "from scratch" approach. It doesn't have any packages per se, just ebuilds that describe where the source packages can be downloaded, and how to include your specified compilation preferences in the process. Installation of any part of the system consists in issuing the command emerge packagename, and then sitting back while Portage, the packaging system based on BSD Ports, downloads the sources, unpacks, configures, and compiles them, and finally installs your shiny new software.

Portage has a series of environment variables that let you control the compiler options (to tune code, for example, for my Pentium 4) and optional features (so I set Portage up to pass over GTK and GNOME code where possible). These are especially popular amongst habitual tinkerers, obsessed with trying to gain an extra millisecond in startup time, or trying to save a few megabytes of disk space. They've also been the subject of ridicule, something I sympathise with.

There is another feature of Gentoo's meta-distribution approach that appeals to me. With many distributions, you are stuck in their release cycle, which means backing your data up and upgrading in a sometimes not-so-seamless way. You can, of course, continually update packages in the meantime, but in my experience with SUSE (which I confess may be out of date) it doesn't match the simplicity of emerge sync && emerge -u world. With those two commands I can sync my local package database with the up-to-date online version, and then update every package on my system that has an available upgrade. I can do this weekly, if I'm obsessive, or once every few months, or when a major new release of KDE comes out. I can even fine-tune which package versions I want, opting for more unstable packages where I need the features, and blocking supposedly stable packages I have problems with, in a way that doesn't just get overwritten with the next upgrade command.

Following this hands-off approach, Gentoo also leaves most configuration to you. The basic stuff like startup scripts are of course Gentoo's own design (and the most powerful and comprehensible I've yet come across), but everything else is left alone. No hacking around in SUSE's massive configuration files, or trying to work out where Mandrake stores its own modified versions. If the documentation for a project says you configure its software in a particular way, you can follow it without many problems.

All of this brings me to the first reason why I use Gentoo for my workstation: the package management is easy, leaving me to get on with my work. I don't have to bother with dependencies, missing libraries, out-of-date binaries (often because the packager lost interest or is taking too long to release the code), crazy configuration systems, or any of the other problems I've had with other distributions.

By now you might be wondering why I don't use Debian, since all of the other features I enjoy are shared with that excellent distribution. So similar are they that Gentoo even based its social contract (an important document for me) on Debian's. Well, an important factor for me is good documentation, something I've found missing with every other distribution. The Gentoo documentation section has guides for everything from installing the system to configuring KDE. With them, I don't have to go Googling for individual HOWTOs and trawling through mailing lists. This resource is kept up-to-date and is written in a consistent style that makes learning comparatively easy. And if you're ever stuck, the forums are full of useful past threads that usually help me out of a tight spot. So long as you are polite and helpful, providing information when requested and trying to find answers yourself before troubling others, you're guaranteed to find a response.

Of course Gentoo isn't all sugar and spice; there are downsides. The first and most obvious is that if you compile everything from source code, you're condemned to wait. Getting Gentoo up and running is likely to take you a few days, unless you don't sleep, and from then on major upgrades can set you back a similar amount of time. Just installing kdelibs has taken me, depending on what I was doing at the time, between two and five hours on my laptop (with a 2GHz Celeron processor). However, despite being the butt of many jokes, the compile times don't really trouble me. If I need to update a lot of software I usually leave my laptop in an empty room overnight, or let it chug away in the background. I'm not in that much of a hurry that I can't wait a few hours! Only obsessive tinkerers who want their software immediately will be annoyed.

For those who don't feel like learning the ins and outs of their software before they can configure it, the lack of tools like SUSE's YaST and Mandrake's Control Centre will grate. Using your new USB key drive for the first time, which on other distributions would often be a matter of plugging it in, can require kernel recompiles and long searches on the forums and Google before you work it out. Of course the flip side is that when the flashy tools of other distributions might fail you, leaving you digging through their crazy configuration system, the Gentoo user is working with the system the developers documented.

So to summarise: Why do I use Gentoo? Not because it is more optimised, nor particularly because it is customised and takes up less hard drive space. I appreciate the simple, solid package and configuration management systems that keep out of my way; I appreciate the helpful documentation; I find the user forums indispensable; and I appreciate the community approach enshrined in Gentoo's social contract. At the end of the day, as the Gentoo Web site says, "the Gentoo developer and user community is undoubtedly Gentoo's strongest value."

Click Here!