Linux, or GNU/Linux ?

The community already spoke about this numerous times over the years. This question even has a wikipedia page. I won't pretend to have the answer, but I do have an opinion about it 😄

A kernel is an interface between programs and deeper subsystems (controllers, chipsets..) that makes interactions with higher interfaces possible, like a word processor or a web browser. A kernel makes any interaction with subsystems in transparent and agnostic fashion for every higher pieces of a system.

That's kind of an over simplification, if you want to have a better picture, check brendangregg.com.

This abstraction made possible by the kernel, allow anything on top of it to have interactions with various pieces of hardware bellow it; without having to interact with lower, more specific subsystems: An higher lever application rarely use direct acces to your CPU, nor have direct access to the firmware in your hard drive. Kernels have drivers. The more drivers a kernel has, the more compatibility you have with different pieces of hardware (sort of).

I don't make manual calls to a kernel to start my computer, get a file or watch a youtube video. To do that, I'm using softwares that will use some layers of abstractions to get to the kernel and ask for compute ressources, storage space, and so on.. Most of these softwares also use other softwares to do their jobs. Those other softwares could also easily use other ones too..

What is GNU

A Gnu is A large antelope of the genus Connochaetes, native to Africa having curved horns that has nothing to do with computers. GNU on the other end, is a large collection of tools that works on top of the Linux kernel, allowing interactions between a user and the kernel. For instance, most implementation of ls on Linux distributions is part of the GNU toolset that is provided by the distribution you use. A lot of higher level softwares uses GNU tools under the hood to make a Linux distribution usable for a end-user.

Story time

GNU tools were a thing before Linux existed. When the Linux kernel was built, those tools were available for it to be used with. This made the GNU toolset one of the first “extra” set of tools on top of the Linux kernel, and made Linux usable. MCC Interim Linux, at the time was a GNU/Linux distribution.

One of the first more broadly known Linux distribution Debian was also a GNU/Linux distribution. Almost all extra tools included in the first version of Debian were from the GNU toolset.

After Mcc Interim Linux, Debian SLS or Slakware, came Red-Hat, Slakware, Knoppix, Ubuntu and a lot of others. From a couple of tools with a kernel, some GNU tools, and a couple more extra stuff; Linux distributions we have now includes way much more that just a kernel and the GNU tools. Using Ubuntu today mean that you have Gnome (and all its applications included), Firefox, Libreoffice, Wayland, Systemd, etc.

But we don't name Ubuntu, a Gnome-Firefox-Libreoffice-Wayland-Systemd-and-so-on-GNU/Linux distribution.

In fact, Debian promote is distribution as an operating system and a distribution of free software, Ubuntu is an open source software operating system. Red-hat is The world's leading provider of open source solutions. None of them are explicitly saying they are GNU, Linux, or GNU/Linux distributions. In the end, this little debate doesn't have much of an impact.

Funny thing, if you try to check what operatin system you use with Ubuntu with uname --operating-system it will tell you that's a GNU/Linux one. Note : uname is part of the GNU coreutils set.. 😏

But still, if we're trying to define and choose between “Linux” or “GNU/Linux”, there is a thing missing.

Alpine Linux

Say we agree on calling every ditribution with a Linux kernel a GNU/Linux distribution. What about Distribution of linux that does not uses GNU tools ? Alpine linux is based on musl libc and busybox. Busybox here being a drop in replacement for the GNU toolset we spoke about earlier.

Alpine Linux says they are general purpose Linux distribution. Alpine Linux also says that they are smaller and more resource efficient than traditional GNU/Linux distributions.

It's Linux

It's fairly simple for me after this to just tell about what's kind of obvious for me, regarding this so called controversy. Technicaly speaking, today's distributions of Linux are so much more than the kernel and the GNU tools, even if 99% of the time, they are at the core of most Linux Distributions. this explain why they doesn't speak much about being neither Linux nor GNU/Linux distributions.

Another thing to keep in mind that is not under direct control, if we are just talking about the naming itself, the language works not toward precision, exhaustivity or accuracy but toward simplicity and comprehensiveness. We are using Linux distributions.

The General Public Licence

That being said, GNU/Linux still means something :

  • Busybox is at the core of Alpine Linux. It's a drop in replacement for the GNU tools that is commonly used on almost all other Linux distributions. But Busybox is also under the GNU General Public Licence.
  • The General Public Licence or GPL, is part of the GNU project. It's a licence commonly used over the opensource community to gives rights (mostly for programs) to run, study, share and modify the software. Any derivative works took from a program under the GPL shall have the same GPL terms.
  • The Linux kernel is under the General Public Licence too.

It makes more sens then to talk about a GNU/Linux distribution, not because of what's included in a distribution, but because talking about a GNU/Linux makes a policital statment about what represent the ecosystem of Linux distributions and the community around them.

Avatar
Julien Pericat
Linux Sysadmin, SysOps & DevOps friendly

Happily automating and putting things in containers.

Related