Choosing a distribution, an atheistic approach

I need to start by explaining what Linux is and what it isn't.  Linux is simply a kernel, the part of a computer's operating system that manages it's core functions.  Things like talking to hardware, managing what program gets to use the CPU when, etc.  It does not have a direct user interface, it doesn't know how to talk to the user, only other programs.  So, the kernel by itself is pretty useless.  For the sake of this article we'll use the term operating system (OS) to in much the way Microsoft does.  In this sense an OS includes not just the kernel, but all the programs required to configure and use a computer.  Linux calls this packaging a distribution (or "distro").

All Linux Distro's share the same kernel.  Most also share the same suite of programs used to interface with and configure the system.  There are only a few major things left:

  1. How software is installed (usually done with a package manager)
  2. Where configuration files are stored
  3. Support (some distros are offered by commerical support providers eg. redhat, suse)
  4. Distro specific management and deployment tools

A note on hardware support: One of the biggest things that causes headaches for new linux users is hardware support.  This is due to two factors: package management systems are designed for user software and not drivers so they are handled poorly and linux's small desktop market share, combined with licensing and legal concerns, makes manufacturers less interested in writing drivers.  The latter means that almost all drivers for linux are community supported and to some extent reverse engineered, as a result, they have some flaws.  These problems are virtually universal, so I won't discuss it further with regards to selecting a distribution.  If you are fortunate enough to be buying new hardware, consider whether all the system components have good driver support.

These are all important considerations when choosing a distribution for your own use.  However none of these make any distribution objectively better than any other distribution, just different.  Distributions, for whatever reason, often spawn an almost cult like following.  Whether this is good or bad I'm not sure.  Often it leads to "Distro Wars" with zealots spewing all sorts of hate filled rhetoric regarding distro X.  It does mean that there is a community of expert users to help you, but in my experience, the true experts are atheists anyway.  One must choose the right distribution to suit their own needs, not due to religious belief.

Choosing a Distribution

The variables that need to be considered when choosing the linux distro that is right for you include:

  • Overall size of the system (number of servers/desktops/users)
  • System usage (ranging from general purpose desktop to highly specialized server)
  • Existing support network/knowledge base
  • Any other site or application specific requirements

Existing Support

This is probably the most important consideration.  If you have a support staff with linux expertise, your choice of distro won't be as important, they've seen it all, and they can make any distro work well.  The important thing here is to build a consistent, coherent system.  Otherwise, they need to consider the differences between one system and the next when troubleshooting.  This leads to mistakes and wasted time.  If you're new to linux, then the distro will matter more, specifically the ease of getting help when something doesn't work.  All distros have online support communities and generally speaking the similarities will allow you to get information from any of them and use it to fix your problem.  The thing is, looking all this information up takes time.  You can buy support from vendors like redhat and novell.  <expand on this>

System Usage

On desktops, it's important to have a wide range of recent software packages to choose from, as well as a good graphical user interface and driver support for things like audio and video cards.  This matters less on servers, which typically perform a specific set of tasks using a well defined set of software.  The most important things to consider here are the range of packages available and how often they are updated.

System Size

The bigger a system gets, the more important it is to plan for deployment and system maintenance.  Most distros do little out of the box to help you with this.  There are many ways to deploy linux, but essentially it boils down to copying a bunch of data to a hard drive and rebooting, it's a simple task.  The complexity is in choosing what is copied.  Some distros have tools to help you manage deployment, some don't.  Redhat's Kickstart is a worthy example.  It provides a simple, flexible way to deploy the same configuration to lots of machines with little intervention.  In a small system, you'll just be using around with an install CD/DVD and manually specifying the configuration on each target system.

The level of automation required for administrative tasks is directly proportional to system size.  If I have 1 user and 1 computer it is trivial to perform maintenance tasks manually, I simply tell the package manager to go get updates.  By contrast if I have hundreds or thousands of machines, I can't hope to log into every machine an manually update it, I need a better solution that takes into account the various usage profiles of the machines while allowing for simple, automated updates.  No freely available distro to my knowledge ships with such a system.  There are some tools that can help though, puppet, spacewalk, etc.  Spacewalk is the same tool that Redhat distributes, it promises to be an outstanding tool, but it's not particularily useful at the moment, due to it's tight integration with their commercial update system.  Puppet is a tool that allows you to centrally manage configuration files and software packages, it is lightweight and relatively simple to configure.  The commercial distros might sound like a good choice for large systems, but due to licensing costs, it might be cheaper to use a free distro with a tool like puppet.

Conclusions

As you may have noticed, I haven't spent much time talking about the strengths and weaknesses of very many distributions.  There's a virtually unlimited supply of this kind of evangelism available.  The goal of this article was to provide some thoughts about how to choose the right distro for your needs.