59

In some cases I have noticed that some people say GNU/Linux instead of just Linux. Why is that so? Do both terms mean the same or is there a subtle difference?

73

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.

  • 21
    It's worth noting that there are a number of systems which are Linux or "Linux-based" that are largely or completely non-GNU, including Android, OpenWRT, Alpine Linux, etc. – R.. Jul 11 '15 at 0:34
  • It should be added that using 'GNU/Linux' may help in people remembering all that the GNU stands for, which encompasses lots of things and brought about a lot of things. Linux wouldn't exist at all without the GNU movement, which gave out many things (free software such as a C compiler, many unix utilities, etc). Every programmers (and more?) should read, imo, at least: gnu.org/home.en.html (and some of its links), and to see the difference with their view and what is now called 'open-source', see gnu.org/philosophy/open-source-misses-the-point.en.html. – Olivier Dulac Aug 30 '17 at 11:44
  • I would even say that Linux is a "generic trademark" these days - *BSD systems being called as Linux too by some. – data Jul 10 '18 at 9:58
23

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.

  • 2
    Interesting point about how much of GNU modern GUI users would actually use. File system commands? What else? – curiousdannii Jul 10 '15 at 22:38
  • 1
    Ah, GNOME is also part of GNU, which increases the amount of GNU stuff I use, but if you used another desktop then there would be less. Of course I do understand the huge important of GCC! – curiousdannii Jul 10 '15 at 22:53
  • 9
    The canonical term is “GNU/X11/Apache/Linux/TeX/Perl/Python/FreeCiv”. – Gilles 'SO- stop being evil' Jul 10 '15 at 23:05
  • 3
    You seem to be saying that "as a Computer Science Term", operating system refers specifically to the kernel; but this is certainly not the case. (If it were, we wouldn't need the term kernel.) IME, even defenders of using the name Linux to refer to the whole OS acknowledge that the OS consists of more than just the Linux kernel (but feel that the synecdoche is acceptable). You say that the kernel "provides all the basic functionality to operate the computer"; but it provides neither compiler nor shell, so this seems a bit dubious . . . – ruakh Jul 12 '15 at 7:38
  • 5
    @curiousdannii All modern LInux systems are built on GUI libraries which are in turn built on Glibc and Glib (Part of the GNU project). Most programs assume presence of UNIX utilities like cp, mv which are typically provided by GNU Coreutils. Also, nearly all software is still compiled with GCC (the GNU compiler collection). If you build a Linux system without any GNU stuff included, then ironically most people probably wouldn't consider it "Linux" enough at that point. – Brandin Sep 23 '15 at 8:12
16

It's to distinguish GNU/Linux from other operating environments built on Linux. Each of the following environments combines Linux proper, which is a kernel, with a different "userland", or set of userspace programs and libraries. In rough order of appearance:

  • GNU/Linux is a fairly complete clone of the functionality of the UNIX system. Desktop and server apps designed for UNIX are more likely to require a full-featured C library and core utilities, and the popular choice for this is GNU, maintained by the Free Software Foundation. On desktop machines, it also generally involves installing X.Org X11.
  • Embedded Linux is a lightweight userland seen in appliances such as home network gateways, televisions, and the like. It typically uses a lightweight C library, such as Newlib or uClibc, and commonly uses BusyBox as its shell and core utilities.
  • Android is a userland commonly seen on mobile phones and tablet computers. It uses Google Bionic as the C library. The GNU/Linux FAQ, published by FSF, uses Android as an example of a Linux-based environment that is not GNU/Linux.

These are not hard distinctions. Once Android was released, some embedded Linux enviroments began to use Bionic, as Chris Stratton mentioned in an answer to "Alternative to Newlib?". It's also possible to take bits and pieces from GNU, such as GCC and Binutils, and use them atop an Android system, embedded system, or even a system that doesn't use Linux at all. DJGPP and MinGW are notable distributions of GCC for Microsoft operating systems. Many of us are also familiar with Cygwin, a UNIX-compatibility layer for Windows that is based on GNU. Its name originally stood for "Cygnus GNU/Windows". In Windows 10, Microsoft introduced its own port of GNU to Windows, (somewhat misleadingly) called Windows Subsystem for Linux. And for a while, Debian was even building a GNU system atop the kernel of FreeBSD, resulting in "Debian GNU/kFreeBSD".

FSF declines to clarify how much of the GNU system qualifies an operating environment to take the "GNU/" label. But as a rule of thumb, I have applied the "GNU/" label to systems that contain GNU Core Utilities plus two of Bash, GNU Emacs, GCC, or a shared GNU C Library (glibc).

  • So you now talk about Gnu/Windows 10 ? ;) – MSalters May 8 '17 at 0:15
  • 1
    @MSalters If Cygwin is installed, then certainly. – Damian Yerrick May 8 '17 at 13:39
  • The Windows Subsystem for Linux supports the Ubuntu userland. As in, the exact same /bin/bash and other Gnu tools, and it's updated by the same apt-get from a single repository. It's literally Gnu/Linux, but with the Linux kernel replaced by Windows. – MSalters May 8 '17 at 14:01
  • 1
    Hmm... GNU/Windows is much easier to say than "The Windows subsystem for Linux"... – RubberDuck May 16 '17 at 2:03
