Most people, even people who dabble with Linux, don't quite grasp the distinction between Linux, GNU/Linux, and the GNU toolchain, but the differences matter when you're thinking about certain kinds of software dependencies.
Linux and GNU
Linux follows from a chain of development that started with Unix. As such, much of Linux is designed like, and may even contain Unix code.
GNU, however, was intended by its creator, Richard Stallman, to be a completely free and independent operating system, using none of the same codebase or licensing norms as Unix or Linux. The two are separate projects. Sort of.
GNU/Linux
The challenge with the GNU project, though, is that its kernel — the core software that interacts with the hardware and coordinates all other applications — isn't yet ready for production. The GNU Hurd kernel, released in pre-production state in 2015, still isn't ready for prime time.
The solution? Linux. The Linux kernel, in the form of Linux-Libre, became part of the GNU project. Thus, GNU running the Linux kernel, or GNU/Linux.
The GNU Toolchain
A GNU distribution typically runs a Linux kernel, although GNU Hurd remains available for non-mission-critical testing. However, what separates a GNU distribution from any other Linux distribution is the integration of the GNU toolchain, a series of several hundred programs that are free and open source and support the development of new, free software.
Common elements of the GNU toolchain include GNU Make, the GNU C Library, the GNU Debugger, and the GNU build system.
Other GNU Packages
Applications, including graphical apps intended for end-user interaction, might be part of the GNU umbrella if they follow the philosophical guidelines established by Stallman. Common GNU-family applications include:
- TexInfo: A language and a program for displaying technical documentation.
- GNU Emacs: A document-processing system.
- GNOME: A desktop manager that provides the core look-and-feel for the graphical user interface.
- GNU Octave: A stats environment modeled after Matlab.
- GNU Health: An electronic health record for physicians and hospitals.
- GnuCash: A personal-finance system.