CentOS 5: Linux for Grownups
The CentOS project may be careful not to name Red Hat as its upstream source, but that doesn't detract from the quality of the distribution.
Some folks love life on the edge, so they run Debian Unstable, or the newest Ubuntu or Fedora releases. These are all wonderful Linux distributions, and under most circumstances are reliable enough. You'll run into weird dependency issues, or find out the hard way that the latest release of an application has a few problems, or that the distribution maintainers introduced entirely new applications that are chock-full of amusing surprises. For the most part they work well, but you never know when they're going to get bored and have a little fun at your expense.
Then there are the brave souls who dare to be dull and don't want surprises. They just want their systems to chug along and not need a lot of babysitting. For these fine folks there is CentOS Linux. CentOS is a clone of Red Hat Enterprise Linux (RHEL), built from RHEL's SRPMs (source RPMs, and please note the correct absence of apostrophes in RPMs.) It is free of cost, though you might show your appreciation by clicking the donation link.
CentOS is more than RHEL with the trademarks removed, which in itself is a big job as you'll see in the Release Notes. (The CentOS team are so paranoid about infringing on Red Hat's trademarks that you'll find hardly any mentions of "Red Hat" in the CentOS distribution or on the Web site. Instead, they refer to it as "UOP", or Upstream Operating system Provider.) They maintain their own package repositories, and apply security patches as they receive them from upstream. CentOS supports a range of hardware architectures as this matrix shows. They're always going to be behind RHEL; with security fixes they're right on top of things, and with things like new releases and support for multiple architectures, they sometimes lag a few weeks behind RHEL. It's free and it's binary-compatible with RHEL, so no complaining allowed.
An important difference between CentOS and RHEL to us lowly users is that RHEL 5 comes in two editions: Server and Desktop. That's right, at last they are blatantly using the word "Desktop." These are managed via up2date, which CentOS no longer includes, and they have their own separate repositories that require registration keys to access. Since CentOS is free it makes no sense to maintain separate repos, so they don't. No hassles with registration keys; everything is available from a single source.
Upgrade or Fresh Install
The biggest weakness of RHEL and its clones and offsprings is none of them have a reliable upgrade path. I've heard both success and horror stories on upgrading to new RHEL releases; sometimes it works, sometimes it doesn't. In my own experience, trying to upgrade to a new CentOS release has mostly not worked. This is a good guide for upgrading if you want to give it a go.
Installer Bad Stuff
Another weakness is a lack of good documentation for a network installation. The official Red Hat installation manual is sadly deficient, and its offspring and clones are no better. CentOS 5 requires the first 5 installation CDs for even a base installation with absolutely no extra packages. Yes, really, and I am pleased that you are as flabbergasted as I am. A nice network installation would remedy this silliness. The Anaconda installer supports a network installation when you know the secret boot incantation, which is linux askmethod. Then you get a screen for configuring which CentOS mirror you want to use. But it doesn't work, and you won't know that it's failed until several steps and many minutes later in the installation, when it emits a sad "Unable to read package metadata" message. Fedora tests your network mirrors right away and lets you know if you got it right.
One of the requirements for a network installation is to have both a /base and a /RPM directory on the installation server, like http://mirror.foosite.org/centos/5/os/i386/base, whether it's your own local server or a public mirror. The CentOS public mirrors do not have the /base directory.
Another gripe about the installer is that it requires at least 512 megabytes of RAM for the graphical installer, but it does not test for this, so if you don't have enough RAM it simply locks up at some random point during the initial screens. To boot to the ncurses-based installer, use linux text. Be sure to hit the F keys to get useful information before you start.
Good Installer Things
Overall, the CentOS installer is very nice and sensible. You get all kinds of do-overs, so you can backtrack and make changes. You can configure your network interfaces the way you want, either DHCP or static addresses. Having to scroll through every single time zone in the world to find the one you want is a minor pain. I especially liked the package selection screen. It lists the available package groups, and then to see the individual packages in each group hit F2. Easy and fast.
The default partitioning scheme sets up a logical volume manager. This is the same old Disk Druid that we know and love, so even if you select one of the pre-fab partitioning schemes you can still change it all you want. It does not foist Xen and SELinux upon you the way Fedora does, though these are available if you want them.