HACKER Q&A
📣 andrewstuart

Does GNU still contribute anything meaningful to a Linux OS?


Stallman always wanted Linux called Gnu/Linux. I understand this is because Linux uses GNU command line utilities.

But these days does Gnu play any real role in Linux?

I could certainly understand the name being Linux/systemd rather than Gnu/Linux because for many distros systemd plays such a large role it can almost be said to be much of the operating system.

Systemd plays a demonstrably critical role in Linux, whereas….. what does Gnu do? What is the Gnu part of Gnu/Linux?


  👤 nullindividual Accepted Answer ✓
GNU still plays a role in the GNU portion of the GNU/Linux equation. That is, user-space tooling.

If you want to see what GNU has been up to, including a recent release of binutils, you can check their blog [0].

[0] https://www.gnu.org/software/recent-releases.html


👤 retrac
The userland is quite GNU. Think bash, gawk and coreutils (ls, etc.) as well as the libraries the userland depends on -- including the C and C++ standard libraries, pthreads, readline, etc.

Very little of it is irreplaceable these days. You could use a different shell. You can even run a BSD userland under a Linux kernel, in theory. The Linux kernel itself is replaceable with e.g. the open sourced Solaris kernel. There's many alternatives to just about any major UNIX component these days. But the standard (and often the only fully supported) set of tools and libraries on Linux is heavily GNU.


👤 pjmlp
GCC? Which supports more hardware, and has better ISO C and ISO C++ compliance than clang, since Apple and Google decided to refocus on their language stacks?

Emacs, for those of us that can't put up with vi?


👤 thesuperbigfrog
The most noteworthy GNU packages on a typical GNU / Linux distribution:

Bash: popular command line shell

Binutils: tools for creating executable binaries including GNU ld, the linker, and GNU as, the assembler.

Bison: widely-used parser generator; used to create parsers for programming languages

CLISP: GNU implementation of Common Lisp programming language

Coreutils: command line programs that implement large parts of the POSIX operating system standards

Diffutils: provide diff, cmp, diff3, and sdiff utilities used to compare files and see their differences

Emacs: powerful and extensible text editor

fdisk: used to create disk partitions

Findutils: includes find, locate, updatedb, and xargs command line programs

Fontutils: programs for managing fonts

Gawk: GNU implementation of AWK programming language

GCC: the GNU Compiler Collection: GNU implmentations of C, C++, Objective-C, Fortran, Java, Ada, and Go. Probably most widely used set of tools in this list. The Linux kernel was originally developed using GCC and, for a while, could only be compiled with GCC.

GDB: the GNU debugger; used to debug programs.

Gettext: provides programming support text output in multiple human languages

Ghostscript: GNU Postscript interpreter and PDF file support

GIMP: image / graphics editing program

GMP: arbitrary precision math libraries used in scientific computing

GnuCOBOL: GNU implementation of COBOL programming language

GnuPG: GNU Privacy Guard, an implementation of the OpenPGP cryptography standard

GnuTLS: library that implements SSL, TLS, and DTLS cryptography protocols

GRUB: bootloader that starts most Linux distributions

glibc: GNU implementation of the C standard library

GLS: the GNU Scientific Library for numerical analysis and scientific computing

Guile: GNU implementation of Scheme programming language for use as a universal application plugin / extension system

Guix: GNU package management system based on Nix

Gzip: data compression and decompression

less: GNU pager implementation

Libtool: library for creating consistent and portable shared programming libraries

make: widely-used build automation tool

ncurses: library used to create text user interfaces (TUIs)

Octave: GNU numerical computation system (MATLAB-ish clone)

readline: library for command line input, editing, and history

sed: GNU stream editor

tar: GNU tape archive creation, extraction, editing command line utility

termcap / termutils: database and programs for working with terminals in a portable way

wget: file fetching utilities for the HTTP, HTTPS, and FTP protocols

There is also a ton of other applications:

https://www.gnu.org/manual/blurbs.html