7

They are different terms for the same thing, used by two different groups of people. Use of the GNU/Linux name is done at the explicit request of Richard Stallman and the GNU Project. You can read the full rationale on the GNU Project's website, but it seems to boil down to this:

Linux is the kernel: the program in the system that allocates the machine's resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux.

I think it's fair to say that opinion is divided about the merits of this. I personally try to use the GNU/Linux term when I can, but I understand that not everyone sees it as desirable, or even sensible.

  • 4
    "They are two different terms for the same thing." No, Linux is a kernel, it is not an OS. GNU is a project to build an OS. – user490 Jul 10 '15 at 10:50
  • 7
    Eric, I agree with you; I hope I've made that clear above. But not everyone identifies with this fight, and some of those who don't are decent free-software-using people. When people who don't use the term GNU/Linux use the term Linux, in my experience they are almost always referring to the entire OS; they use the term Linux kernel to refer to the kernel. If this question is to have any meaning, it has to speak to those who don't already know the answer, and as such it might have to at least acknowledge the existence of the language they use. – MadHatter supports Monica Jul 10 '15 at 11:32
  • 4
    @EricGärtner From a linguist's perspective use is meaning ;) – curiousdannii Jul 10 '15 at 12:11
  • 3
    @EricGärtner you use them differently. I use them differently. Not everyone else does. They aren't wrong - they also have two different terms for the OS and the kernel. It is unfortunate that their term for the OS is your and my term for the kernel - but that doesn't make them wrong. You may wish to persuade them to change their usage - I would certainly wish to do so - but starting off by telling people they're wrong isn't always the best way to change their minds. Note also that the quote you attribute to me above was no longer in my article at the time you quoted it. – MadHatter supports Monica Jul 10 '15 at 12:30
  • 2
    I write They are different terms for the same thing, used by two different groups of people, and I'm not sure what there is in that to object to. The terms are different; on a simple string basis, GNU/Linux != Linux. They are used by two different groups of people (who we might characterise as those who take the GNU Project's viewpoint and those who don't) to refer to the same thing (the work which combines the kernel released by Linus Torvalds and others with the OS utilities released by the GNU Project and others). No word in my quoted sentence is inaccurate. – MadHatter supports Monica Jul 10 '15 at 12:43
5

GNU/Linux is the name of an OS distribution that uses Linux as the kernel.

Just using a kernel will not get you anywhere, you need something called the "userland": an editor, a filesystem, tools of all kinds.

There are different variants of the GNU system that use different kernels. One is GNU/Hurd that uses Hurd as the kernel.

There is an extensive FAQ about this question.

  • 3
    Well, "Linux" is certainly the kernel, I've never heard anyone say "Linux" and by that refer to the kernel. When people say "Linux", they're referring to what they actually use, i.e. the same thing as people aware of the FSF's contribution call "GNU/Linux". – Free Radical Jul 10 '15 at 11:09
  • That is common usage. But the question is "Why do people talk like this and what is behind it?" – user490 Jul 10 '15 at 11:10
  • @FreeRadical "Linux is an OS" is plain wrong in a CS class, if you mean "technically correct". Being knowledgeable about the topic goes beyond the FSF. Instead, if you mean "what people commonly refer to", then Linux is correct assuming that 1. the context does not care about the userspace (e.g. 99% users; e.g. when talking about /proc, /sys, etc) 2. or the context implies a specific userspace (e.g. RH and other distros' manuals refer to "Linux"). The marketing name is fine as long as you do not identify "the only correct form" as CS-unaware speak of those circles that you personally attend. – ignis Jul 10 '15 at 18:37
  • 2
    @shelleybutterfly OS = kernel + userspace. – ignis Jul 11 '15 at 7:23
  • 1
    yes, I realize that gnu.org takes the position that it's GNU/Linux because (to them) every part comprises "the OS"', but there's so much more to Linux than gnu.org stuff+kernel. Linux/GNU/Gnome/X11/[1,000 other things]? with GNU/Hurd, GNU makes sense, it's from GNU. but not all GPL code is gnu.org, not all my F/LOSS is GPL, and even if I accepted that it's all OS why call the OS by it's license? maybe kernel/shell: "Linux/Gnome"? I do say GNU/Linux half the time: but, I can teach/respect the contribution of GNU/GPL and still call it Linux. I don't call it "All Rights Reserved/Windows"... – shelleybutterfly Dec 16 '15 at 23:45
2

It's easiest to understand by looking at other libc/kernel pairs.

For example, I know that there are people who run:

  • gnu/linux
  • musl/linux
  • gnu/kfreebsd
1

The name of operating system may be authored as the group or author likes it. Some have created Red Hat Linux, some SuSe, and there are hundreds of such names of operating system.

The original name of the operating system that is today often by mistake called "Linux" is GNU: http://www.gnu.org/ - and GNU compiler was used to compile Linux. GNU is the full operating system.

When based on Linux kernel, one may refer to it GNU/Linux. When based on NetBSD kernel, one may refer to it GNU/NetBSD. But there is freedom to name it what you want. One shall never forget that Linux kernel was NOT intended to be free software. The author of GNU operating system is Dr. Richard Stallman.

Using the Kernel alone, regardless if Linux or any other, does not make you "operate" with your computer. Thus Linux as kernel is certainly not "operating system".

When he was making speech in Finland, Mr. Linus Torvalds, at that time, understood the free software philosophy and has decided to license the Linux kernel by the GNU GPL software license.

From there on, Linux kernel became part of the GNU operating system.

Some people don't have father or mother, and some don't want to think of the father of the mother. There may be many reasons for that. But the fact is that even such people have fathers and mothers.

That is the analogy to the naming of the operating system as "Linux" by the kernel. It does not give proper credit to the original operating system, though there is freedom for everybody to call it as they want. See example of GNU system distribution: http://www.gnu.org/software/guix/

Understanding the origins of GNU operating system, whatever distribution it may be, helps and encourages people to program, study the source code, respect the authors and enjoy the freedom.

1

The GNU project was started in the 80ies to create a "free Unix clone" under the name GNU (acronym of "GNU is No Unix"). A lot of userland utilities got cloned, a capable C compiler and C library were written. They adopted a hodgepodge of freely available pieces as part of the "GNU system", like TeX (base of their texinfo documentation system). But the kernel still is nowhere in sight. Note that perfectly capable Unix userland is part of the BSD systems.

Linus Torvalds started Linux "to learn how to program my i386" (dissatisfied with Minix, a very simple system for 8088 for classroom use, for which patches were distributed separately due to licensing restrictions). He soon adopted GPLv2 as the license which most closely described what he wanted. Many GNU programs where ported early (they had been used on many different Unix systems for quite some time, easing this job). A variety of organizations picked up Linux (the kernel), some GNU packages, lots of homebrew code and created a variety of distributions. They also include huge amounts of code from other sources, like the X Windows system for graphics, complete languages like Perl and Python, graphics environments like KDE and XFCE. In any Linux distribution the GNU tools form the traditional Unix command line interface for users, almost all the system administration commands are Linux own, and (except for the Gnome environment, which associated itself with GNU) the graphical environments are not GNU. Each distribution has it's own idiosyncratic installation system and management tools, none part of GNU. A Linux distribution is overwhelmingly not GNU. Just singling out one of the very many contributors (even an important one) is hypocritical.

If you look at the history, the GNU tools were often used as replacements of the clunky tools that came with proprietary Unix systems in university settings, and very little else. The compiler was managed mostly by a company specializing in development toolchains for embedded systems, and was quite successful in it's niche. It was even adopted as the official C compiler in Data General's DG-UX. Other than that, GNU was marginal. When the lawsuit of USG vs BSDi rolled along around 1994, the Unix mostly used was some form of BSD. That came to a screeching halt, the formerly freely used code became tainted by possible licensing hassles. Linux was just becoming usable, and Linux distributions started to fill the void for hobbyists and soon "for real use". When the dust settled with a resounding defeat for AT&T's landgrab, Linux had taken over. I.e., much of GNU's success was Linux' accomplishment (and sheer dumb luck), not the other way around. If it hadn't been for USL vs BSDi and Linux, nobody would know what GNU is.

-1
+50

In the FAQ of gnu.org they provide the following:

http://www.gnu.org/gnu/gnu-linux-faq.en.html#why

Why do you call it GNU/Linux and not Linux? (#why) Most operating system distributions based on Linux as kernel are basically modified versions of the GNU operating system. We began developing GNU in 1984, years before Linus Torvalds started to write his kernel. Our goal was to develop a complete free operating system. Of course, we did not develop all the parts ourselves—but we led the way. We developed most of the central components, forming the largest single contribution to the whole system. The basic vision was ours too. In fairness, we ought to get at least equal mention.

See Linux and the GNU System and GNU Users Who Have Never Heard of GNU for more explanation, and The GNU Project for the history.

Why is the name important? (#whycare) Although the developers of Linux, the kernel, are contributing to the free software community, many of them do not care about freedom. People who think the whole system is Linux tend to get confused and assign to those developers a role in the history of our community which they did not actually play. Then they give inordinate weight to those developers' views. Calling the system GNU/Linux recognizes the role that our idealism played in building our community, and helps the public recognize the practical importance of these ideals.

How did it come about that most people call the system “Linux”? (#howerror) Calling the system “Linux” is a confusion that has spread faster than the corrective information. The people who combined Linux with the GNU system were not aware that that's what their activity amounted to. They focused their attention on the piece that was Linux and did not realize that more of the combination was GNU. They started calling it “Linux” even though that name did not fit what they had. It took a few years for us to realize what a problem this was and ask people to correct the practice. By that time, the confusion had a big head start.

Most of the people who call the system “Linux” have never heard why that's not the right thing. They saw others using that name and assume it must be right. The name “Linux” also spreads a false picture of the system's origin, because people tend to suppose that the system's history was such as to fit that name. For instance, they often believe its development was started by Linus Torvalds in 1991. This false picture tends to reinforce the idea that the system should be called “Linux”.

Many of the questions in this file represent people's attempts to justify the name they are accustomed to using.

Should we always say “GNU/Linux” instead of “Linux”? (#always) Not always—only when you're talking about the whole system. When you're referring specifically to the kernel, you should call it “Linux”, the name its developer chose. When people call the whole system “Linux”, as a consequence they call the whole system by the same name as the kernel. This causes many kinds of confusion, because only experts can tell whether a statement is about the kernel or the whole system. By calling the whole system “GNU/Linux”, and calling the kernel “Linux”, you avoid the ambiguity.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.