What is a Linux distribution?
Linux is the official name of the kernel, which orchestrates the interface between physical hardware components and the software (tasks, processes, threads) than run on it. So a Linux distribution typically uses Linux for kernel and then packages a number of other things around it. There are usually the following characteristics that make distro distinct:
- The Kernel type (long term, stable, or more recent ones)
- The init system: it is the first process that initializes the system, and manages other processes until the computer shuts down. SytemD is the standard nowadays, but there’s also runit, upstart…
- The package manager: which is used to install programs, manage dependencies and process updates.
- The display server: X.Org, Mutter, Kwin, etc…
- The bridge between the display server and the graphical interface: X11 or Wayland
- A window manager: it deals with how the windows are represented on screen. It could be stacking window manager, a tiling one, or a compositing window manager (that can apply effects before rendering windows on screen)
- The graphical interface: what the end user actually sees to operate the system. There’s GNOME, KDE but a few other choices too.
- The overall system update policy: batch (once every year or 2 years, major upgrade) or rolling (the system keeps being upgraded every week with new system libraries and versions of applications).
- A set of libraries, (non-free) drivers and applications installed by default
As you can see there’s a lot of potential combinations possible when building a distro, which is why the market is so fragmented: there’s potentially a distro out there that will make a different choice in the above factors, hopefully enough to be considered sufficiently different and gather some following.
The Main Linux Distros Out There
This is not going to be a history of all Linux distros, but at least an overview of the current offering (not exhaustive):
- Debian: one of the oldest Linux distros. It has several versions. It uses SystemD as init system, X11 by default, apt as a package manager.
- Ubuntu: based on the more recent updates of Debian. It uses SystemD, X11 and apt for package management as well. It defaults to GNOME as a graphical environment these days.
- Arch Linux: rolling release, uses recent kernels and SystemD as init system. It is installed from the command line and be customized from there on to work with pretty much any configuration.