A couple days ago A few months ago (this has been in draft for a while now!), a friend asked me to explain the issue raised in a 2019 article on a KDE/Dolphin bug, and what the fuss was about.
They then sent me this question:
So I'm running Xubuntu how does that differ from Ubuntu on the "deep down" (kernel) level? [...] Because the KDE thing didn't affect all distros. .. or was that just because of Dolphin ?
The following is my answer to them...
No it is not affected, unless you actually installed KDE or Dolphin as a standalong component
- Linux is a system kernel, it talks to hardware, that's all, it operates with highest privilege in "kernel space"
- Any software thereafter collectveily distributed with a Linux kernel as a runnable system is a "distro"
- There are tools, often command line, some for interacting with it, some for doing other stuff - these are the user-oriented tools, operating with lower privilege in "userland" space (not to be confused with administrative privilege)
- Then there are GUI applications on top of this, which are what you normally see, including desktop environments like KDE, Xfce, GNOME, etc... which have their own subcomponents. Unlike Windows and Mac, you can install several different ones and switch between them
- Some distros are technically-specialised, some are tuned for specifica activities or hobbies by pre-installing and pre-configured sets of software
- There are other "non-classic" Linux distros like Android, ChromeOS, and others
allmost of the distros on DistroWatch.com
So, young padawan. You think you are ready.
The short answer to your above question is that to say that "Xubuntu was not affected by the Dolphin bug" would be slightly incorrect - Xubuntu does not ship with Dolphin out of the box, but if you had gone out of your way to install Dolphin inside Xubuntu, it would have been affected.
The long answer is a lot longer... Brace yourself.
I'm sure you've by now come across the phrase "Linux is just a kernel." Anything built around that constitutes a "Linux-based operating system." These include, but are not limited to, Debian, Ubuntu, Fedora, etc, as well as ChromeOS and Android. They are all Linux operating systems, but they are all very different.
In the simplest terms, the kernel (in our case Linux) provides a way for other programs to talk to the underlying hardware (CPU, storage, network card, USB ports, Bluetooth receiver, etc). The kernel is responsible for managing the nitty-gritty details. Programs talk to Linux, Linux talks to the machine...
(For example, you will tell a program "save this text file." The program will say "hey kernel, I want to write [this data] at [this file path]." The kernel then takes care of deciding which part of the disk the data is written to, and associating the correct part of the disk with the path of the file, storing the information about the file's path, and so-forth. The program itself never directly accesses the disk and decides what sectors to write into, the kernel does that.)
The kernel also contains code for drivers - the actual parts that know how to talk to individual pieces of hardware, different CPU models, displays and display connectors (HDMI, VGA, DisplayPort, ...), different USB devices, webcams, sound devices, keyboards, wifi adapters, printers, scanners, and so on and so forth. Regular Linux distros ship with virtually all the drivers built into their kernels.
It is possible however for any one distro to decide "we don't need all that stuff - remove some of it." A distro that targets only a certain micro-controller for example might purge the vast majority of drivers, and leave in only the key necessary stuff for that one microcontroller. This would be the case of Linux used to control a series of smart fridges, for example - their in-house distro would never be installed on anything but their fridges, so why include a massive kernel with features that would never be used.
What does this mean in terms of distributions?
For one, it means that a Linux kernel on its own will do very little, if there are no programs to access its functionality. For any distribution, the collective of programs that are chosen to be combined with the kernel make up a distro. At a low-level these could be things like, say, a firewall manager. These tools are known as "userland" tools, in contrast to "kernel space" which runs with the higher level privileges required to actually access the hardware.
(The Linux kernel provides some functionality called "netfilter" which can be configured to drop network traffic, or let it through, depending on various single rules. Assembling those rules and putting them in the right order, grouping them into logical sets of rules and further combining those is tedious. For that, any sane user will use a firewall manager. The Fedora family of distros use
firewalld, a systems engineer-oriented firewall program which requires you to be somewhat aware of what network interfaces you have (for example, 2 ethernet ports, 1 wireless receiver), and allows you to define rules ("zones") for each. Conversely, there's a different firewall tool called
ufw("uncomplicated firewall") which ships in the Ubuntu family of distros. This one is geared towards desktop users who simply want to say "block anything coming in on port 22", and be done. Different distributions cater in this way to different types of users.)
This is true of many different parts of the lower-level, from the tool used to manage auto-mounting USB drives, to the tool used to get the current time from the network (to sync the clock, particularly useful after being in sleep mode), and of course what package manager is used (Debian family: apt-get, Fedora family: yum/dnf, Arch family: pacman, Gentoo family: emerge, ...), etc.
A notable set of userland tools come in the form of the GNU Coreutils; for example the
ls command is a standalone program for listing folder contents. That being said, not all distros are GNU Coreutils based. Some use busybox instead (which also provides
grep and other commands), some use the bsdutils instead (which are BSD-implemented versions of the same tools - mainly for licensing reasons).
Any distro that is an officially-sanctioned "Ubuntu" (that is, Canonical has authorised the use of "Ubuntu" in the distro name) generally shares many of these common lower-level features - like Linux Mint or elementaryOS etc. Likewise, most systems descended from Fedora tend to keep the same lower-level pieces unchanged - just perhaps with different default configurations. Nothing of course stops any one distro from ripping out parts and replacing them, so this similarity is not a hard-and-fast rule, by far.
All the above considerations are traits of a fully functional text-driven operating system, the kind you'd put on a server or inside a microchip computer designed for controlling a servo - no GUI needed. If you stripped away the the UI of Xubuntu, Kubuntu, Lubuntu and Ubuntu MATE, you would be mostly faced with very similar systems.
Each of those operating systems (we call each of them an operating system in its own right, because of their distinct combination and configuration) uses a different graphical layer. Regular Ubuntu uses the GNOME Desktop Environment, Kubuntu uses KDE, and so-on.
A Desktop Environment provides several things:
- a display server (for drawing on the screen, most frequently X11, or Wayland, which is under heavy development but recently started maturing)
- a window manager (Mutter in MATE and GNOME, effectively responsible for drawing window bars etc and keeping the interface consistent)
- a file manager for clicking on files and folders
... and a collection of other tools for managing the lot, from virtual desktops to visual effects, panels to hold indicators, or the list of open windows, whether the desktop should show what icons, etc etc. Some distros try to be extremely light, and provide only a display server and window manager, and leave the rest to the user. Some Desktop Environments also include their own archive manager application (double-click on a ZIP and see its contents without unpacking it, for example), graphical text editors (gedit for GNOME, Kate for KDE, both very similar, but their own distinct selves), flagship music and video players... the list goes on.
Of note, KDE's file manager program is Dolphin; Xfce's one is called Thunar, Cinnamon's one is called "Nemo" (Cinnamon is a fork of GNOME, whose file manager is called "Nautilus", do you sea the maritime theme...?). Since you started out with Xubuntu, you should have Thunar. But since we installed Cinnamon alongside it, you should also have "Nemo." If you open your application menu and search on those names, you should find one of each. You can even run them both.
Additional to the Desktop Environment, a distro can choose what other applications to ship with out-of-the-box. Maybe they'll choose to ship Chrome, Chromium or Firefox as the default browser. Maybe they'll include the VLC music player, or perhaps something prettier like Clementine. Perhaps they'll include a more game-focused experience, or maybe a more Manga-focused one (including comic book viewers, comic creation suites and image editing, for exmaple, as well of course as appropriate theme packs...)
For example, Ubuntu Studio is a distro that uses Xfce - like Xubuntu - but also ships pre-installed with media creation software - Krita, GIMP, InkScape (graphical packages), Scribus (desktop publishing), Audacity, Ardour (digital audio tools), Kdenlive (video editing) and much more. The download is over 4GB I think...
Conversely, Netrunner uses KDE - like Kubuntu - but was originally created to be as light as possible for running on Netbooks; never used it myself, but heard good things.
At the start of this massive wad of text, I mentioned two other operating systems: Android and ChromeOS.
Android uses the Linux kernel to talk to the underlying hardware - but the rest of the system has pretty much nothing to do with your conventional desktop Linux distributions (for lack of a better word, I will describe the latter as "classic distros"). Things written for classic distros will quite probably not run on Android (CPU architecture differences aside), and vice-versa. Android also has its own distros - notable ones include Replicant, and LineageOS, and the parent project "Android Open Source Project" (AOSP) forms the basis of all three. The Android that ships on popular commercial devices ("Google Android") is a variant of AOSP. There's also EMUI, which is Huawei's adaptation of AOSP, and Samsung Galaxy OS which is AOSP for Samsung devices. Every manufacturer has to some extent modified and customised AOSP, but for the most part remain highly compatible - they all want the Play Store. Except for Amazon Fire (also AOSP, also custom, no Googple Play Store).
Another mobile operating system called Ubuntu Touch was under development by Canonical, but they abandoned the project, which is now fully community based, and known as UBPorts. It is based on Linux, but no AOSP programs would run on it. Classic distro programs may run on it, but would likely need some heavy tweaking to run correctly.
ChromeOS was originally based off of Gentoo I believe, but with lots of parts ripped out and replaced such that anything written with classic distros in mind might crash.
And so. That's pretty much what makes distro "families" and what makes distros within a family different. To say that "Xubuntu was not affected by the Dolphin bug" would be slightly incorrect - Xubuntu does not ship with Dolphin out of the box, but if you had gone out of your way to install Dolphin inside Xubuntu, it would have been affected.
Welcome to the family: