Moved it to the end, to keep the focus on the solution.
Solution
GNU is a desktop OS that was never completed. Linux is a desktop OS that was never completed.
GNU/Linux is a hybrid OS.
Musl, etc. are libraries that were never OSes.
So Alpine would be a Community/Linux OS.
Debian would be a Community/GNU/Linux OS.
FreeBSD would be a Community/BSD OS.
Ubuntu would be an Enterprise Community/GNU/Linux OS.
I was thinking ontologically to resolve this problem. It is often confusing to explain to ordinary people why Linux has so and so differences and so and so commonalities, and then the community gets toxic once you get to whether it's GNU or Linux.
So I think this is a good solution that solves the argument of calling it systemd/Freedesktop/KDE/LightDM/GNU/Linux or the other party that says it's either GNU or Linux alone.
Why can't you include GNU in the Community?
Because GNU was an independent OS, and the project did a lot for software freedom, and it was even pivotal to the success of Linux, yet the community does not honour their wish to mention their names, because of aesthetic problems. GNU has never self-identified as a component collection like Freedesktop.
The problem (for those who are unaware of it)
Not everyone may be aware of this, but from the time GNU and Linux based hybrid operating systems became a thing, there was a debate about what they should be called. An OS has a kernel and the userland. Both GNU and Linux were independent operating systems, both of which were never completed.
GNU was a project by FSF under Richard M. Stallman to replace the proprietary UNIX OS. Linux was a hobbyist project by Linux Torvalds to make an OS that would run on the Intel 80386 CPU, while BSD/386 was facing a lawsuit from AT&T for releasing proprietary UNIX source code. GNU was planning to make a microkernel based OS, and it was planning to develop the kernel slowly, while Linus started Linux from the kernel side, with a monolithic architecture.
Since Linux was free software and could run directly on the new hardware, it gained the support of the hacker community, who added patches to the GNU userland to make it work with Linux. But when Linux finally became an OS with the help of GNU, the hacker community said they only care about Linux, not the GNU programs, and gave no recognition to GNU.
Because of this, Stallman asked the distributions to be called GNU/Linux, and that sparked flame wars because of how it is bad to pronounce, and how a distribution has many components beyond just GNU, and that therefore the kernel that runs on the hardware is what should describe the OS, and further several ad-hominem attacks on the personal life and behaviour of Richard Stallman.
Eventually, the name Linux caught on, but sympathizers of GNU are requested to call it GNU/Linux. This continues to be an unresolved, but sidelined dispute that seems unfair to GNU, especially considering most "Linux programs" are actually dependent on GNU GLIBC, and won't run on the other Musl LIBC based systems. Anytime someone mentions it, because there is no easy solution to it, it turns into a flame war.
Why not also recognize systemd, or musl, or kde or gnome or any of the other millions of non GNU packages that are needed to make up a complete OS.
Fuck if I am going to rattle off all my installed packages every time I want to mention what OS I am running. Linux is good enough. People know what you mean when you say it. And these days GNU makes up less and less of the core packages that most distros run anymore.
Also the copy pasta that this all stems from explicitly calls out eliminating nonfree programs which most popular distros do not do these days:
Making a free GNU/Linux distribution is not just a matter of eliminating various nonfree programs. Nowadays, the usual version of Linux contains nonfree programs too. These programs are intended to be loaded into I/O devices when the system starts, and they are included, as long series of numbers, in the “source code” of Linux. Thus, maintaining free GNU/Linux distributions now entails maintaining a free version of Linux too.
The name really isn't important. The name Linux is settled and people who use Linux eventually learn about GNU. In the end, I can use GNU components on Linux, BSD, MacOS and even Windows. So it doesn't really matter for GNU, GNU is everywhere. That's a real triumph, whether people know about it or not. They did it for humanity, not for their names.
GNU / Linux is an overstep. It is inaccurate and misleading.
“Linux” as the majority of people that know the term use it refers to a family of operating system “distributions” that share a large number of common traits ( including the Linux kernel ).
GNU / Linux is a poor name for the majority of these distributions. It would be an ok name for a specific distribution from the Free Software Foundation.
Not all Linux distributions use Glibc. You mentioned Alpine Linux. There are others. This does not make Alpine less of a Linux. ( this is a tangent but saying “most” software does not work on MUSL is wildly inaccurate ).
Not all Linux distributions use the GNU utils. Check out Chimera Linux sometime. If I sat a Linux user down at Chimera, they would be perfectly at home. They can of course even install Flatpaks or use Docker or Podman. Because it is Linux even with no GNU.
Not all distros use GCC. I have listed one already.
Saying Linux was “never completed” is wildly inaccurate. Linux has been completed in many different ways and it continues to expand and evolve.
Even on the most popular Linux distros, GNU represents only a tiny fraction of the software installed. In most distro repos, the most popular license is MIT. So even if we pretend that GPL means GNU ( itself a totally inaccurate overreach ) a GNU label for the entire system makes no sense.
As above, there is more MIT licensed software in most distros. Should it be MIT / Linux? Red Hat probably contributes more code than anybody ( including to Glibc and GCC ). Should all Linux be Red Hat / Linux? Both those are bonkers but, fair attribution wise, they make more sense than GNU / Linux does.
Yes, Richard Stallman has asked all the Linux distros to call themselves GNU. He should not have. He should stop. There is no problem to solve other than he has not stopped asking.
GNU is a massively important project historically. The GPL is a vital piece do the Free Software landscape. These need to be celebrated and acknowledged. This is not the way to do it.
But let’s take another look at history. First, of course Linux would likely not have caught such early momentum without GNU utils and certainly not with GCC. Linux had its own libc but Glibc was better. Sure.
Did you know that the author of GNU HURD originally wanted to use the BSD kernel? That would have been an interesting alternate history. GNU may have truly emerged as an OS alternative. It could have filled the space now occupied by Linux. We would all be using the GNU OS.
In 1992, GNU / Linux may have been a decent description of what Linux was at the time ( though that is a bit of a slap to XFree86 ).
FreeBSD was a complete OS before anybody ( anybody free ). However, they got caught in a lawsuit around whether they were allowed to be free. Linux appeared in the space left by BSD and, it was while BSD was under a legal cloud that Linux filled its sails with wind. By the time that was settled, BSD was way behind. Not as far behind as GNU without Linux would have been though.
If there had been no Linux kernel, the BSD lawsuit would have ended and the world would have had a free UNIX while GNU was still a collection of utilities with no kernel.
If Linux had not appeared and FreeBSD had taken off, few of us would probably ever have heard of the GNU Project. Many GNU fans totally underestimate how important Linux has been to them.
Finally, how is GNU a desktop OS ( especially in 2024 )?
Here is the full list of GNJ projects. “All GNU packages” straight from the horses mouth:
First, many people will be surprised how short that list is. My distro offers 70,000 packages. Fewer than 500 are GNU. That is what I was saying above.
But where is the display server? Where is the sound server? Where is the desktop environment? How may GUI applications are there?
You can say that that GNU kernel is “unfinished”. If GNU still wants to be a desktop, it would be better described as “unstarted”.
It is not 1992 anymore. GNU is not a desktop OS.
Of course a GNU desktop could use X11, Wayland, and Mesa. Those are all Free Software but they are are not GNU. In fact, all those are MIT licensed and not even GPL.
None of the desktop environments are GNU. There is GNUstep but its homepage says explicitly that it is “not a desktop”.
Anyway, GNU is a massively important project. Let’s educate people on why it did and does matter. But let’s not destroy its legacy and goodwill by abusing its name and misrepresent its role today.
LiGNUx is unpronounceable. It's kind of like xbwhfr.
Linux is pronounceable, but the recognition of one of the founders who chose to market it while the other who fought for freedom gets unrecognised is unfair, and people can notice that.
I mentioned *BSD because I'm solving this problem from an ontological level to address systems. If someone categorizes FreeBSD as a BSD OS vs BSD fork, there's still a small debate that can arise from it. Calling it a Community/BSD OS gives attribution to the core team as well as the original BSD team. And all of it remains easily pronounceable as well.
You wouldn't call it GNU slash Linux, but a "community developed GNU and Linux based OS" and just Linux for referring to the Kernel. Most apps for example run only on GLIBC, and therefore calling them Linux apps doesn't make it inclusive of Musl LIBC based systems.
I don't know if grouping disparate projects under the "community" label has any worthwhile benefit. Given the label is meant to classify related operating systems, the label should provide an accurate description of the basis of the system. A simpler solution would be to just say GNU/Linux is a subcategory of Linux (and maybe even sub-sub-categorize by package manager or init system or whatever makes the most sense). Similarly, I think Android and its derivatives are worthy of being its own classification of Linux operating system (as long as you don't try to claim "it's not real Linux" or whatever).
With regards to software compatibility, I think it's rather the other way around - software written for "Linux" usually works on any POSIX operating system, and sometimes even Windows. Unless you're talking about binary compatibility, which is meaningless in the Linux space anyway.
software written for “Linux” usually works on any POSIX operating system, and sometimes even Windows. Unless you’re talking about binary compatibility, which is meaningless in the Linux space anyway.
In practice, as a person who uses Musl LIBC and the Runit init system, most "Linux programs" don't even work on it, often even if I try to build it from source because of their dependencies on GLIBC. GLIBC is a very hard dependency that most people overlook when writing software.
And many programs even have a hard dependency on systemd, to a lesser extent. Even that too only works on systems with GLIBC, and cannot be used with any other LIBC.
Given the label is meant to classify related operating systems, the label should provide an accurate description of the basis of the system.
Which is one of the reasons why specified GNU/Linux separately from just Linux for Alpine, instead of calling it Musl/Linux.
If a software is written for just Linux, it will work on either system. But if it is written for GLIBC, it work work on Musl LIBC based systems.
Programs linked dynamically with Musl LIBC won't work on GLIBC based systems too, but considering the trend of everyone using GLIBC, those who build for Musl LIBC would state it explicitly, compared to programs released for GLIBC, which ambiguously only say that it is built for Linux.
Just curious: how would you classify Chrome OS? As Community/Linux or Community/Linux/Chrome (to recognise how much heavy lifting the browser is doing). And would you want to call Google's additions 'Community' or something else?
Chrome OS would be a Proprietary Community/Linux OS, and Chromium OS would be a Community/Linux OS. Chromium is a community project that's added to the Gentoo base.
By Community, I'm referring to the free community projects, not just any contributions.
Windows for example is an Proprietary NT OS, but all Windows are NT based, so we can just skip the NT part.
If an historical timeline uses this labeling system it can't omit the NT part though. Windows NiceTry came out in 1993 but also long after that MS had MS-DOS based editions (up until Windows Me iirc)
I was thinking ontologically to resolve this problem. It is often confusing to explain to ordinary people why Linux has so and so differences and so and so commonalities, and then the community gets toxic once you get to whether it's GNU or Linux.
This "problem" only exists for kernel and distro devs. The ordinary person doesn't care one iota about how it's classified or by what name it's called.
GNU exists, but they lost the naming war, similar to Kleenex and Velcro. They can insist all they want to call it GNU/Linux (or whatever), but few will bother to join them, because it's not as easy to write or say as just "Linux." Linux is no longer just for hobbyist computer nerds, and average users will never care about making the brand more complicated.
Nerds like us can argue until we are blue in the face, 99% of the public will continue to call it Linux. GNU/Linux is a good way to prompt those not in the know to learn some of the history while still being understandable as Linux, that is the current and best solution, I do not think it is unresolved.