Monday, August 20, 2007

Gentoo Linux - power versus complexity

Those readers who follow DistroWatch Weekly know that I replace my main production distribution every six months in order to better evaluate the different products on the market. Right now I am on Sabayon Linux; more so by accident than intention, but it has been working well, so I can't complain. However, as a general rule, I prefer to stay with larger, more prominent distributions rather than these small-team development efforts. The reason? All the big ones provide security and bug-fix updates, usually through an easy-to-use online update utility integrated into their desktops.

Unfortunately, building security updates for a distribution is often seen as a boring, unglamorous task that many developers would rather avoid. As a result, most distributions with small development teams (including Sabayon) don't provide any and if you are concerned about this, you have to find your own solution. The good news is that with Sabayon you aren't completely abandoned; since it is based on Gentoo and all the usual Gentoo tools are included, ensuring that your Sabayon system is up-to-date is not that hard - even if it isn't exactly a one-click proposition.

So after running Sabayon Linux 3.3 without any updates since about April, I finally decided last week to do some security and version updates on the system. Using Gentoo's "emerge" command, things went well and I was pleased with the outcome. Encouraged by this success (bear in mind that the last time I played with Gentoo was several years ago and many things have changed since then), I even attempted to upgrade the entire system - over a thousand packages. This didn't go as smoothly - a few packages (about twenty or so) refused to compile, although the vast majority upgraded just fine.

Unfortunately, a major disaster struck at a most inopportune moment. While the emerge upgrade was going on in the background, my screen froze! This -- as I found out later -- was caused by a faulty memory module, so it had nothing to do with either Sabayon or Gentoo, but a hard reset was still the only course of action I could take. After removing the faulty RAM block from the motherboard, I was finally able to start the machine - only to be greeted with a boot failure due to a missing libpam.so library!

I am not going to bore you with all the details of what I did next, but here is a short recap: I rebooted into my Fedora 7 installation on the second hard disk and tried (and failed) to repair the Sabayon/Gentoo system, before deciding that the best course of action would be to re-install Sabayon Linux. Or more precisely, install the latest version, since the developers have since released Sabayon Linux 3.4. This went fine and soon I was running and enjoying the very latest version of the distribution. After that I reached for the "emerge" command once again in order to install a few applications which I need on my desktop, but which are not present on the 4 GB Sabayon DVD: the Apache web server, Liferea, GnuCash, Gnumeric, Mutt, SpamAssassin, gFTP, etc.

I learnt a lot about Gentoo during the past week. I admired the well-oiled machinery of thousands of software applications neatly packaged to work together flawlessly. I appreciated the power of the emerge command, I marvelled at the ingenuity of the USE variables, I enjoyed the many configuration options and system utilities. On the other hand, I was also frequently lost, like a child walking through a toy store trying to decide what to buy. Those who have used Gentoo for years would probably disagree with me, but for a new Gentoo convert, the complexity of the operating system is nothing short of overwhelming and the famous Gentoo documentation, as I was to find out, is not without its flaws either.

Here is an example. It took me a while to install Apache with PHP and SQLite support. This was done with "emerge apache", followed by "emerge php"; however, before the latter command, I had to make sure that the USE variable included "apache2" and "sqlite". Now, why "apache2" if the package itself is called "apache"? The next question was - since there are about five (if not more) different ways to enable the said USE variables, which one should I choose? Sure, the Gentoo project provides a long document explaining in detail all the different options, but did I really want to spend an hour or two studying it? In the end I just randomly picked one of the options without really knowing what would be the correct or best in my circumstances. Various other "gotchas" accompanied several other installations and I often found myself recompiling a certain piece of software several times just to enable a needed functionality.

In the end, I have to admit that I enjoyed the experience. Although I barely touched the surface of Gentoo Linux, it's clear to me why so many power users prefer to run it - its customisability and sheer power are unparalleled anywhere in the world of operating systems. The ability to tweak and tune it to one's exact needs is another attraction that many Linux power users will enjoy.

That said, one has to ask the old question: is it all worth the time and effort? You can easily spend weeks learning Gentoo, but you still won't know everything. Worse, much of this knowledge is useless outside of Gentoo - if one day you find yourself in a situation where you have to run a different distribution, all those specialist Gentoo commands and the location of the Gentoo configuration files will mean nothing. Sure, this is also true -- to an extent -- of other distributions, but Gentoo has probably taken this specialisation further than any other operating system. And that's before we start talking about all the alternative, less often used tools that also exist in the Portage tree...

Gentoo hasn't always been this complex. But the nature of the distribution and its attractiveness to the more technical users and developers means that it is unlikely to regain its original simplicity again. This is not necessarily a bad thing. However, I do feel that the ever growing complexity, together with the increasing number of packages and features, are bound to introduce new bugs and incompatibilities. This in turn might discourage its wider adoption, especially beyond the developer and power user circles. The ever steeper learning curve is another factor that could drag Gentoo Linux further down in terms of deployment figures.

What do you think? Has Gentoo gone too far in making itself powerful? Has its complexity discouraged you from running it? If you run Gentoo Linux on your desktop, can you truly say that you know all there is to know about it? Has the famous Gentoo documentation ever let you down? Or do you enjoy its power so much that you would never consider another distribution? Please discuss below.

No comments: