It's a well known fact that there's hundreds of different Linux distributions, with many of them gaining sudden popularity or falling back into relative obscurity. As of 2023, I'd say the most important distributions - those that are here to stay for another decade at least and those that have a significant mindshare on the desktop - are just five: Debian, Ubuntu, Fedora, openSUSE, and Arch. Everything else is more of a niche distribution, be it for servers (RHEL, SLE), nerds and greybeards (Gentoo, Slackware), or to make an existing general-purpose distro slightly more user-friendly for novice users (Zorin, pop_OS).
Distributions mostly differ in their package manager and their default choices (desktop environment and so on). Furthermore, there are clearly different tiers of difficulty from beginner-level to expert, for example like this:
Beginners. Easy to use and work out of the box.
For this comparison I have focused mostly on "original" distributions rather than forks as there's often only superficial differences between closely related distros. For example, the only differences between Ubuntu and Mint would be that Mint is only available for x86_64, that fewer desktop environments are available "preinstalled" for Mint, that Mint doesn't have the longer update support that Ubuntu Pro offers, and that Mint preinstalls Flatpak instead of Snap.
Source: eylenburg.github.io
Last updated: 9 April 2024
Debian | Ubuntu | openSUSE | SUSE Linux Enterprise | Fedora | Red Hat Enterprise Linux | Open ROME |
Mageia | PCLinuxOS | Arch | Slackware | Gentoo | Alpine | Void | NixOS | Guix System | Solus | ||||||||
|
|
|||||||||||||||||||||||
Development & Background | ||||||||||||||||||||||||
Based on... | Independent | Debian | Independent | openSUSE | Independent | Fedora | Independent | Independent (forked from Mandriva) | Independent (forked from Mandriva) | Independent | Independent | Independent | Independent | Independent | Independent | Independent | Independent | |||||||
Initial release | 1993 | 2004 | 1994 (Suse) | 1995 (Red Hat) | 1998 (Mandrake) | 2010 | 2003 | 2002 | 1993 | 2002 | 2005 | 2008 | 2003 | 2013 | 2015 | |||||||||
Community-driven or Corporate | Community | Corporate (Canonical) | Community, with corporate backing (SUSE) | Corporate (SUSE) | Community, with corporate backing (IBM) | Corporate (IBM) | Community | Community | Community | Community | Community | Community | Community | Community | Community | Community | Community | |||||||
Price | Free | Free | Free | Paid | Free | Paid, free subscription for developers | Free | Free | Free | Free | Free | Free | Free | Free | Free | Free | Free | |||||||
Freedom & adherence to GNU GPL | Free | Free | Free | Free | Free | IBM does not allow sharing of source codeWhile IBM makes the source code Available to subscribers as required by the GNU GPL, they reserve the right to cancel the subscriptions and therefore also further software updates from clients who share the source code with third parties. This clearly is a violation of the spirit and possibly even wording of the GNU GPL, as it essentially means you can only share the source code once before IBM cancels your subscription. | Free | Free | Free | Free | Free | Free | Free | Free | Free | Free | Free | |||||||
Philosophy | ||||||||||||||||||||||||
Primarily source-based vs binary packages | Binary |
Binary | Binary | Binary | Binary | Binary | Binary | Binary | Binary | Binary | Binary | Hybrid | Binary | Hybrid | Hybrid | Source-based | Binary | |||||||
Immutable or traditional? | Traditional | Traditional |
|
Traditional |
|
Traditional | Traditional | Traditional | Traditional | Traditional | Traditional | Traditional | Traditional | Traditional | Immutable declarative | Immutable declarative | Traditional | |||||||
Fully reproducible system? | No |
No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |||||||
Only allows free software in repos? | No (despite such policy there is a non-free repo) | No | No | No | Yes, except non-free firmware | Yes, except non-free firmware | No (despite such policy there is a non-free repo) | No | No, installation even includes non-free apps | No | No | No | Yes, except non-free firmware | No | No | Yes, and even uses the linux-libre kernel | No | |||||||
Release schedule & Reliability | ||||||||||||||||||||||||
Release model | Fixed | Fixed | Rolling (...)There is also a fixed release version called Leap, but this comparison focuses on the rolling version called Tumbleweed. | Fixed | Fixed | Fixed | Rolling (...)There is also a fixed release version called Rock, but this comparison focuses on the rolling version called Rome. | Fixed | Rolling | Rolling | Fixed | Rolling | Fixed | Rolling | Hybrid | Rolling | Rolling | |||||||
LTS option (>5 yrs) | Yes (5 years) | Yes (12 years) | No | Yes (13 years) | No | Yes (13-15 years) | No | No | No | No | Yes (no fixed EOL date) | No | No | No | No | No | No | |||||||
Ability to roll back updates? | No | No | snapper rollback |
snapper rollback |
|
No | No | No | No | No | No | No | No | No | nixos-rebuild switch |
guix system roll-back |
eopkg history |
|||||||
CPU compatibility | ||||||||||||||||||||||||
amd64 (64-bit AMD/Intel) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||||||
aarch64 (64-bit ARM) | Yes | Server image | Yes | Server image | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes | Yes | Yes | No | No | |||||||
ppc64le (IBM POWER9/10) | Yes | Server image | Server image | Server image | Yes | Yes | No | No | No | No | No | Yes | Yes | No | No | No | No | |||||||
s390x (IBM Z) | Yes | Server image | Server image | Server image | Server image | Yes | No | No | No | No | No | Yes | Yes | No | No | No | No | |||||||
riscv64 (RISC-V) | Experimental | Server image | Experimental | No | Experimental | No | Experimental | No | No | No | No | Yes | No | No | No | No | No | |||||||
i686 (legacy 32-bit Intel/AMD) | Yes | No | Yes | No | No | No | No | Yes | No | No | Yes | Yes | Yes | Yes | Minimal image | Yes | No | |||||||
Ease of use (default setup) | ||||||||||||||||||||||||
Graphical installer? | Yes (Debian-Install) | Yes (Subiquity) | Yes (Yast) | Yes (Yast) | Yes (Anaconda) | Yes (Anaconda) | Yes (Calamares) | Yes (DrakX) | Yes (DrakX) | Text-based (archinstall) | Test-based (Slackware Setup) | No, manual install | Text-based (setup-alpine) | Text-based (void-installer) | Yes (Calamares) | Text-based (Guix installer) | Yes (Calamares) | |||||||
Desktop environment by default (or offered during installation)? |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes (archinstall) | Yes | No, needs to be done post-install | No, needs to be done post-install | Only if installing from Xfce live image | Yes | Yes | Yes | |||||||
GUI for advanced system administration? | No | Limited (e.g. driver manager) |
|
Yes (Yast) | No | No | Yes (Control Center) | Yes (Control Center) | Yes (Control Center) | No | No | No | No | No | No | No | Limited (e.g. driver manager) | |||||||
Graphical updating of packages and system upgrades? |
Updates only, not upgrades to next release | Yes | Yes | Yes | Yes | Updates only, not upgrades to next release | Yes | Yes | Yes | No | No | No | No | No | No | No | Yes | |||||||
Offers to install proprietary codecs? | No | Yes | No | No | No | No | Yes | Yes | Installed by default | No | No | No | No | No | No | No | Installed by default | |||||||
Defaults | ||||||||||||||||||||||||
Default browser | Firefox | Firefox | Firefox | Firefox | Firefox | Firefox | Chromium | Firefox | Firefox | - | Firefox | - | - | - | Firefox | - | Firefox | |||||||
Default file system | ext4 | ext4 | btrfs | btrfs | btrfs | xfs | ext4 | ext4 | ext4 | no default | no default | no default | ext4 | no default | ext4 | ext4 | ext4 | |||||||
Default swap approach | Swap partition | Swap file |
|
Swap partition | Swap on ZRAM | Swap partition | Swap on ZRAM | Swap partition | Swap partition | Swap on ZRAM (archinstall) | no default | no default | Swap partition | no default | No swap | No swap | Swap on ZRAM | |||||||
init system | systemd | systemd | systemd | systemd | systemd | systemd | systemd | systemd | SysV init | systemd | SysV init | OpenRC | OpenRC | runit | systemd | Shepherd | systemd | |||||||
Default C library | glibc | glibc | glibc | glibc | glibc | glibc | glibc | glibc | glibc | glibc | glibc | glibc | musl | Choice of glibc or musl | glibc | glibc | glibc | |||||||
Compiler used | gcc | gcc | gcc | gcc | gcc | gcc | clang | gcc | gcc | gcc | gcc | gcc | gcc | gcc | gcc | gcc | gcc | |||||||
Supported desktops: | ||||||||||||||||||||||||
KDE Plasma | Option during installation | Kubuntu |
|
In Package Hub |
|
In EPEL | Default | Pre-selected choiceAlso available as Live Image | Plasma Edition |
Option during installation (archinstall) | Default | In repo | Available via setup-desktop | In repo | Option during installation | In repo | Plasma Edition |
|||||||
GNOME | Pre-selected choice | Default | Default |
|
Default | GNOME Spin | Option during installationAlso available as Live Image | No | In Slackbuilds | Pre-selected choice | Option during installation | GNOME Edition | ||||||||||||
Xfce | Option during installation | Xubuntu | In Package Hub |
|
In EPEL | In repo | Available as Live Image | Xfce Edition |
Option during installation | Installable Live Image | Option during installation | Xfce Edition |
||||||||||||
MATE | Ubuntu MATE |
In repo | MATE Edition |
In Slackbuilds | In repo | In repo | In repo | |||||||||||||||||
Cinnamon | Ubuntu Cinnamon |
In repo | No | No | No | No | ||||||||||||||||||
LXQt | Lubuntu   |
No | LXQt Spin | In Slackbuilds | In repo | In repo | ||||||||||||||||||
Budgie | In repo | Ubuntu Budgie |
|
In repo | No | No | No | No | In repo | No | Budgie Edition |
|||||||||||||
Package management | ||||||||||||||||||||||||
Main package manager | apt | apt |
|
zypper |
|
dnf | dnf | urpmi | apt-rpm | pacman | slackpkg | portage | apk | xbps | Nix | Guix | eopkg | |||||||
Native binary package format | DEB | DEB | RPM | RPM | RPM | RPM | RPM | RPM | RPM | PKG.TAR.ZST | TXZ | GPKG.TAR | APK | XBPS | NAR.XZ | "substitutes" | EOPKG | |||||||
Supported "universal" package formats: | ||||||||||||||||||||||||
Flatpak | Supported | Supported |
|
In Package Hub | Preinstalled | Supported | Preinstalled | Preinstalled | Supported | Supported | In Slackbuilds | Supported | Supported | Supported | Supported | Supported | Supported | |||||||
Snap | Preinstalled |
No |
|
In EPEL | No | No | No | In AUR | No | No | No | No | No | Preinstalled | ||||||||||
Nix | Supported | Install scriptvia generic installer script for Nix and Guix | Install scriptvia generic installer script for Nix and Guix | Install scriptvia generic installer script for Nix and Guix | Install scriptvia generic installer script for Nix and Guix | Install scriptvia generic installer script for Nix and Guix | Supported | In Slackbuilds | Install scriptvia generic installer script for Nix and Guix | Supported | Supported | Preinstalled | Supported |
Install scriptvia generic installer script for Nix and Guix | ||||||||||
Guix | In AUR | Install scriptvia generic installer script for Guix | Install scriptvia generic installer script for Guix | Install scriptvia generic installer script for Guix | Install scriptvia generic installer script for Guix | Preinstalled |
||||||||||||||||||
AppImage | Should work | Should work | Should work | Should work | Should work | Should work | Should work | Should work | Should work | Should work | Should work | Most likely not working | Should work with glibcbut not musl | Should work (appimage-run ) |
Should work (--emulate-fhs guix shell --container --emulate-fhs) |
Should work | ||||||||
Security | ||||||||||||||||||||||||
Full-disk encryption option in installer | Yes | Yes |
|
Yes | Yes | Yes | Yes | Can encrypt individual partitions when selecting "custom partitioning" | Can encrypt individual partitions when selecting "custom partitioning" | Yes (archinstall) | No, manual setup using cryptsetup | No, manual setup using cryptsetup | Yes | No, manual setup using cryptsetup | Yes | Yes | Yes | |||||||
Out-of-the-box support for Secure Boot | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | Yes | |||||||
Kernel security module set up by default? | AppArmor | AppArmor |
|
AppArmor | SELinux | SELinux | No | No | No | No | No | No | No | No | No | No | AppArmor |
Since the beginning of Linux, different distributions come with different tools and packages, making it hard for developers to make sure that their applications work on all distributions. The most obvious user-facing differences are the choice in desktop environment (also see here for a timeline of default desktops) and the package formats used. I have looked at the most important Linux distributions for each year. Click on the years below to see what has changed over time. Overall, when looking at the seven categories below (desktop environment, toolkit, display server, init software, package formats, file systems, security modules) there has always been around 70-80% homogeneity across the four big distributions.
Select a year:
Year 2000 - 79% homogeneity Year 2005 - 79% homogeneity Year 2010 - 71% homogeneity Year 2015 - 68% homogeneity Year 2020 - 79% homogeneity As of today (2024) - 78% homogeneity2000
Major Linux Distributions Default Desktop Environment1 Preferred Toolkit for Applications2 Default Display Server2 Default Init Software Default Package Formats Default File System Default Security Module
Debian GNU/Linux
SysVinit
GNOME
GTK
X11
SysVinit
DEB packages
ext
None
Linux-Mandrake
SysVinit
KDE
Qt
X11
SysVinit
RPM packages
ext
None
Red Hat Linux
SysVinit
GNOME
GTK
X11
SysVinit
RPM packages
ext
None
SuSE Linux
SysVinit
KDE
Qt
X11
SysVinit
RPM packages
ReiserFS
None
2005
Major Linux Distributions Default Desktop Environment1 Preferred Toolkit for Applications2 Default Display Server2 Default Init Software Default Package Formats Default File System Default Security Module
Debian GNU/Linux
SysVinit
GNOME
GTK
X11
SysVinit
DEB packages
ext
None
Mandrake Linux
SysVinit
KDE
Qt
X11
SysVinit
RPM packages
ext
None
Fedora Core
SysVinit
GNOME
GTK
X11
SysVinit
RPM packages
ext
SELinux
SuSE Linux
SysVinit
KDE
Qt
X11
SysVinit
RPM packages
ext
None
2010
Major Linux Distributions Default Desktop Environment1 Preferred Toolkit for Applications2 Default Display Server2 Default Init Software Default Package Formats Default File System Default Security Module
Debian GNU/Linux
SysVinit
GNOME
GTK
X11
SysVinit
DEB packages
ext
None
Ubuntu Desktop
GNOME
GTK
X11
Upstart
DEB packages
ext
AppArmor
Fedora
GNOME
GTK
X11
Upstart
RPM packages
ext
SELinux
OpenSUSE
SysVinit
KDE
Qt
X11
SysVinit
RPM packages
ext
AppArmor
2015
Major Linux Distributions Default Desktop Environment1 Preferred Toolkit for Applications2 Default Display Server2 Default Init Software Default Package Formats Default File System Default Security Module
Debian GNU/Linux
GNOME
GTK
X11
systemd
DEB packages
ext
None
Ubuntu Desktop
Unity
GTK
X11
Upstart
DEB packages
ext
AppArmor
Fedora Workstation
GNOME
GTK
X11
systemd
RPM packages
ext
SELinux
OpenSUSE Leap
KDE
Qt
X11
systemd
RPM packages
btrfs
AppArmor
2020
Major Linux Distributions Default Desktop Environment1 Preferred Toolkit for Applications2 Default Display Server2 Default Init Software Default Package Formats Default File System Default Security Module
Debian GNU/Linux
GNOME
GTK
Wayland
systemd
DEB packages
ext
AppArmor
Ubuntu Desktop
GNOME
GTK
X11
systemd
DEB & Snap
ext
AppArmor
Fedora Workstation
GNOME
GTK
Wayland
systemd
RPM & Flatpak
ext
SELinux
OpenSUSE Leap
KDE or GNOME
depends on selected desktop
systemd
RPM packages
btrfs
AppArmor
Today (2024)
Major Linux Distributions Default Desktop Environment1 Preferred Toolkit for Applications2 Default Display Server2 Default Init Software Default Package Formats Default File System Default Security Module
Debian GNU/Linux
GNOME
GTK
Wayland
systemd
DEB packages
ext
AppArmor
Ubuntu Desktop
GNOME
GTK
Wayland
systemd
DEB & Snap
ext
AppArmor
Fedora Workstation
GNOME
GTK
Wayland
systemd
RPM & Flatpak
btrfs
SELinux
OpenSUSE Leap
KDE/GNOME/Xfce
depends on selected desktop
systemd
RPM packages
btrfs
AppArmor
Source: eylenburg.github.io
Footnotes:
1: default or pre-selected desktop, same methodology as here
2: for default/pre-selected desktop
The graph below shows the relative amount of hits on Distrowatch for the different Linux distributions, grouped by larger distro families and ancestries. The data is available for 2002-2023Q1. As well all know, Distrowatch hits are NOT a reliable indicator for the market share - just think of the mysterious #1 position of MX Linux - but nevertheless it's quite interesting to see how things have changed over time. The greater Debian family now dominates, although Arch-based distros have also recently gained a lot of popularity. At the same time, Gentoo, Slackware, (open)SUSE, Red Hat/Fedora and Mandriva have lost in the Distrowatch rankings compared to the early 2000s.
How to read it? Like any other diagram showing market share over time. The x-axis moves along the years starting in 2002, and the thickness of the coloured slices along the y-axis indicates the relative amount of Distrowatch hits compared to other Linux distributions. In the large chart at the top, all Linux distributions add up to 100%. In the smaller chart at the bottom it works similarly, with Linux, *BSD, and Solaris/Illumos adding up to 100% and the relative thickness showing the relative amount of clicks of these three OS families. (Note that the two charts are not using the same scale on the y-axis.)