As Linux surges in popularity in the consumer PC market, there is lots of discussion about which distribution of Linux is best for beginners, office workers, and businesses to use for their needs. Much of that discussion, however, seems focused primarily on the superficial, surface-level differences which have little technical, theoretical or practical significance, such as which desktop environment, applications and packages are installed, or how the UI is configedu and themed out of the box. While these customizations certainly do impact the user’s experience, especially new-comers, they are only skin deep, and have little to do with what actually makes a distribution unique. Many “distros” are simply spin-offs of one of the “major” distributions like Debian, Ubuntu, Arch Linux, Red Hat, and so on. Sometimes the spin-offs evolve into what one might call a “truly new/unique distribution”, but this is not because of choice of desktop environment, window manager or default applications. All of that is easily interchangeable and customizable with pretty much any modern desktop distribution. Anyone can swap out Gnome for KDE or Cinnamon, uninstall some application and install others, or change the look and feel of their UI, adding or removing as much charm and glitter as they want. So what truly does differentiate distros?

Package Management System

Linux is all about open-source software. But source code (often) cannot simply run as-is, it must be compiled into binary files that can be executed (ignoring interpreted languages like python or ruby). How source code is compiled depends on the operating system (namely the kernel and APIs around it). This is why, for instance, software compiled for windows does not typically run on linux or mac, and vice versa (ignoring cross-platform solutions). It must be re-compiled for each platform. Compiling can sometimes be tedious because the compiler must be told about configurations and environment attributes specific to the platform being compiled for, which is daunting to even advanced users. Packages are pre-compiled and configured such that they can run on and be installed easily on the platform they are compiled for, with little or no configuration. Package management systems (such as apt/dpkg for ubuntu/debian, YUM/RPM for redhat,fedora, centos etc, Pacman for arch, tgz for slackware, homebrew/macports for mac osx, ports in BSD, etc etc) handle fetching packages from the repository, installing and configuring them, and automatically checking for updates of the installed packages on a system, much the same as Google Play or AppStore do for mobile apps on your smartphone (yup, that concept has been around for very long time in the linux world.)

Repository

Package management systems get their packages from a repository of packages. Most distros have an official repository, and some have unofficial repositories as well, such as Arch’s AUR. Different distros manage their repos in different ways, have different processes for adding/updating packages in the repo, such as testing cycles, and different rules surrounding the process and what is or isn’t allowed in the repos (for instance, some distributions do not allow proprietary/closed source applications).

Release Cycle

Some distributions put out a release every 6 months. Some once a year. Some less often. Some distributions, such as arch linux, are based on a rolling-release cycle where there is less of a version number and updates are continually released piece by piece about as soon as they are developed (arch linux, for example). Others take hybrid approach (lots of talk that cannonical is considering that for Ubuntu). The trade off is bleeding edge, up-to-the-minute updates, vs stability. Other distributions may have very irregular release and upgrade cycles, depending on the size of the development teams or how active development is.

Initialization & Booting

There are various mechanisms for handling the booting and initialization of the OS, and the way processes and daemons (think background services) are started. One common mechanism, init, is used by many distros, but with different styles such as SysV or BSD style. There are also init replacements like systemd and upstart, which offer parallelization, modularity, and so forth. There are many variations in this space, with advantages and disadvantages, such as configuration ease, time to boot, etc. and various preferences on how the configuration is handled.

Community

Community is a big part of any distro or family of distros. It is arguably the most important, and could have very well been the first item in this article. Communities are the source of help and support, the drivers of changes and developments, and often the focus of what a distribution is all about. Size, activity, friendliness and helpfulness, engagement, and expertise are important attributes of the community. It is often the community that maintains and updates packages in the repos, provides documentation, and otherwise facilitates the general ecosystem around a distribution. How the community is structured, and what level of control and influence the community has on the development of the distribution vary from one to the next, and grievances about communities and their relationships with the core developers have often been a catalyst in the rise and/or fall of many distributions. Some communities are very organized and structured, with official forums, message boards,wikis, mailing lists and IRC channels, and even guidelines and practices for involvement and contribution, while others are very ad-hoc and loose.

Installation

Different distros have different ways of being installed (many support more than one.) CD/DVD or USB medium are probably the most common, as well as network installation. One one extreme, some install a full environment with desktop and window manager, custom themes, and many packages right out of the box. Others, on the opposite side of the spectrum, install only enough to turn the system on and start fetching packages from the repository via command-line tools. Many sit somewhere in between, giving closer to a full system but still allowing some customization on what is or isn’t installed initially. Various installers are used as well. Some require or allow lots of manual configuration, such as setting up the bootloader, partitioning hard disks, and setting things like users, hostname, system time, language, shell, login manager, and so forth. Others use mostly or fully-automated graphical wizards to easily click through the process. There are also many “live” distros which can be started and ran from a CD/DVD or USB flash drive without actually installing anything onto the system, targeting “trial” runs, portability, system recovery, forensics and the like. Additionally, some distros provide “virtual appliance” versions, made to be used as virtual machines configured for tailored uses; these are popular in the server and hosting world.

Footprint/Hardware Target

Several distributions, like Damn Small Linux, TinyCore, and Puppy Linux have small footprint and are targeted toward older systems with limited memory, processing power or disk space. Others like Linux Mint and other popular desktop distributions target more modern hardware to support the 3d and animated visual enhancements and heavy-lifting features. Some distros target much narrower, specific types of hardware, such as Raspbian, a Debian-based distribution for Raspberry Pi computers and IZ2S/EZ2S for the Zipit Z2. These distributions often use specialized kernels (think of the kernel as a sort of ‘master program’ that all other programs use to access system resources), uncommon configurations, and custom packages to achieve their goal.

Special Use Cases

Similarly to distributions targeted at specific hardware types, there are distributions tailored for specific special use cases. These are not just rebrands of other distros with packages oriented toward a theme, such as Ubuntu Studio for music, video and art production. They are fine-tuned and tailored down to the nuts and bolts of the system. Some examples include Knoppix and Ultimate Boot CD, aimed for rescuing and repairing broken systems (even Windows), IPCop for firewalls (built with Linux From Scratch), m0n0wall (also for network administration via a web UI), OpenWRT for embedded routers, rPath for building tailored distros, and so on.

Diving under the hood shows what really determines the meaningful differences between distributions. Ultimately it still comes down largely to preference, but understanding the technical aspects of distribution differences can aid making the right decision when dictated by particular technical or business needs. For the new-comer, the best bet is to simply pick one and begin exploring; the impact of these various details will become more clear with experience.