summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/en/stallman-kth.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/en/stallman-kth.html')
-rw-r--r--talermerchantdemos/blog/articles/en/stallman-kth.html296
1 files changed, 158 insertions, 138 deletions
diff --git a/talermerchantdemos/blog/articles/en/stallman-kth.html b/talermerchantdemos/blog/articles/en/stallman-kth.html
index 8133988..c47190e 100644
--- a/talermerchantdemos/blog/articles/en/stallman-kth.html
+++ b/talermerchantdemos/blog/articles/en/stallman-kth.html
@@ -1,36 +1,46 @@
<!--#include virtual="/server/header.html" -->
-<!-- Parent-Version: 1.77 -->
-<title>Speech in Sweden
+<!-- Parent-Version: 1.96 -->
+<!-- This page is derived from /server/standards/boilerplate.html -->
+<!--#set var="TAGS" value="speeches" -->
+<!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
+<title>RMS lecture at KTH (Sweden), 1986
- GNU Project - Free Software Foundation</title>
+<style type="text/css" media="screen"><!--
+#content span { font-style: italic; color: #505050; }
+--></style>
<!--#include virtual="/philosophy/po/stallman-kth.translist" -->
<!--#include virtual="/server/banner.html" -->
-<h2>RMS lecture at KTH (Sweden), 30 October 1986</h2>
-
-<div style="text-align: center;">
-<p><em>(Kungliga Tekniska H&ouml;gskolan (Royal Institute of
-Technology))<br />
-Stockholm, Sweden</em></p>
-<p><em>
-Arranged by the student society<br />
-&ldquo;Datorf&ouml;reningen Stacken&rdquo;<br />
-30 October 1986
-</em></p>
+<!--#include virtual="/philosophy/ph-breadcrumb.html" -->
+<!--GNUN: OUT-OF-DATE NOTICE-->
+<!--#include virtual="/server/top-addendum.html" -->
+<div class="article reduced-width">
+<h2>RMS lecture at KTH (Sweden), 1986</h2>
+
+<div class="infobox">
+<p>Transcript of Richard Stallman's speech at the <i>Kungliga Tekniska
+H&ouml;gskolan</i> (Royal Institute of Technology) in
+Stockholm, Sweden, arranged by the student society <i>Datorf&ouml;reningen
+Stacken</i> on 30&nbsp;October&nbsp;1986.
+</p>
</div>
+<hr class="thin" />
-<p><strong>[Note: This is a slightly edited transcript of the talk.
+<div class="introduction">
+<p><i>Note: This is a slightly edited transcript of the talk.
As such it contains false starts, as well as locutions that are
natural in spoken English but look strange in print. It is not clear
-how to correct them to written English style without &lsquo;doing
-violence to the original speech&rsquo;.]</strong></p>
+how to correct them to written English style without doing
+violence to the original speech.</i></p>
+</div>
-<p>It seems that there are three things that people would like me to
+<p><b>Rms:</b> It seems that there are three things that people would like me to
talk about. On the one hand I thought that the best thing to talk
about here for a club of hackers, was what it was like at the
<abbr title="Massachusetts Institute of Technology">MIT</abbr>
in the old days. What made the Artificial Intelligence Lab such a
special place. But people tell me also that since these are totally
different people from the ones who were at the conference Monday and
-Tuesday that I ought to talk about what's going on in the GNU project
+Tuesday that I ought to talk about what's going on in the GNU Project
and that I should talk about why software and information can not be
owned, which means three talks in all, and since two of those subjects
each took an hour it means we're in for a rather long time. So I had
@@ -38,11 +48,19 @@ the idea that perhaps I could split it in to three parts, and people
could go outside for the parts they are not interested in, and that
then when I come to the end of a part I can say it's the end and
people can go out and I can send Jan Rynning out to bring in the other
-people. (Someone else says: &ldquo;Janne, han trenger ingen
-mike&rdquo; (translation: &ldquo;Janne, he doesn't need a
-mike&rdquo;)). Jan, are you prepared to go running out to fetch the
-other people? Jmr: I am looking for a microphone, and someone tells
-me it is inside this locked box. Rms: Now in the old days at the AI
+people.</p>
+
+<p><span>[Someone else says: &ldquo;<i>Janne, han trenger ingen
+mike.</i>&rdquo; (Translation: &ldquo;Janne, he doesn't need a
+mike.&rdquo;)]</span></p>
+
+<p>Jan, are you prepared to go running out to fetch the
+other people?</p>
+
+<p><b>Jmr:</b> I am looking for a microphone, and someone tells
+me it is inside this locked box.</p>
+
+<p><b>Rms:</b> Now in the old days at the AI
lab we would have taken a sledgehammer and cracked it open, and the
broken door would be a lesson to whoever had dared to lock up
something that people needed to use. Luckily however I used to study
@@ -50,8 +68,8 @@ Bulgarian singing, so I have no trouble managing without a
microphone.</p>
<p>Anyway, should I set up this system to notify you about the parts
-of the talk, or do you just like to sit through all of it? (Answer:
-Yeaaah)</p>
+of the talk, or do you just like to sit through all of it? <span>[Answer:
+Yeaaah]</span></p>
<p>When I started programming, it was 1969, and I did it in an IBM
laboratory in New York. After that I went to a school with a computer
@@ -86,7 +104,7 @@ be locked, they were able to find a compromise solution: some other
place to put the things they were worried about, a desk they could
lock, another little room. But the point is that people usually don't
bother to think about that. They have the idea: &ldquo;This room is
-Mine, I can lock it, to hell with everyone else&rdquo;, and that is
+Mine, I can lock it, to hell with everyone else,&rdquo; and that is
exactly the spirit that we must teach them not to have.</p>
<p>But this spirit of unlocking doors wasn't an isolated thing, it was
@@ -179,7 +197,7 @@ to do those things would just go and fix it quickly, and since they
were ten times as competent as any field service person, they could do
a much better job. And then they would have the ruined boards, they
would just leave them there and tell the field service person
-&ldquo;take these back and bring us some new ones&rdquo;.</p>
+&ldquo;take these back and bring us some new ones.&rdquo;</p>
<p>In the real old days our hackers used to modify the machines that
came from Digital also. For example, they built paging-boxes to put
@@ -254,8 +272,8 @@ change, because the professors and the students who didn't really love
the machine were just as numerous as before, so they were now the
dominant party, and they were very scared. Without hackers to
maintain the system, they said, &ldquo;we're going to have a disaster,
-we must have commercial software&rdquo;, and they said &ldquo;we can
-expect the company to maintain it&rdquo;. It proved that they were
+we must have commercial software,&rdquo; and they said &ldquo;we can
+expect the company to maintain it.&rdquo; It proved that they were
utterly wrong, but that's what they did.</p>
<p>That was exactly when a new KL-10 system was supposed to arrive,
@@ -281,7 +299,7 @@ message &ldquo;so-and-so must be reading your mail, can it be that
mail files aren't properly protected on your system?&rdquo; &ldquo;Of
course, no file is protected on our system. What's the problem? You
got your answer sooner; why are you unhappy? Of course we read each
-other's mail so we can find people like you and help them&rdquo;.
+other's mail so we can find people like you and help them.&rdquo;
Some people just don't know when they're well off.</p>
<p>But of course Twenex not only has security, and by default turns on
@@ -316,7 +334,7 @@ turn off password checking and then I turned back on a whole bunch of
people's wheel bits and posted a system message. I have to explain
that the name of this machine was OZ, so I posted a system message
saying: &ldquo;There was another attempt to seize power. So far the
-aristocratic forces have been defeated&mdash;Radio Free OZ&rdquo;.
+aristocratic forces have been defeated&mdash;Radio Free OZ.&rdquo;
Later I discovered that &ldquo;Radio Free OZ&rdquo; is one of the
things used by Firesign Theater. I didn't know that at the time.</p>
@@ -331,13 +349,13 @@ password that is as obvious as possible and I should tell everyone
what it is. Because I don't believe that it's really desirable to
have security on a computer, I shouldn't be willing to help uphold the
security regime. On the systems that permit it I use the &ldquo;empty
-password&rdquo;, and on systems where that isn't allowed, or where
+password,&rdquo; and on systems where that isn't allowed, or where
that means you can't log in at all from other places, things like
that, I use my login name as my password. It's about as obvious as
you can get. And when people point out that this way people might be
-able to log in as me, i say &ldquo;yes that's the idea, somebody might
+able to log in as me, I say &ldquo;yes that's the idea, somebody might
have a need to get some data from this machine. I want to make sure
-that they aren't screwed by security&rdquo;.</p>
+that they aren't screwed by security.&rdquo;</p>
<p>And an other thing that I always do is I always turn of all
protection on my directory and files, because from time to time I have
@@ -345,7 +363,7 @@ useful programs stored there and if there's a bug I want people to be
able to fix it.</p>
<p>But that machine wasn't designed also to support the phenomenon
-called &ldquo;tourism&rdquo;. Now &ldquo;tourism&rdquo; is a very old
+called &ldquo;tourism.&rdquo; Now &ldquo;tourism&rdquo; is a very old
tradition at the AI lab, that went along with our other forms of
anarchy, and that was that we'd let outsiders come and use the
machine. Now in the days where anybody could walk up to the machine
@@ -398,8 +416,8 @@ knew, tourists always logging in as me two or three at a time, so they
started flushing my account. And by that time I was mostly working on
other machines anyway, so eventually I gave up and stopped ever
turning it on again. And that was that. I haven't logged in on that
-machine as myself &hellip; [At this point RMS is interrupted by
-tremendous applause] &hellip; for.</p>
+machine as myself &hellip; <span>[At this point RMS is interrupted by
+tremendous applause.]</span> &hellip; for.</p>
<p>But when they first got this Twenex system they had several changes
in mind that they wanted to make. Changes in the way security worked.
@@ -474,24 +492,24 @@ and I should make it compatible with Unix. Finally when I realized
that I could use the most amusing word in the English language as a
name for this system, it was clear which choice I had to make. And
that word is of course GNU, which stands for &ldquo;Gnu's Not
-Unix&rdquo;. The recursive acronym is a very old tradition among the
+Unix.&rdquo; The recursive acronym is a very old tradition among the
hacker community around MIT. It started, I believe, with an editor
-called TINT, which means: &ldquo;Tint Is Not Teco&rdquo;, and later on
+called TINT, which means: &ldquo;Tint Is Not Teco,&rdquo; and later on
it went through names such as &ldquo;SINE&rdquo; for &ldquo;SINE Is
-Not Emacs&rdquo;, and FINE for &ldquo;Fine Is Not Emacs&rdquo;, and
-EINE for &ldquo;Eine Is Not Emacs&rdquo;, and ZWEI for &ldquo;Zwei Was
-Eine Initially&rdquo;, and ultimately now arrives at GNU.</p>
+Not Emacs,&rdquo; and FINE for &ldquo;Fine Is Not Emacs,&rdquo; and
+EINE for &ldquo;Eine Is Not Emacs,&rdquo; and ZWEI for &ldquo;Zwei Was
+Eine Initially,&rdquo; and ultimately now arrives at GNU.</p>
<p>I would say that since the time about two and a half years ago when
I actually started working on GNU, I've done more than half of the
work. When I was getting ready to start working on the project, I
first started looking around for what I could find already available
free. I found out about an interesting portable compiler system which
-was called &ldquo;the free university compiler kit&rdquo;, and I
+was called &ldquo;the free university compiler kit,&rdquo; and I
thought, with a name like that, perhaps I could have it. So, I sent a
message to the person who had developed it asking if he would give it
-to the GNU project, and he said &ldquo;No, the university might be
-free, but the software they develop isn't&rdquo;, but he then said
+to the GNU Project, and he said &ldquo;No, the university might be
+free, but the software they develop isn't,&rdquo; but he then said
that he wanted to have a Unix compatible system too, and he wanted to
write a sort of kernel for it, so why didn't I then write the
utilities, and they could both be distributed with his proprietary
@@ -502,16 +520,16 @@ be a compiler.</p>
<p>I didn't really know much about optimizing compilers at the time,
because I'd never worked on one. But I got my hands on a compiler,
that I was told at the time was free. It was a compiler called PASTEL,
-which the authors say means &ldquo;off-color PASCAL&rdquo;.</p>
+which the authors say means &ldquo;off-color PASCAL.&rdquo;</p>
<p>Pastel was a very complicated language including features such as
parametrized types and explicit type parameters and many complicated
things. The compiler was of course written in this language, and had
many complicated features to optimize the use of these things. For
example: the type &ldquo;string&rdquo; in that language was a
-parameterized type; you could say &ldquo;string(n)&rdquo; if you
+parameterized type; you could say <code>string(n)</code> if you
wanted a string of a particular length; you could also just say
-&ldquo;string&rdquo;, and the parameter would be determined from the
+<code>string</code>, and the parameter would be determined from the
context. Now, strings are very important, and it is necessary for a
lot of constructs that use them to run fast, and this means that they
had to have a lot of features to detect such things as: when the
@@ -522,13 +540,13 @@ But I did get to see in this compiler how to do automatic register
allocation, and some ideas about how to handle different sorts of
machines.</p>
-<p>Well, since this compiler already compiled PASTEL, what i needed to
+<p>Well, since this compiler already compiled PASTEL, what I needed to
do was add a front-end for C, which I did, and add a back-end for the
68000 which I expected to be my first target machine. But I ran into
a serious problem. Because the PASTEL language was defined not to
require you to declare something before you used it, the declarations
and uses could be in any order, in other words: Pascal's
-&ldquo;forward&rdquo; declaration was obsolete, because of this it was
+<code>forward</code> declaration was obsolete, because of this it was
necessary to read in an entire program, and keep it in core, and then
process it all at once. The result was that the intermediate storage
used in the compiler, the size of the memory needed, was proportional
@@ -542,7 +560,7 @@ something like that. And of course to generate its conflict matrix to
see which temporary values conflicted, or was alive at the same time
as which others, it needed a quadratic matrix of bits, and that for
large functions that would get it to hundreds of thousands of bytes.
-So i managed to debug the first pass of the ten or so passes of the
+So I managed to debug the first pass of the ten or so passes of the
compiler, cross compiled on to that machine, and then found that the
second one could never run.</p>
@@ -671,14 +689,15 @@ certain address, you just say: &ldquo;Give me the object of type FLOAT
or DOUBLE at this address&rdquo; and then assign that. Another thing
you can do is to examine all the values that have been examined in the
past. Every value examined gets put on the &ldquo;value
-history&rdquo;. You can refer to any element in the history by its
+history.&rdquo; You can refer to any element in the history by its
numerical position, or you can easily refer to the last element with
just dollar-sign. And this makes it much easier to trace list
structure. If you have any kind of C structure that contains a
-pointer to another one, you can do something like &ldquo;PRINT
-*$.next&rdquo;, which says: &ldquo;Get the next field out of the last
+pointer to another one, you can do something like
+<code>PRINT&nbsp;*$.next</code>, which says: &ldquo;Get
+the next field out of the last
thing you showed me, and then display the structure that points
-at&rdquo;. And you can repeat that command, and each time you'll see
+at.&rdquo; And you can repeat that command, and each time you'll see
then next structure in the list. Whereas in every other C debugger
that I've seen the only way to do that is to type a longer command
each time. And when this is combined with the feature that just
@@ -696,28 +715,28 @@ than remember its number in the history you might give it a name. You
might also find use for them when you set conditional breakpoints.
Conditional breakpoints are a feature in many symbolic debuggers, you
say &ldquo;stop when you get to this point in the program, but only if
-a certain expression is true&rdquo;. The variables in the debugger
+a certain expression is true.&rdquo; The variables in the debugger
allow you to compare a variable in the program with a previous value
of that variable that you saved in a debugger variable. Another thing
that they can be used for is for counting, because after all,
assignments are expressions in C, therefore you can do
-&ldquo;$foo+=5&rdquo; to increment the value of &ldquo;$foo&rdquo; by
-five, or just &ldquo;$foo++&rdquo; you can do. You can even do this
+<code>$foo+=5</code> to increment the value of <code>$foo</code> by
+five, or just <code>$foo++</code> you can do. You can even do this
in a conditional breakpoint, so that's a cheap way of having it break
the tenth time the breakpoint is hit, you can do
-&ldquo;$foo--==0&rdquo;. Does everyone follow that? Decrement foo
-and if it's zero now, break. And then you set $foo to the number of
+<code>$foo--==0</code>. Does everyone follow that? Decrement foo
+and if it's zero now, break. And then you set <code>$foo</code> to the number of
times you want it to skip, and you let it go. You can also use that
to examine elements of an array. Suppose you have an array of
pointers, you can then do:</p>
-<pre>PRINT X[$foo++]</pre>
+<pre><code>PRINT X[$foo++]</code></pre>
<p>But first you do</p>
-<pre>SET $foo=0</pre>
+<pre><code>SET $foo=0</code></pre>
-<p>Okay, when you do that [points at the &ldquo;Print&rdquo;
+<p>Okay, when you do that [points at the <code>PRINT</code>
expression], you get the zeroth element of X, and then you do it again
and it gets the first element, and suppose these are pointers to
structures, then you probably put an asterisk there [before the X in
@@ -725,16 +744,16 @@ the PRINT expression] and each time it prints the next structure
pointed to by the element of the array. And of course you can repeat
this command by typing carriage-return. If a single thing to repeat
is not enough, you can create a user-defined-command. You can say
-&ldquo;Define Mumble&rdquo;, and then you give some lines of commands
-and then you say &ldquo;end&rdquo;. And now there is defined a
-&ldquo;Mumble&rdquo; command which will execute those lines. And it's
+<code>Define Mumble</code>, and then you give some lines of commands
+and then you say <code>end</code>. And now there is defined a
+<code>Mumble</code> command which will execute those lines. And it's
very useful to put these definitions in a command file. You can have
a command file in each directory, that will be loaded automatically
when you start the debugger with that as your working directory. So
for each program you can define a set of user defined commands to
access the data structures of that program in a useful way. You can
even provide documentation for your user-defined commands, so that
-they get handled by the &ldquo;help&rdquo; features just like the
+they get handled by the <code>help</code> features just like the
built-in commands.</p>
<p>One other unusual thing in this debugger, is the ability to discard
@@ -748,12 +767,12 @@ change the data areas in you program flexibly, but also being able to
change the flow of control. In this debugger you can change the flow
of control very directly by saying:</p>
-<pre>SET $PC=&lt;some number&gt;</pre>
+<pre><code>SET $PC=&lt;some number&gt;</code></pre>
<p>So you can set the program counter. You can also set the stack
pointer, or you can say</p>
-<pre>SET $SP+=&lt;something&gt;</pre>
+<pre><code>SET $SP+=&lt;something&gt;</code></pre>
<p>If you want to increment the stack pointer a certain amount. But
in addition you can also tell it to start at a particular line in the
@@ -762,8 +781,8 @@ But what if you find that you called a function by mistake and you
didn't really want to call that function at all? Say, that function
is so screwed up that what you really want to do is get back out of it
and do by hand what that function should have done. For that you can
-use the &ldquo;RETURN&rdquo; command. You select a stack frame and you
-say &ldquo;RETURN&rdquo;, and it causes that stack-frame, and all the
+use the <code>RETURN</code> command. You select a stack frame and you
+say <code>RETURN</code>, and it causes that stack-frame, and all the
ones within it, to be discarded as if that function were returning
right now, and you can also specify the value it should return. This
does not continue execution; it pretends that return happened and then
@@ -810,7 +829,7 @@ represent the instructions in algebraic notation. For example, an ADD
instruction might be represented like this:</p>
<pre>
- r[3]=r[2]+4
+ <code>r[3]=r[2]+4</code>
</pre>
<p>This would be a representation inside their compiler for
@@ -825,7 +844,7 @@ instruction.</p>
<p>Sometimes depending on whether the result of the first instruction
had any further use, it might be necessary to make a combined
instruction with two assignment operators. One for this value
-[pointing at ???]and another one with this value [pointing at ???]
+[pointing at ???] and another one with this value [pointing at ???]
substituted in it with what came from the second instruction. But if
this value was only used that once, you could eliminate it after
substituting for it; there'd be no need to compute it any more. So
@@ -852,17 +871,17 @@ wanted, so I have rewritten it to use list structure representations
for all these expressions. Things like this:</p>
<pre>
- (set (reg 2)
- (+ (reg 2)
- (int 4)))
+ <code>(set (reg 2)</code>
+ <code>(+ (reg 2)</code>
+ <code>(int 4)))</code>
</pre>
<p>This looks like Lisp, but the semantics of these are not quite
LISP, because each symbol here is one recognized specially. There's a
particular fixed set of these symbols that is defined, all the ones
you need. And each one has a particular pattern of types of
-arguments, for example: &ldquo;reg&rdquo; always has an integer,
-because registers are numbered, but &ldquo;+&rdquo; takes two
+arguments, for example: <code>reg</code> always has an integer,
+because registers are numbered, but <code>+</code> takes two
subexpressions, and so on. And with each of these expressions is also
a data type which says essentially whether it's fixed or floating and
how many bytes long it is. It could be extended to handle other
@@ -909,7 +928,7 @@ implementing all the hair needed to make really fully efficient.</p>
into effectively a syntax tree annotated with C datatype information.
Then another pass which looks at that tree and generates code like
this [LISP like code]. Then several optimization passes. One to
-handle things like jumps across jumps, jumps to jumps, jumps to .+1,
+handle things like jumps across jumps, jumps to jumps, jumps to <code>.+1</code>,
all of which can be immediately simplified. Then a common
subexpression recognizer, then finding basic blocks, and performing
dataflow-analysis, so that it can tell for each instruction which
@@ -961,7 +980,7 @@ has to copy things to registers and really it isn't going to have to,
so it may free up too many things and thus not use all the registers
that it could.</p>
-<p>(Question: Do you have a code generator for 32000?) Not yet, but
+<p><span>[Question: Do you have a code generator for 32000?]</span> Not yet, but
again, it's not a code generator it's just a machine description that
you need. A list of all the machine instructions described in this
[LISP like] form. So in fact aside from the work of implementing the
@@ -983,7 +1002,7 @@ yet, although it has compiled itself correctly. I expect this will
just take a few months, and then I will release the compiler.</p>
<p>The other sizable part of the system that exist, is the kernel.
-(Question: A pause?) Ah, yeah I guess we've forgotten about breaks.
+<span>[Question: A pause?]</span> Ah, yeah I guess we've forgotten about breaks.
Why don't I finish talking about the kernel, which should only take
about five minutes, and then we can take a break.</p>
@@ -1018,7 +1037,7 @@ necessary.</p>
undeletion, information on when and how and where the file was backed
up on tape, atomic superseding of files. I believe that it is good
that in Unix when a file is being written, you can already look at
-what's going there, so for example, you can use &ldquo;tail&rdquo; to
+what's going there, so for example, you can use <code>tail</code> to
see how far the thing got, that's very nice. And if the program dies,
having partly written the file, you can see what it produced. These
things are all good, but, that partly written output should not ever
@@ -1038,15 +1057,15 @@ specify a file name leaving the version number implicit, if you just
specify the name in the ordinary way. But if you wish to specify a
name exactly, either because you want to state explicitly what version
to use, or because you don't want versions at all, you put a point at
-the end of it. Thus if you give the filename &ldquo;FOO&rdquo; it
+the end of it. Thus if you give the filename <code>FOO</code> it
means &ldquo;Search the versions that exists for FOO and take the
-latest one&rdquo;. But if you say &ldquo;FOO.&rdquo; it means
-&ldquo;use exactly the name FOO and none other&rdquo;. If you say
-&ldquo;FOO.3.&rdquo; it says &ldquo;use exactly the name FOO.3 &rdquo;
+latest one.&rdquo; But if you say <code>FOO.</code> it means
+&ldquo;use exactly the name FOO and none other.&rdquo; If you say
+<code>FOO.3.</code> it says &ldquo;use exactly the name FOO.3&rdquo;
which of course is version three of FOO and none other. On output, if
-you just say &ldquo;FOO&rdquo;, it will eventually create a new
-version of &ldquo;FOO&rdquo;, but if you say &ldquo;FOO.&rdquo; it
-will write a file named exactly &ldquo;FOO&rdquo;.</p>
+you just say <code>FOO</code>, it will eventually create a new
+version of FOO, but if you say <code>FOO.</code> it
+will write a file named exactly FOO.</p>
<p>Now there's some challenges involved in working out all the details
in this, and seeing whether there are any lingering problems, whether
@@ -1062,35 +1081,35 @@ if you close it explicitly. If it gets closed because the job dies, or
because the system crashes or anything like that, it should be under a
different name.</p>
-<p>And this idea can be connected up to &ldquo;star matching&rdquo;,
+<p>And this idea can be connected up to &ldquo;star matching,&rdquo;
by saying that a name that doesn't end in a point is matched against
all the names without their version numbers, so if a certain directory
has files like this:</p>
<pre>
- foo.1 foo.2 bar.8
+ <code>foo.1 foo.2 bar.8</code>
</pre>
-<p>If I say &ldquo;*&rdquo;, that's equivalent to</p>
+<p>If I say <code>*</code>, that's equivalent to</p>
<pre>
- foo bar
+ <code>foo bar</code>
</pre>
<p>because it takes all the names and gets rid of their versions, and
-takes all the distinct ones. But if I say &ldquo;*.&rdquo; then it
+takes all the distinct ones. But if I say <code>*.</code> then it
takes all the exact names, puts a point after each one, and matches
against them. So this gives me all the names for all the individual
versions that exist. And similar, you can see the difference between
-&ldquo;*.c&rdquo; and &ldquo;*.c.&rdquo; this [the first] would give
-you essentially versionless references to all the &ldquo;.c&rdquo;
+<code>*.c</code> and <code>*.c.</code> this [the first] would give
+you essentially versionless references to all the <code>.c</code>
files, whereas this [the second] will give you all the versions
&hellip; well this actually wouldn't, you'd have to say
-&ldquo;*.c.*.&rdquo;. I haven't worked out the details here.</p>
+<code>*.c.*.</code>; I haven't worked out the details here.</p>
<p>Another thing, that isn't a user visible feature and is certainly
compatible to put in, is failsafeness in the file system. Namely, by
writing all the information on disk in the proper order, arranging
-that you can press &ldquo;halt&rdquo; at any time without ever
+that you can press &ldquo;<kbd>halt</kbd>&rdquo; at any time without ever
corrupting thereby the file system on disk. It is so well known how
to do this, I can't imagine why anyone would neglect it. Another idea
is further redundant information. I'm not sure whether I'll do this
@@ -1196,7 +1215,7 @@ extremely impressed by the sharing spirit that we had. We were doing
something that we hoped was useful and were happy if people could use
it. So when I developed the first EMACS, and people wanted to start
use it outside of MIT, I said that it belongs to the EMACS
-&ldquo;Commune&rdquo;, that in order to use EMACS you had to be a
+&ldquo;Commune,&rdquo; that in order to use EMACS you had to be a
member of the commune, and that meant that you had the responsibility
to contribute all the improvements that you made. All the
improvements to the original EMACS had to be sent back to me so that I
@@ -1259,11 +1278,11 @@ tries to pressure other people into helping. Whenever a user signs a
nondisclosure agreement he has essentially sold out his fellow users.
Instead of following the golden rule and saying, &ldquo;I like this
program, my neighbor would like the program, I want us both to have
-it&rdquo;, instead he said, &ldquo;Yeah, give it to me. To hell with
+it,&rdquo; instead he said, &ldquo;Yeah, give it to me. To hell with
my neighbor! I'll help you keep it away from my neighbor, just give
-it to me!&rdquo;, and that spirit is what does the spiritual harm.
+it to me!&rdquo; and that spirit is what does the spiritual harm.
That attitude of saying, &ldquo;To hell with my neighbors, give ME a
-copy&rdquo;.</p>
+copy.&rdquo;</p>
<p>After I ran into people saying they wouldn't let me have copies of
something, because they had signed some secrecy agreement, then when
@@ -1304,12 +1323,12 @@ other things that were what we wanted. We then got a much nicer
graphic printer, one of the first laser printers, but then the
software was supplied by Xerox, and we couldn't change it. They
wouldn't put in these features, and we couldn't, so we had to make do
-with things that &ldquo;half worked&rdquo;. And it was very
+with things that &ldquo;half worked.&rdquo; And it was very
frustrating to know that we were ready, willing and able to fix it,
but weren't permitted. We were sabotaged.</p>
<p>And then there are all the people who use computers and say that
-the computers are a mystery to them, they don't know they work. Well
+the computers are a mystery to them, they don't know [how] they work. Well
how can they possibly know? They can't read the programs they're
using. The only way people learn how programs should be written, or
how programs do what they do, is by reading the source code.</p>
@@ -1329,7 +1348,7 @@ really under the control of others. And a person who sees this
becomes in a certain way demoralized: &ldquo;It's no use trying to
change those things, they're always going to be bad. No point even
hassling it. I'll just put in my time and &hellip; when it's over
-I'll go away and try not to think about it any more&rdquo;. That kind
+I'll go away and try not to think about it any more.&rdquo; That kind
of spirit, that unenthusiasm is what results from not being permitted
to make things better when you have feelings of public spirit.</p>
@@ -1406,7 +1425,7 @@ happen, because someone believed he should own it.</p>
put forward two lines of argument for this. The first one is &ldquo;I
wrote it, it is a child of my spirit, my heart, my soul is in this.
How can anyone take it away from me? Wherever it goes it's mine,
-mine, MINE!!&rdquo;. Well, it's sort of strange that most of them
+mine, MINE!!&rdquo; Well, it's sort of strange that most of them
signs agreements saying it belongs to the company they work for.</p>
<p>So I believe this is one of the things you can easily talk yourself
@@ -1415,12 +1434,12 @@ yourself it doesn't matter at all.</p>
<p>Usually, these people use this argument to demand the right to
control even how people can change a program. They say: &ldquo;Nobody
-should be able to mess up my work of art&rdquo;. Well, imagine that
+should be able to mess up my work of art.&rdquo; Well, imagine that
the person who invented a dish that you plan to cook had the right to
control how you can cook it, because it's his work of art. You want
to leave out the salt, but he says &ldquo;Oh, no. I designed this
dish, and it has to have this much salt!&rdquo; &ldquo;But my doctor
-says it's not safe for me to eat salt. What can I do?&rdquo;.</p>
+says it's not safe for me to eat salt. What can I do?&rdquo;</p>
<p>Clearly, the person who is using the program is much closer to the
event. The use of the program affects him very directly, whereas it
@@ -1439,11 +1458,11 @@ fashion&rdquo; on the one hand, and to say &ldquo;We need to have the
current system, you need to get rich by programming&rdquo; on the
other hand. There's a big difference between just making a living
wage and making the kind of money programmers, at least in the US make
-nowadays. They always say: &ldquo;How will I eat?&rdquo;, but the
-problem is not really how &ldquo;Will he eat?&rdquo;, but &ldquo;How
-will he eat sushi?&rdquo;. &ldquo;How will I have a roof over my
-head?&rdquo;, but the real problem is &ldquo;How can he afford a
-condo?&rdquo;.</p>
+nowadays. They always say: &ldquo;How will I eat?&rdquo; but the
+problem is not really how &ldquo;Will he eat?&rdquo; but &ldquo;How
+will he eat sushi?&rdquo; &ldquo;How will I have a roof over my
+head?&rdquo; but the real problem is &ldquo;How can he afford a
+condo?&rdquo;</p>
<p>The current system were chosen by the people who invest in software
development, because it gives them the possibility of making the most
@@ -1490,7 +1509,7 @@ less. It is barely enough to live on, it's difficult. But there are
lots of them trying to do that. And then, somehow when it gets
generally possible to get very well paid to do something, all those
people disappear, and people start saying &ldquo;nobody will do it
-unless they get paid that well&rdquo;.</p>
+unless they get paid that well.&rdquo;</p>
<p>And I saw this happen in the field of programming. The very same
people who used to work at the AI lab and get payed very little and
@@ -1532,21 +1551,21 @@ course. They would go up and say: &ldquo;A lot of places around here
have been burning down lately. You wouldn't want your place to burn
down, would you? Well we can protect you from fires, you just have to
pay us a thousand dollars a month, and we'll make sure you don't have
-a fire here&rdquo;. And this was called &ldquo;the protection
-racket&rdquo;. Now we have something where a person says &ldquo;You
+a fire here.&rdquo; And this was called &ldquo;the protection
+racket.&rdquo; Now we have something where a person says &ldquo;You
got a nice computer there, and you've got some programs there that
you're using. Well, if you don't want those programs to disappear, if
you don't want the police to come after you, you better pay me a
thousand dollars, and I'll give you a copy of this program with a
-license&rdquo;, and this is called &ldquo;the software protection
-racket&rdquo;.</p>
+license,&rdquo; and this is called &ldquo;the software protection
+racket.&rdquo;</p>
<p>Really all they're doing is interfering with everybody else doing
what needs to be done, but they're pretending as much to them selves
as to the rest of us, that they are providing a useful function.
Well, what I hope is that when that software Mafia guy comes up and
says, &ldquo;You want those programs to disappear on your
-computer?&rdquo;, the user can say &ldquo;I'm not afraid of you any
+computer?&rdquo; the user can say &ldquo;I'm not afraid of you any
more. I have this free GNU software, and there's nothing you can do
to me now.&rdquo;</p>
@@ -1586,11 +1605,11 @@ do the right thing, which is to make free software.</p>
<p><strong>[After this RMS answered questions for about an hour. I
have only included a very few of the questions and answers in this
version. The tape was bad, and I didn't have the time to do a proper
-job on all of it]
+job on all of it.]
</strong></p>
<dl>
-<dt><b>Q</b>: Has anyone tried to make problems for you?</dt>
+<dt><b>Q:</b> Has anyone tried to make problems for you?</dt>
<dd><p><b>A:</b> The only time anyone has tried to make a problem for me
was those owners, so called, self-styled owners of Gosling Emacs.
@@ -1601,8 +1620,8 @@ certain thoughts and not think of others. Much of the terminology
current in the field was chosen by the self-styled software owners to
try to encourage you to try to make you see software as similar to
material objects that are property, and overlook the differences. The
-most flagrant example of this is the term &ldquo;pirate&rdquo;.
-Please refuse to use to use the term &ldquo;pirate&rdquo; to describe
+most flagrant example of this is the term &ldquo;pirate.&rdquo;
+Please refuse to use the term &ldquo;pirate&rdquo; to describe
somebody who wishes to share software with his neighbor like a good
citizen.</p>
@@ -1629,7 +1648,7 @@ invented, and made sense morally because of a technological change.
Now the reverse change is happening. Individual copying of
information is becoming better and better, and we can see that the
ultimate progress of technology is to make it possible to copy any
-kind of information. [break due to turning of tape]</p>
+kind of information. <span>[break due to turning of tape]</span></p>
<p>Thus we are back in the same situation as in the ancient world
where copyright did not make sense.</p>
@@ -1652,20 +1671,20 @@ object, you can come and take away this chair, but you couldn't come
and copy it. And if you took away the chair, it wouldn't be producing
anything, so there's no excuse. I somebody says: &ldquo;I did the work
to make this one chair, and only one person can have this chair, it
-might as well be me&rdquo;, we might as well say: &ldquo;Yeah, that makes
-sense&rdquo;. When a person says: &ldquo;I carved the bits on this
+might as well be me,&rdquo; we might as well say: &ldquo;Yeah, that makes
+sense.&rdquo; When a person says: &ldquo;I carved the bits on this
disk, only one person can have this disk, so don't you dare take it
-away from me&rdquo;, well that also make sense. If only one person is
+away from me,&rdquo; well that also make sense. If only one person is
going to have the disk, it might as well be the guy who owns that
disk.</p>
<p>But when somebody else comes up and says: &ldquo;I'm not going to
hurt your disk, I'm just gonna magically make another one just like it
and then I'll take it away and then you can go on using this disk just
-the same as before&rdquo;, well, it's the same as if somebody said:
+the same as before,&rdquo; well, it's the same as if somebody said:
&ldquo;I've got a magic chair copier. You can keep on enjoying your
chair, sitting in it, having it always there when you want it, but
-I'll have a chair too&rdquo;. That's good.</p>
+I'll have a chair too.&rdquo; That's good.</p>
<p>If people don't have to build, they can just snap their fingers and
duplicate them, that's wonderful. But this change in technology
@@ -1689,12 +1708,12 @@ benefit of the change in technology, to universal machines, but they
don't want the public to get that benefit.</p>
<p>Essentially they are trying to preserve the &ldquo;material object
-age&rdquo;, but it's gone, and we should get our ideas of right and
+age,&rdquo; but it's gone, and we should get our ideas of right and
wrong in sync with the actual facts of the world we live in.</p>
</dd>
-<dt><b>Q</b>: So it boils down to ownership of information. Do you
-think there are any instances where, your opinion, it's right to own
+<dt><b>Q:</b> So it boils down to ownership of information. Do you
+think there are any instances where, [in] your opinion, it's right to own
information?</dt>
<dd><p><b>A:</b> With information that's not generally useful, or is of a
@@ -1710,10 +1729,11 @@ use or enjoy, and that will be used and enjoyed more the more people
who have it, always we should encourage the copying.</p>
</dd>
</dl>
+</div>
</div><!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.html" -->
-<div id="footer">
+<div id="footer" role="contentinfo">
<div class="unprintable">
<p>Please send general FSF &amp; GNU inquiries to
@@ -1731,13 +1751,13 @@ to <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
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
+ <p>For information on coordinating and contributing 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
+README</a> for information on coordinating and contributing translations
of this article.</p>
</div>
@@ -1759,7 +1779,7 @@ of this article.</p>
Information document, www.gnu.org/prep/maintain. -->
<p>
-Copyright &copy; 1987, 2009, 2010, 2020 Richard Stallman and Bjrn Remseth
+Copyright &copy; 1987, 2022 Richard Stallman and Bjrn Remseth
</p>
<p>
Permission is granted to make and distribute verbatim copies of this
@@ -1770,10 +1790,10 @@ transcript as long as the copyright and this permission notice appear.
<p class="unprintable">Updated:
<!-- timestamp start -->
-$Date: 2020/07/01 15:25:23 $
+$Date: 2022/06/10 16:48:04 $
<!-- timestamp end -->
</p>
</div>
-</div>
+</div><!-- for class="inner", starts in the banner include -->
</body>
</html>