Understanding the differences between various Linux distro's

There are many different operating systems (OS) out there. The most commonly known being Microsoft Windows and Mac OS, and then there is that OS called Linux that people keep talking about.

It is not always clear what Linux is except that it is an operating system (sometimes claimed to be better than any other operating system on the planet). When you look it up, you are faced with a bewildering choice of operating systems that all claim to be Linux: Red Hat, Ubuntu, Slackware, Mandrake, Linux mint, PC Linux OS, Pear Linux, OpenSUSE, etc.

Summary

Fundamentally, all Linux distros are very similar. They are based on the Linux kernel which forms the core of all distros.

The difference between distros fundamentally boils down to:

  • ease of installation
  • which GUI (Graphical User Interface) they provide (changeable in all distros)
  • the look and feel (colours, wallpapers, keyboard shortcuts, etc) they provide (customizable in all distros)
  • what applications (programs) they provide by default (again, users can install applications they feel they need)

The last three are normally completely customizable by the user.

Each distro packages the Linux kernel with a bunch of programs and configures the way it looks, feels, and interacts with the user.

It does not make sense to change distributions because you don’t like the default interface or applications or colours.

It does make sense to change distributions because you are not getting the necessary hardware or software support you would like.

What is an operating system

An operating system is the first program that runs on the computer and continues to run even while you are running other programs.

Strictly speaking, the boot loader is the first program to run because it loads the operating system. But that’s being really picky.

What does an operating system do

An operating system hides all the fiddly details about the hardware from programs that are running on the computer.

There are many keyboards, mice, hard disks, printers, graphics cards, and other hardware that do not necessarily operate or function the same way.

Before there were operating systems, programmers wrote code specifically for the hardware connected to the computer. If the hardware changed (suppose the printer was changed) it usually meant that all programs using that hardware had to be rewritten because the hardware was now different.

An operating system shields the program from the nitty-gritty details of the hardware and provides it with a standard interface to the hardware. Consider a printer: regardless of what printer is connected to the computer the operating system presents the same standard interface and the program uses this interface. The operating system handles communicating with the printer through something called a driver. The driver is a special program that converts information passed through the standard interface into something the hardware can use.

A common problem in Linux is the lack of drivers for hardware. It is not uncommon to buy a piece of hardware (printer, scanner, video card, Wi-Fi adapter, etc) only to discover that Linux does not support it.

At the heart of every Linux distro is the Linux kernel. This is the core operating system. There is only one Linux kernel. You can find the source code for the Linux kernel here.

There are various versions of the Linux kernel:

  • older versions that are no longer being developed but have long-term support
  • versions that are current and stable
  • future versions under development – these may or may not be stable and may include new features
  • finally, there are often several branches of the main kernels that contain experimental features – these may or may not find their way into the main kernel

If all Linux distro’s use the same kernel why are there so many Linux distro’s?

Each Linux distro decides which kernel it will use:

  • some distro’s play it safe and use only a stable kernel
  • more conservative distros may only use older kernels
  • other distro’s like to use the latest stable version
  • other distro’s are more cutting edge and use the development branch including changes that are still under development and possibly experimental.

The kernel itself is not very exciting – it just runs on your hardware, stays in the background and manages the computer. What makes a computer useful is not the operating system that’s running on it but the programs and applications that are run on the computer.

Four key areas where distros differ:

  1. installation
  2. the kernel
  3. the look and feel
  4. programs and applications

Installation

This is usually the first experience a user has with a Linux distro.

The way in which various Linux distros install themselves is usually the first experience a user has with the distro.

Some distros focus on a very simple installation procedure – essentially, the user provides some basic and non-technical information and the distro uses preconfigured settings for everything else. Ubuntu is a distro that takes this approach – it is not exactly a one-click installation process, but it comes very close. This is suitable for the typical user.

Other distros have a more involved installation procedure that requires the user to answer a number of technical questions before installing. These questions may include questions about partitioning the hard disk, what file system to format each partition, etc. There is a wide range of how technical these installations can be.

Finally, some distros give the user complete control over the installation process and are very technical. Slackware is a distro that takes this approach – it assumes a technical and knowledgeable user is doing the installation.

Of course, you don’t have to install from a distro – you can download the Linux kernel, build it yourself, and install it yourself.

The Kernel

The kernel is the core of the operating system. It is the program that always runs on the computer and provides the necessary services to access all the devices on the computer, as well as handling memory management, program loading, etc.

Most Linux distros released around the same time use the same base kernel.

Some distros, like Slackware, use the kernel as is from the kernel repository – if you want something extra, you have to add it yourself.

Other distros, like Ubuntu, modify the kernel by including changes and patches that provide support for more hardware. These changes may not be fully stable for new hardware (which is why they are not part of the base kernel) or they may not be fully open or they may contain patented technology.

A problem I have observed with Ubuntu is that interim releases (like 11.10 and 12.10) often have problems (eventually they get fixed). I have not noticed any problems with the Long Term Support (LTS) releases (like 12.04 LTS).

