summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/en/linux-and-gnu.html
blob: ca45253b8f6c1f2e7cdb9c69faca7072924544c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
<!--#include virtual="/server/header.html" -->
<!-- Parent-Version: 1.90 -->
<title>Linux and GNU
- GNU Project - Free Software Foundation</title>
<meta http-equiv="Keywords" content="GNU, FSF, Free Software Foundation, Linux, Emacs, GCC, Unix, Free Software, Operating System, GNU Kernel, HURD, GNU HURD, Hurd" />
<meta http-equiv="Description" content="Since 1983, developing the free Unix style operating system GNU, so that computer users can have the freedom to share and improve the software they use." />
<!--#include virtual="/gnu/po/linux-and-gnu.translist" -->
<!--#include virtual="/server/banner.html" -->
<h2>Linux and the GNU System</h2>

<p><strong>by <a href="http://www.stallman.org/">Richard Stallman</a></strong></p>

<div class="announcement">
  <blockquote><p>For more information see also
the <a href="/gnu/gnu-linux-faq.html">GNU/Linux FAQ</a>,
and <a href="/gnu/why-gnu-linux.html">Why GNU/Linux?</a></p>
  </blockquote>
</div>

<p>
Many computer users run a modified version of
<a href="/philosophy/categories.html#TheGNUsystem">the GNU system</a>
every day, without realizing it.  Through a peculiar turn of events,
the version of GNU which is widely used today is often called
&ldquo;Linux&rdquo;, and many of its users
are <a href="/gnu/gnu-users-never-heard-of-gnu.html"> not aware</a>
that it is basically the GNU system, developed by the
<a href="/gnu/gnu-history.html">GNU Project</a>.</p>

<p>
There really is a Linux, and these people are using it, but it is just
a part of the system they use.  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.  All the so-called
&ldquo;Linux&rdquo; distributions are really distributions of
GNU/Linux.</p>

<p>
Many users do not understand the difference between the kernel, which
is Linux, and the whole system, which they also call
&ldquo;Linux&rdquo;.  The ambiguous use of the name doesn't help
people understand.  These users often think that Linus Torvalds
developed the whole operating system in 1991, with a bit of help.</p>

<p>
Programmers generally know that Linux is a kernel.  But since they
have generally heard the whole system called &ldquo;Linux&rdquo; as well, they
often envisage a history that would justify naming the whole system
after the kernel.  For example, many believe that once Linus Torvalds
finished writing Linux, the kernel, its users looked around for other
free software to go with it, and found that (for no particular reason)
most everything necessary to make a Unix-like system was already
available.</p>

<p>
What they found was no accident&mdash;it was the not-quite-complete GNU
system.  The available <a href="/philosophy/free-sw.html">free
software</a> added up to a complete system because the GNU Project
had been working since 1984 to make one.  In
the <a href="/gnu/manifesto.html"> GNU Manifesto</a> we set forth
the goal of developing a free Unix-like
system, called GNU.  The <a href="/gnu/initial-announcement.html">
Initial Announcement</a> of the GNU Project also outlines some of the
original plans for the GNU system. By the time Linux was started, GNU
was almost finished.</p>

<p>
Most free software projects have the goal of developing a particular
program for a particular job.  For example, Linus Torvalds set out to
write a Unix-like kernel (Linux); Donald Knuth set out to write a text
formatter (TeX); Bob Scheifler set out to develop a window system (the
X Window System). It's natural to measure the contribution of this
kind of project by specific programs that came from the project.</p>

<p>
If we tried to measure the GNU Project's contribution in this way,
what would we conclude?  One CD-ROM vendor found that in their &ldquo;Linux
distribution&rdquo;, <a href="/philosophy/categories.html#GNUsoftware">GNU
software</a> was the largest single contingent, around 28% of the
total source code, and this included some of the essential major
components without which there could be no system.  Linux itself was
about 3%.  (The proportions in 2008 are similar: in the &ldquo;main&rdquo;
repository of gNewSense, Linux is 1.5% and GNU packages are 15%.)
So if you were going to pick a name for the system based on
who wrote the programs in the system, the most appropriate single
choice would be &ldquo;GNU&rdquo;.</p>

<p>
But that is not the deepest way to consider the question.  The GNU
Project was not, is not, a project to develop specific software
packages.  It was not a project <a href="/software/gcc/"> to
develop a C compiler</a>, although we did that.  It was not a project
to develop a text editor, although we developed one.  The GNU Project
set out to develop <em>a complete free Unix-like system</em>: GNU.</p>

