I've seen the copypasta God knows how many times but it all goes in one ear (eye?) and out the other. What exactly is GNU? If GNU is the OS why does everyone refer to it as Linux instead of GNU? What exactly is Linux? If Linux doesn't need GNU, do all the common distros use GNU? Or are there some that don't use GNU at all?
And how can this GNU/Linux phrase be compared to MacOS or Windows? Do they have equivalents?
I looked online but all the answers I saw were just gibberish to me (That's why I have the ELI5 prefix)
terminology - Why do some people refer to Linux as GNU/Linux? - Open Source Stack Exchange
Linux or GNU-Linux
GNU and Linux: Different or the same?
What is the difference between Unix, Linux, BSD and GNU? - Unix & Linux Stack Exchange
Videos
The GNU project was created to produce a free software alternative to Unix. They were able to produce most of the programs an operating system would provide, but their kernel, the GNU Hurd, was not stable enough to rely upon.
Linux is a kernel, the most base level of an operating system, and was created and published under the GNU GPL, a free license. It came to be adopted as the kernel of the GNU OS while the Hurd continued to be developed, but it remains an external project and is not officially part of GNU.
It is entirely reasonable to call the combination GNU/Linux as they are two distinct projects paired together. Strictly speaking, Linux by itself is not very useful without all the other software in GNU. But GNU is awkward to pronounce and is a nerdy acronym (but not nearly so nerdy as the double-recursive acronym of Hurd/Hird). Linux is easier to pronounce and is a more conventionally marketable name (being a short word with no previous meaning.)
For better or worse, Linux is now a metonym for the whole GNU/Linux OS and greater ecosystem. While it's not ideal that so many people only know the name "Linux" and not the GNU project which provides most of what they use, the reality is that language is incredibly hard to shift once it has settled, and I personally don't anticipate the situation ever changing. Let's educate people about the GNU OS, but let's not make a fuss if our grandparents (or grandchildren, depending on who you are) don't get the distinction.
Linux vs. GNU/Linux
Terminology and History-in-Brief
In common usage, the terms Linux and GNU/Linux IPA: /ɡəˈnuː slæʃ ˈlɪnəks/ † [though often said sans 'slash', the FSF recommendation is to pronounce it] refer to the same thing: the software distribution running on a computer that includes Linux, the operating-system kernel, consisting of low-level functionality and drivers that operate the essential devices in a computer and are necessary for its operation, as well as operating-system-specific functionality such as creation of processes and determining the scheduling of when those processes will run, among many other things.
The Linux kernel initially made functional, and was made functional by, the software tools that were created under the GNU project by the Free Software Foundation (FSF) specifically in order to drive development of software for an 'operating system' (loosely speaking) that would not be be bound by the restrictions of the then-dominant propriety system of the day, UNIX, which restricted those who wanted to do various things such as see the source code of, write modifications to, build other software upon, or share new code that was based upon, other code that was held under a proprietary license.
Richard Stallman, head of the Free Software Foundation, argues that there are many reasons to prefer the name GNU/Linux as the name of the operating system as a whole, although the debate has been long and, at times, contentious.
Current Linux-Based Software Distributions
Currently, Linux is combined with additional drivers, other low-level software, additional, higher-level support software, and innumerable other frameworks and applications; filling the gamut in licensing—from public domain to proprietary, much of it meeting the definition of 'open-source' put forth by the Open Source Initiative (OSI) which maintains a list license that are both free, and that do not have any conflicts with other free licenses, as there were some issues with incompatibilities in the past.
Depending on which of the many available distributions you choose (or you can even roll-your-own, obtaining all the source code, and building it all from scratch!) there can be upwards of hundreds, or even many thousands of additional bits of code as well, all including software from diverse sources.
For instance, most desktop systems will have X.org which you might call a 'kernel for the graphics subsystem' (i.e. it provides the basic functionality needed for any windowed desktop), and probably GTK+ (the GIMP toolkit) and I could go on... Then you'll have something on top like the K Desktop Environment (KDE), or perhaps Gnome, or Lightweight X11 Desktop Environment (LXDE), or one of many others.
It's going to be hard to run a windowed desktop system without any of this, and only a very small part of it is GNU software, and it's quite arguable that a lot of it still could be called part of the 'operating system' as it is used in common speaking.
What Should It Be Called
Hey, I don't know. I always just say: "I am running... Windows."
Seriously, though: let's talk about which term we are really talking about. Are we talking about how it is used in common speech? Or are we talking about the term as it is used in computer science?
Computer Science Term
[NOTE: I see there is debate about this issue; this is how I understood and learned the term]
Well, as a Computer Science Term, I don't think GNU has a case at all. Linux is the operating system. It provides all the basic functionality to operate the computer, and it does the process scheduling and provides resources to the applications. I don't know all the system internals of Linux so I can't say 100% that there is no overlap between what an operating system traditionally is thought of as doing and what the GNU tools do, but as far as I understand it, in general; well, GNU just doesn't do any of that.
Common Term
Speaking in common, everyday terms, you wouldn't argue that someone saying they run the 'Windows Operating System' means they are running the Windows NT kernel and a few subsystems, and that they aren't referring to Win32 and all the rest. Clearly most people don't make that distinction. So why would we make it here? And, I don't think I'm going to start calling my Linux OS choice 'GNU/Linux/X.org/GTK+/KDE' either. And, for that matter, if I were to tack on GNU, I would call it: Linux/GNU. But I wouldn't.
In fact, what I call my *n-x OS (I have quite a few VMs), is by its distribution, version, and kernel type; which would determine both where the hard work was done (picking the packages, dealing with incompatibilities, patching things, etc.) and the thing that determines the ABI (application binary interface for executables). In other words, it's enough information that I could replicate that environment sufficiently to find other applications that would run under it. Well, at least it would likely be enough; assuming I knew a bit more, like what type of machine it was running on.
GNU both was and is important and I don't want anyone to forget that. But as far as I am concerned, it doesn't belong in the title to my OS. But the thing is, I'm not arguing that it doesn't belong in yours. It's actually kind of irrelevant; just make sure whoever you are talking to understands you and in this case, you can use the two terms interchangeably in common speech.
That is a difficult question to answer.
First "Unix Like" or "*nix" usually means POSIX. All the systems you listed are POSIX systems. POSIX is a set of standards to implement.
Now for the harder questions.
GNU isn't really an OS. It's more of a set of rules or philosophies that govern free software, that at the same time gave birth to a bunch of tools while trying to create an OS. So GNU tools are basically open versions of tools that already existed but were redone to conform to principles of open software. GNU/Linux is a mesh of those tools and the Linux kernel to form a complete OS, but there are other "GNU"s. GNU/Hurd for example.
Unix and BSD are "older" implementations of POSIX that are various levels of "closed source". Unix is usually totally closed source, but there are as many flavors of Unix as there are Linux if not more. BSD is not usually considered "open" by some people but in truth it is a lot more open then anything else that existed. It's licensing also allowed for commercial use with far fewer restrictions as the more "open" licenses allowed.
Linux is the new comer. Strictly speaking it's "just a kernel", however, in general it's thought of as a full OS when combined with GNU Tools and a bunch of other things.
The main governing difference is ideals. Unix, Linux, and BSD have different ideals that they implement. They are all POSIX, and are all basically interchangeable. They do solve some of the same problems in different ways. So other than ideals and how they choose to implement POSIX standards, there is little difference.
For more info, I suggest you read a brief article on the creation of GNU, OSS, Linux, BSD, and UNIX. They will be slanted towards their individual ideas, but when you read through, you will get a good idea of the differences.
This Unix genealogy diagram clearly shows the history of Unix, BSD, GNU and Linux (from Wikimedia):
Linux is not an OS, it's a kernel. Linux by itself has no 'userland' environment (no apps, no commands, no ...etc...).
If you want to have a complete OS, you have to add an userland to your kernel. Historically, for Linux, it's GNU. All(?) Linux distributions are not 'real Linux' distributions. They are GNU/Linux (GNU + Linux) distributions.
BSD is a 'unix-like' complete OS, with it's own kernel and it's own userland (no linux kernel nor GNU).
GNU/Linux and *BSD family (FreeBSD, OpenBSD and NetBSD) are 'unix-like' OS, they behave like Unix.
Here is a comparison between (GNU)/Linux and *BSD : http://www.freebsd.org/doc/en/articles/explaining-bsd/comparing-bsd-and-linux.html
From the "What is GNU/Linux?" section of the Ubuntu Installation Guide, which is copied from the Debian GNU/Linux Installation Guide (with my added emphasis):
The most important part of an operating system is the kernel. In a GNU/Linux system, Linux is the kernel component. The rest of the system consists of other programs, many of which were written by or for the GNU Project. Because the Linux kernel alone does not form a working operating system, we prefer to use the term “GNU/Linux” to refer to systems that many people casually refer to as “Linux”.
The key word in the section above is "many", which does not mean "all". A "GNU/Linux" system may contain non-GNU components.
For users that want to be made aware of any non-GNU software on their Debian or Ubuntu system, there is the vrms package ("Virtual Richard M. Stallman"; untested by me personally though).
GNU refers to the programs that are in the GNU suite which most distributions, such as Ubuntu, include. For example, Ubuntu ships coreutils which is a GNU suite.
Having proprietary parts does not exclude the distribution from including GNU pieces.