Linux is licensed under the GPL license, which, basically, allows free copying and distribution of the code but also requires developers to share their code under the same license. Some developers (notably hardware manufacturers) are reluctant to release the source code (because this means competitors can see how their code and devices work – thus giving them insider information on a competitors product). Instead of releasing source code (which can be ported to other platforms or modified by other developers) they release BLOBs (Binary Large OBjects) which only work on certain hardware platforms. For example, a BLOB released for x86 compatible processors, will not work on ARM based processors.

Patented technology (unless freely licensed) is not compatible with the GPL because the GPL requires that everything be freely available and redistributable – including the use and implementation of patents.

Some distros are ideologically based and refuse to include non-open and non-free code and technology. gNewSense is an example of such a distro. This means they support fewer hardware devices than distros that include BLOBs or potentially unlicensed patented technology. As well, some commonly expected features / behaviour may not work either – for example, viewing videos on YouTube.

Other distros are more specialized and may include patches (changes) necessary to support hard real time requirements. These changes are not trivial and consequently, real time distros tend to be based on older kernels. LynxOS is an example of a real time OS that is based on the older version 2.6 Linux kernel.

Having said all that, the core of the kernel is pretty much the same from one Linux distro to the next and from the typical user’s perspective, you can expect they behave pretty much the same way.

Look and Feel

This is what most users see and experience when they interact with a Linux system.

The system can be command line driven, in which case it looks something like this:

or it can be a GUI based system – in which case there are many, many variations. Some of which are shown below:

The MATE desktop running on Ubuntu:

The basic LXDE desktop:

All GUI based distros use X-server to provide the graphical control. X-server in turn communicates with video hardware drivers.

On top of x-server distros will install a window manager. There are four major window managers: GNOME, KDE, LXDE, and XFCE (roughly listed in order of popularity). There are also dozens of other window managers. These are then customized with how the windows actually look, the colours, the background wallpaper or colour, keyboard shortcuts, etc.

Even if two distros use the same window manager, they can look radically different. Below are screenshots from some GNOME based distros:

This is the Cinnamon desktop running on Ubuntu. Cinnamon is a customized version of the GNOME desktop. Notice it uses the Ubuntu colour scheme (but you can change that):

This is the Unity desktop running on Ubuntu. Unity is a customized version of the GNOME desktop:

Programs and Applications

The kernel and look and feel of a Linux system is not particularly useful because the typical user expects to be able to use the system to do work. Whether this is editing documents, surfing the web, developing programs, editing audio or video files, playing games, etc.

All this is done with programs or applications. There are usually many different programs for various tasks a user might want to perform.

For example, browsing the web: there is FireFox, Chrome, Konqueror, and many other web browsers. Each distro includes programs that they feel the user wants (or needs).

For example, Ubuntu is a general purpose desktop OS. It includes a number of basic applications that of use to users: LibreOffice (office suite), FireFox (web browser), gedit (file editor), Nautilus (file manager), etc.

Ubuntu Studio, which is based on Ubuntu, includes a number of applications that are of interest to media developers: GIMP (image editing program), Blender (a 3D content creation suite), OpenShot (a simple video editor), Scribus (a pdf document creator), etc.

Many Linux distros are based on other distros. Essentially, there are four fundamental distros from which all the rest are derived:

  1. Slackware
  2. Debian
  3. Red Hat
  4. Arch

Linux Mint and Pear Linux are based on Ubuntu which, in turn, is based on Debian.

Should You Change Distros?

A common refrain in the Linux community is that if you don’t like a particular Linux distro, you can choose to install a different distro.

Does this make sense?

It depends.

Installing a different distro means that you may potentially lose all your work (unless you’ve made backups) because installing a new distro will over write the existing one.

Most times, what users want is a different GUI interface (look and feel) or maybe a different application.

Linux distros are developed and maintained by many different individuals and groups. Some distros are produced by just one person, others by a few enthusiasts, and others by companies.

If you choose a distro developed by a single developer, can you be sure the person is going to continue developing and maintaining their distro? If a distro is developed by a company, can you be sure the company is going to be around the next time you want to upgrade?

Personally, I would choose to go with a major distributor that has been around a while. My personal preference is for Ubuntu (even if you don’t like Unity, you can change it for some other desktop and customize it yourself) because they have the easiest installation, good support and, in general, just works “out of the box”.

Having said that, if you go with Linux Mint or Pear Linux, you are still getting a distro based on Ubuntu (they even use Ubuntu’s servers for much of their base), and make use of Ubuntu’s simple installation process and, like Ubuntu, just work out of the box.

The only time I would consider switching distributions is if the support (whether hardware or software) is not there. Otherwise, I would recommend customizing what you have to look and work the way you want it.

Looked at another way, would you move because you no longer like the colour of the walls in your living room, or would you repaint the living room?

Additional Resources

For more information about specific Linux distributions you can always check the distro’s website.

An excellent resource is DistroWatch which has information on several hundred Linux distros (it also includes information on other Unix like OSes, like BSD).

There is a search bar in the top left of the site where you can type in the name of the distro, or a drop down menu from which you can select a distro:

There are many other search options available. You can see a ranking of weekly and monthly distro popularity.

Another good resource is the Wikipedia Comparison of Linux Distributions. It is not as exhaustive as DistroWatch, but it does present the information in table form.

A graphical representation of Linux distributions based on (1) their base origin and (2) the year they were introduced is available here. It currently lists over 450 Linux distributions – some of which no longer exist.