<p>
Many people have made major contributions to the free software in the
system, and they all deserve credit for their software.  But the
reason it is <em>an integrated system</em>&mdash;and not just a
collection of useful programs&mdash;is because the GNU Project set out
to make it one.  We made a list of the programs needed to make
a <em>complete</em> free system, and we systematically found, wrote,
or found people to write everything on the list.  We wrote essential
but unexciting
<a href="#unexciting">(1)</a> components because you can't have a system
without them.  Some of our system components, the programming tools,
became popular on their own among programmers, but we wrote many
components that are not tools  <a href="#nottools">(2)</a>.  We even
developed a chess game, GNU Chess, because a complete system needs
games too.</p>

<p>
By the early 90s we had put together the whole system aside from the
kernel.  We had also started a kernel, the
<a href="/software/hurd/hurd.html">GNU Hurd</a>, which runs on top of
Mach.  Developing this kernel has been a lot harder than we expected;
<a href="/software/hurd/hurd-and-linux.html">the
GNU Hurd started working reliably in 2001</a>, but it is a long way
from being ready for people to use in general.</p>

<p>
Fortunately, we didn't have to wait for the Hurd, because of Linux.
Once Torvalds freed Linux in 1992, it fit into the last major gap in
the GNU system.  People could
then <a href="http://ftp.funet.fi/pub/linux/historical/kernel/old-versions/RELNOTES-0.01">
combine Linux with the GNU system</a> to make a complete free system
&mdash; a version of the GNU system which also contained Linux.  The
GNU/Linux system, in other words.</p>

<p>
Making them work well together was not a trivial job.  Some GNU
components<a href="#somecomponents">(3)</a> needed substantial change
to work with Linux.  Integrating a complete system as a distribution
that would work &ldquo;out of the box&rdquo; was a big job, too.  It
required addressing the issue of how to install and boot the
system&mdash;a problem we had not tackled, because we hadn't yet
reached that point.  Thus, the people who developed the various system
distributions did a lot of essential work.  But it was work that, in
the nature of things, was surely going to be done by someone.</p>

<p>
The GNU Project supports GNU/Linux systems as well as <em>the</em> GNU
system.  The <a href="http://fsf.org/">FSF</a> funded the rewriting of
the Linux-related extensions to the GNU C library, so that now they
are well integrated, and the newest GNU/Linux systems use the current
library release with no changes.  The FSF also funded an early stage
of the development of Debian GNU/Linux.</p>

<p>
Today there are many different variants of the GNU/Linux system (often
called &ldquo;distros&rdquo;).  Most of them include nonfree
programs&mdash;their developers follow
the <a href="/philosophy/open-source-misses-the-point.html">&ldquo;open
source&rdquo; philosophy</a> associated with Linux rather than the
<a href="/philosophy/free-software-even-more-important.html">&ldquo;free
software&rdquo; philosophy</a> of GNU.  But there are also
<a href="/distros/distros.html">completely free GNU/Linux distros</a>.
The FSF supports computer facilities for a few of them.</p>

<p>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 <a href="http://directory.fsf.org/project/linux"> free version of
Linux</a> too.</p>

<p>Whether you use GNU/Linux or not, please don't confuse the public
by using the name &ldquo;Linux&rdquo; ambiguously.  Linux is the
kernel, one of the essential major components of the system.  The
system as a whole is basically the GNU system, with Linux added.  When
you're talking about this combination, please call it
&ldquo;GNU/Linux&rdquo;.</p>

<p>
If you want to make a link on &ldquo;GNU/Linux&rdquo; for further
reference, this page and <a href="/gnu/the-gnu-project.html">
http://www.gnu.org/gnu/the-gnu-project.html</a> are good choices.  If
you mention Linux, the kernel, and want to add a link for further
reference, <a href="http://foldoc.org/linux">http://foldoc.org/linux</a> 
is a good URL to use.</p>

<h3>Postscripts</h3>

<p>
Aside from GNU, one other project has independently produced
a free Unix-like operating system.  This system is known as BSD, and
it was developed at UC Berkeley.  It was nonfree in the 80s, but
became free in the early 90s.  A free operating system that exists
today<a href="#newersystems">(4)</a> is almost certainly either a
variant of the GNU system, or a kind of BSD system.</p>

