Understanding different Linux Distros

First: Windows has not been a DOS GUI for quite a while; NT-based Windows (NT/2000/XP/Vista/7/8) are totally independent from DOS. explorer.exe isn't the GUI, either: it's just a shell (you can find shell replacements for Windows, too)

At heart, all distros are based on the Linux kernel; the main differences (from an end-user point of view - there are differences in e.g. init systems, files under /etc and other places) - between distributions are:

  • package management

Ubuntu, Mint and all other Debian-based distros use dpkg/APT as the packaging system. Other distros will use other systems (e.g. Red Hat, Fedora, SuSE will use RPM, Arch will use pacman).

  • selection of packages

Effectively, Mint is an Ubuntu with some extra packages (e.g. codecs, not included with Ubuntu for patent/copyright reasons) and a different theme (to create a custom identity and avoid trademark/plagiarism questions and user confusion).

Of course, you can install any other GUI in Mint: you could use Mint's desktop environment (Cinnamon) in Ubuntu and technically (reality is another story: you probably will bump into package conflicts) you should be able to install Unity and Ubuntu's visual identity (themes, icons) in Mint.

So, in theory you could turn your Ubuntu into a Mint-ish system but in practice this is quite difficult to do.


As per the comment about the difference between 'interface' and 'shell', which can raise some confusion:

In the UNIX world, 'shell' already has a specific, well-accepted meaning:

A Unix shell is a command-line interpreter or shell that provides a traditional user interface for the Unix operating system and for Unix-like systems.

Compare with the Windows shell, which is a different thing entirely:

The Windows shell is the main graphical user interface in Microsoft Windows. The Windows shell includes well-known Windows components such as the taskbar and the Start menu. The Windows shell is not the same as a "command-line shell", but the two concepts are related.

In our case we would call Cinnamon (or KDE, GNOME, Unity, XFCE) a desktop environment: a set of applications (window manager, panels, notification tray items etc...) that provide the user experience.


To understand the difference between distros, maybe you should look again at what a distro is.

What's a distro?

You probably know all this, but think about it again. Linux is just a kernel. In most cases, that's completely useless by itself. Most of what it does is simply providing a software interface to the hardware on your machine so that other programs can use it.

A distribution is much more complex than this. Take into account:

  • A choice of applications and libraries specific to the use of the distribution.
  • Tools to manage and maintain the system.
  • Documentation and support channel.
  • A release cycle and community management.

There are a lot of software layers added on top of Linux to create something like Ubuntu or Mint, with infinite possibilities of configurations and choices to make.

You should also take into account the nature of the editor of the distro. Projects like Red Hat, SuSE or Ubuntu serve the purpose of businesses while others like Mint, Debian or Gentoo are managed by volunteers.

What's the difference between one distro and another?

Virtually any application running on a distro is available (or easily portable) to another. After all, they are all very similar Unix systems. However, no matter what you do, you cannot change the release cycle of your distribution, the speed at which new versions are packaged, or simply the look and feel of their official forum. Maybe an example would show you better:

Let's say I am impatiently waiting for the new version of my software, for instance Python-3.3 which is due in a few days. How will it be available for different distros:

  • Rolling release distros (like Arch Linux or Gentoo) will make it available quickly in their repositories. As soon as the maintainer packages it and basic tests are run, it's available.
  • Enterprise distros will probably promise it for "upcoming versions". In the meanwhile it's still available but won't be in any official channel.
  • Debian will not make it available before it's thoroughly tested, a process that can take years. However it makes the testing repository very easily available for the public. (For instance Ubuntu creates their versions out of this version repository every 6 months).

What's the real difference between Mint and Ubuntu?

For the record, I should point out that I haven't used Ubuntu for over 2 years and barely used Mint for a few months 4 years ago. What I'm saying here might not be very accurate.

The difference between Mint and Ubuntu is minimal, after all Mint is completely based on Ubuntu. Originally, Mint was simply a repackaging of Ubuntu with 3 differences:

  • It provided proprietary technologies in their default install (something that Ubuntu doesn't).
  • It provided a few graphical tools like the taskbar menu or the app installer that it patched on top of the basic Ubuntu install.
  • It had a higher focus on aesthetics. Its slogan is still "From freedom came elegance".

A few years ago, the schism grew wider as Ubuntu tried to push the Unity graphical environment, Mint community made a big deal about rejecting it. This is how Cinnamon came to be.

I have never tried it, but I wouldn't be surprised if someone makes Cinnamon run on Ubuntu and Unity on Mint. The argument I'm trying to make is:

Differences between distros like Mint and Ubuntu are much more about the community and the subtle choices than it is about the software itself.

Further reading

  • Is there a difference of stability between Linux distros?

That's a good question. My understanding is that you theoretically could, but it might not work as expected. Although Mint is based off of Ubuntu, Ubuntu and Mint use different software repositories. These repositories are what make each distribution unique. On any Mint or Ubuntu desktop system, you can set the repositories to anything you want. So, you could take a system that was installed as Mint and change all the repositories to Ubuntu repositories. Then, if you reinstall all of the packages, you've essentially got Ubuntu. However, Ubuntu and Mint each do their own little tweaks to the code (which is in turn based off of Debian). So, if the Mint packages are expecting one set of tweaks, but the Ubuntu packages provide a completely different set of tweaks, then you could end up with a very broken system.

Even some of the different "versions" of Ubuntu have really bizarre tweaks to their code. This is because Canonical focuses on ease of use rather than code correctness or interoperability. Recently, I tried installing Xfce4 onto an Ubuntu 13.04 "server" install. I ended up with a completely broken system. It was a complete mess. I ended up installing the normal Ubuntu 13.04 and then installing xfce on top of it. Everything mysteriously worked. Certain menus and programs even looked nicer, like they were being rendered with a completely different engine. However, I used all of the same configuration files and packages that I had used on the server install (and for a Debian install which runs flawlessly on the same computer).

That's just Canonical magic for you. If you leave everything as they provide it, then it usually works well. If you touch even the slightest thing, then things can start to get really weird.