What We Do When We Say "GNU/Linux" to People
(Re-)Uploaded 3 days ago: Richard Stallman Is Right To Be Angry About "Linux"
Akira Urushibata posted a message to libreplanet-discuss
about 4 days ago and yesterday it was finally approved by the mailing list's moderator and became public. It talks about "Linux", "GNU", and what it means to say "GNU/Linux" so as to explain to people the system is diverse, modular etc. (unlike Android)
The message was based on "a lecture on using the make utility to automate tests."
Make's place in the operating system
In February I made a lecture on using the make utility to automate tests.
Debugging can be made efficient by conducting tests on small units. It's hard to find a needle in a haystack, but not so if the pile of hay fits into your palms. Ideally the tests should be written in a makefile so a check can be conducted every time the source code is modified.
Like many other UNIX-derived utilities, make is a language. As a language it is tough to study. There are several reasons for this. For one thing GNU Make, the most widely used implementation, is rich in features. The intricate details make GNU Make textbooks such as the one from O'Reilly hard to digest: the reader is easily disoriented.
In addition, and perhaps more importantly, there is an acute shortage of makefiles to use as study material. Makefiles describe the build processes of the Linux kernel, GCC, Glibc, GNU binutils, GNU coreutils, Bash and most other major OS components. However the packages seldom come with a ready-to-run makefile. Instead the makefile is produced by a configure script. Such machine-generated makefiles are difficult to analyze and are of little educational value.
Major OS component packages with a ready-to-run makefile are extremely rare. In fact I can name only one package: bzip2.
I would like fellow list subscribers here to take some time and contemplate why this has happened.
GNU source packages are designed to work in diverse environments. The autoconf and automake tools which create the configure scripts and makefiles evolved to cope with this requirement. Many developers of packages outside GNU who want their programs to be widely portable also make use of autoconf and automake and provide the required files.
Most people who have heard of a "Linux" OS aren't aware about this. They assume that "Linux" is a standard. Microsoft Windows and MacOS are standards and corporate PR campaigns stress this fact. People would naturally assume that if "Linux" is an "OS" it must be something similar.
In reality there is no "standard Linux", only distributions which combine system components and popular applications selected in accordance to certain policies. When it comes to the actual components that go into distributions there is significant variation. For example, most distributions use Bash as the default shell and Gawk as the awk interpreter but Debian employs Dash and Mawk, respectively, in their places. The configure and make procedure makes this possible.
I suspect that those who promote "Linux" for the name of the entire OS do not want people to find out that there is no such thing as a "standard Linux".
Our efforts to promote the name "GNU/Linux" for the entire OS have not been totally successful. One reason behind this is persistent effort to prevent this name from getting established. Some people are adamant and go to extremes concerning this. We should think why there exists such strong opposition while examining how the myth of a "standard Linux" influenced efforts on both sides.
There is another point I would like to raise here. We said "GNU/Linux" is the appropriate name for the operating system, but too often overlooked the fact that many people do not think much what an operating system is. This is because there are many people with little or no experience with the typical operations of the system. Some of them are highly influential in spite of their ignorance.
For example the following is a typical install operation:
tar xfz foo.1.1.1.tar.gz cd foo.1.1.1 ./configure make make install cd .. rm -rf foo.1.1.1
If successful this is all that the user needs to do. Often the above fails and some more steps, such as installing another package or modifying some code becomes necessary. These additional steps are also operations and they tend to follow a pattern. There are build experts who support the distributions. Their work fill in the gaps which autoconf and automake fail to cover.
At the beginning of this article I discussed automated tests. Writing tests and putting them together in a makefile is a typical serial operation. Test data or test input files are often mechanically generated by operations which employ OS-level utilities.
So I suggest that we, instead of merely attaching "GNU" to "Linux", send a message that "GNU" and "Linux" are separate, and that the engineers who are aware of the difference and treat it as something other than a political disagreement possess a set of valuable skills. Those who make the distinction and are aware of what the "GNU" part is capable of are adept with operations such as installation of software, backing up data, adding or replacing hardware, salvaging a damaged system and conducting tests before and after any major change.
We should try to enlighten people to the fact that instead of a "standard Linux system" we have an "ecosystem with various GNU/Linux distributions". It may be difficult, given the existing prejudices, but people are aware that their lives are ever more reliant on computer systems and there are great benefits in truly understanding them while the risks associated to ignorance is growing steadily.
Thank you for reading.
Akira Urushibata
Unless we mean the kernel alone, we'll always say "GNU/Linux" because GNU is where the "libre" system (not UNIX) started. "GNU/Linux" happened 11 years after GNU. █