“Linux” or “Gnu/Linux”? Be specific.

Operating systems are made up of many components. These are sometimes made by different persons and groups, and when permitted, they be substituted for other implementations. This can result in a proliferation of systems sharing components and overall design — along with ambiguity in how we refer to those systems collectively.

This doesn't really happen for something like Windows. Microsoft wrote the kernel, the C library, the compiler, the shell, the GUI, and every other component of an OS which they collectively called "Windows." No one's allowed to take some component of it, like the NT kernel, and make a new OS around it that would be sort-of but not-quite the same as Microsoft Windows. As a result, there's no ambiguity in what systems are referred to as "Windows."

This is not the case for Unix-like OSs. When people talk about them, they often end up saying weird things like "Android is Linux, but it can't run Linux programs because it doesn't have stuff like X11 that you find on normal Unix systems like FreeBSD." You also end up with diagrams that look like this:

Complicated diagram showing the family tree of Unix-like operating systems.

What's going on?

Basically, the original Unix OS from Bell labs got copied a lot because it was sold with its source available (although not freely re-usable) and it was commonly used in Universities, which meant that a lot of people learned OS design with Unix as a reference. One such person was Linus Torvalds, who wrote an OS kernel called Linux.

A kernel could technically be considered an operating system on its own, in that it's what operates the hardware of a computer. Indeed, in Linus' original announcement of Linux, he said he was creating an operating system. However, most of the things we think of "operating systems" as doing, like running applications, require more than just a kernel, and a kernel was all the Linus' project produced.

The most common use of the Linux kernel is in Android devices, where it's combined with Bionic LibC, Toybox, a Korn shell, and a bunch of Java UI garbage. However, if someone asks "do you use Linux?" and you answer "yes, I run Android on my phone," the next question will begin with "yes, but..." because when people refer to complete systems as "Linux," they're usually talking about systems combining the Linux kernel with glibc, the GNU coreutils, and a bunch of traditional Unix userspace stuff like the X11 display system. "Linux" is used as a synechdoche in reference to such systems because they were the first systems that used Linux, and Linux was a major, low-level part of them. There's nothing fundamentally wrong with that, but it's confusing now that Linux is also used in other types of systems.

Futhermore, the free software that Linux was combined with only constituted a complete operating system because the GNU project had already been working for 7 years to produce a free Unix clone. They replaced the components of proprietary Unix on-by-one with free ones, which they either wrote themselves, which were already already available as free software, or which they convinced the authors to relicense as such. Linux was one such component – and the last one necessary to make a complete OS – so some people call the resulting system "GNU/Linux".

In my view, both "Linux" and "GNU/Linux" are legitimate names for complete systems, but they're both often used inappropriately. Usually when people say one or the other, they're really gesturing to a bunch of related systems that are not actually that well described as a whole by either term.

Consider the following. Debian and Android both use the Linux kernel, but have completely different userlands. FreeBSD has an X11 GUI like Debian, but the kernel and low-level userland are different. FreeBSD and MacOS are both derived from BSD and share many components, but the kernels are different, and MacOS has a completely different, proprietary GUI. Alpine Linux shares the same kernel as Debian and uses a similar userland, but it uses alternatives to all the GNU software such that it's largely source-compatible but not binary-compatible with Debian, whereas most other distros like Fedora, OpenSUSE, Arch, etc. are binary-compatible with each other.

As a result, when you say something about some subset of the operating systems above, you need to pick your words carefully to avoid including systems for which your statement is not actually true, or excluding systems which your statement is true but which you don't acknowledge.

The following dialgue uses all of the above names correctly.

—What OS are you using?
—What's that?
—It's a GNU/Linux distribution, like Fedora.
—So it's a Unix-like system?
—Got it. What made you choose it instead of a BSD?
—Linux has more drivers available.
—Doesn't Windows have even more?
—Yes, but I prefer a free software OS for privacy reasons.
—What made you concerned about that?
—I read about it on the FSF's website.
—What's the FSF?
—It's the organization that made GNU.
—I thought that was Linus Torvalds?
—No, he made a kernel called Linux, which was combined with GNU to make the GNU/Linux operating system.
—I thought Linux was an operating system?
—It is, but on its own it's only really useful for embedded systems. For instance, my toothbrush runs Linux. But for most purposes you need more than just Linux.