<p>
People sometimes ask whether BSD too is a version of GNU, like
GNU/Linux.  The BSD developers were inspired to make their code free
software by the example of the GNU Project, and explicit appeals from
GNU activists helped persuade them, but the code had little overlap
with GNU.  BSD systems today use some GNU programs, just as the GNU
system and its variants use some BSD programs; however, taken as
wholes, they are two different systems that evolved separately.  The
BSD developers did not write a kernel and add it to the GNU system,
and a name like GNU/BSD would not fit the situation.<a
href="#gnubsd">(5)</a></p>

<h3>Notes:</h3>
<ol>
<li>
<a id="unexciting"></a>These unexciting but essential components
include the GNU assembler (GAS) and the linker (GLD), both
are now part of the <a href="/software/binutils/">GNU Binutils</a>
package, <a href="/software/tar/">GNU tar</a>, and many more.</li>

<li>
<a id="nottools"></a>For instance, The Bourne Again SHell (BASH),
the PostScript interpreter
<a href="/software/ghostscript/ghostscript.html">Ghostscript</a>, and the
<a href="/software/libc/libc.html">GNU C library</a> are not
programming tools.  Neither are GNUCash, GNOME, and GNU Chess.</li>

<li>
<a id="somecomponents"></a>For instance, the
<a href="/software/libc/libc.html">GNU C library</a>.</li>

<li>
<a id="newersystems"></a>Since that was written, a nearly-all-free
Windows-like system has been developed, but technically it is not at
all like GNU or Unix, so it doesn't really affect this issue.  Most of
the kernel of Solaris has been made free, but if you wanted to make a
free system out of that, aside from replacing the missing parts of the
kernel, you would also need to put it into GNU or BSD.</li>

<li>
<a id="gnubsd"></a>On the other hand, in the years since this article
was written, the GNU C Library has been ported to several versions of
the BSD kernel, which made it straightforward to combine the GNU system
with that kernel.  Just as with GNU/Linux, these are indeed variants of
GNU, and are therefore called, for instance, GNU/kFreeBSD and
GNU/kNetBSD depending on the kernel of the system.  Ordinary users on
typical desktops can hardly distinguish between GNU/Linux and
GNU/*BSD.</li>

</ol>

</div><!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.html" -->
<div id="footer">
<div class="unprintable">

<p>Please send general FSF &amp; GNU inquiries to
<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
There are also <a href="/contact/">other ways to contact</a>
the FSF.  Broken links and other corrections or suggestions can be sent
to <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>

<p><!-- TRANSLATORS: Ignore the original text in this paragraph,
        replace it with the translation of these two:

        We work hard and do our best to provide accurate, good quality
        translations.  However, we are not exempt from imperfection.
        Please send your comments and general suggestions in this regard
        to <a href="mailto:web-translators@gnu.org">
        &lt;web-translators@gnu.org&gt;</a>.</p>

        <p>For information on coordinating and submitting translations of
        our web pages, see <a
        href="/server/standards/README.translations.html">Translations
        README</a>. -->
Please see the <a
href="/server/standards/README.translations.html">Translations
README</a> for information on coordinating and submitting translations
of this article.</p>
</div>

<!-- Regarding copyright, in general, standalone pages (as opposed to
     files generated as part of manuals) on the GNU web server should
     be under CC BY-ND 4.0.  Please do NOT change or remove this
     without talking with the webmasters or licensing team first.
     Please make sure the copyright date is consistent with the
     document.  For web pages, it is ok to list just the latest year the
     document was modified, or published.
     
     If you wish to list earlier years, that is ok too.
     Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
     years, as long as each year in the range is in fact a copyrightable
     year, i.e., a year in which the document was published (including
     being publicly visible on the web or in a revision control system).
     
     There is more detail about copyright years in the GNU Maintainers
     Information document, www.gnu.org/prep/maintain. -->

<p>Copyright &copy; 1997, 1998, 1999, 2000, 2001, 2002,
2007, 2014, 2015, 2016, 2017, 2019 Richard M. Stallman</p>

<p>This page is licensed under a <a rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/">Creative
Commons Attribution-NoDerivatives 4.0 International License</a>.</p>

<!--#include virtual="/server/bottom-notes.html" -->

<p class="unprintable">Updated:
<!-- timestamp start -->
$Date: 2019/12/30 11:28:30 $
<!-- timestamp end -->
</p>
</div>
</div>
</body>
</html>