diff options
Diffstat (limited to 'talermerchantdemos/blog/articles/en/stallman-kth.html')
-rw-r--r-- | talermerchantdemos/blog/articles/en/stallman-kth.html | 296 |
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ögskolan (Royal Institute of -Technology))<br /> -Stockholm, Sweden</em></p> -<p><em> -Arranged by the student society<br /> -“Datorföreningen Stacken”<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ögskolan</i> (Royal Institute of Technology) in +Stockholm, Sweden, arranged by the student society <i>Datorföreningen +Stacken</i> on 30 October 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 ‘doing -violence to the original speech’.]</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: “Janne, han trenger ingen -mike” (translation: “Janne, he doesn't need a -mike”)). 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: “<i>Janne, han trenger ingen +mike.</i>” (Translation: “Janne, he doesn't need a +mike.”)]</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: “This room is -Mine, I can lock it, to hell with everyone else”, and that is +Mine, I can lock it, to hell with everyone else,” 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 -“take these back and bring us some new ones”.</p> +“take these back and bring us some new ones.”</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, “we're going to have a disaster, -we must have commercial software”, and they said “we can -expect the company to maintain it”. It proved that they were +we must have commercial software,” and they said “we can +expect the company to maintain it.” 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 “so-and-so must be reading your mail, can it be that mail files aren't properly protected on your system?” “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”. +other's mail so we can find people like you and help them.” 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: “There was another attempt to seize power. So far the -aristocratic forces have been defeated—Radio Free OZ”. +aristocratic forces have been defeated—Radio Free OZ.” Later I discovered that “Radio Free OZ” 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 “empty -password”, and on systems where that isn't allowed, or where +password,” 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 “yes that's the idea, somebody might +able to log in as me, I say “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”.</p> +that they aren't screwed by security.”</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 “tourism”. Now “tourism” is a very old +called “tourism.” Now “tourism” 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 … [At this point RMS is interrupted by -tremendous applause] … for.</p> +machine as myself … <span>[At this point RMS is interrupted by +tremendous applause.]</span> … 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 “Gnu's Not -Unix”. The recursive acronym is a very old tradition among the +Unix.” 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: “Tint Is Not Teco”, and later on +called TINT, which means: “Tint Is Not Teco,” and later on it went through names such as “SINE” for “SINE Is -Not Emacs”, and FINE for “Fine Is Not Emacs”, and -EINE for “Eine Is Not Emacs”, and ZWEI for “Zwei Was -Eine Initially”, and ultimately now arrives at GNU.</p> +Not Emacs,” and FINE for “Fine Is Not Emacs,” and +EINE for “Eine Is Not Emacs,” and ZWEI for “Zwei Was +Eine Initially,” 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 “the free university compiler kit”, and I +was called “the free university compiler kit,” 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 “No, the university might be -free, but the software they develop isn't”, but he then said +to the GNU Project, and he said “No, the university might be +free, but the software they develop isn't,” 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 “off-color PASCAL”.</p> +which the authors say means “off-color PASCAL.”</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 “string” in that language was a -parameterized type; you could say “string(n)” 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 -“string”, 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 -“forward” 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: “Give me the object of type FLOAT or DOUBLE at this address” 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 “value -history”. You can refer to any element in the history by its +history.” 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 “PRINT -*$.next”, which says: “Get the next field out of the last +pointer to another one, you can do something like +<code>PRINT *$.next</code>, which says: “Get +the next field out of the last thing you showed me, and then display the structure that points -at”. And you can repeat that command, and each time you'll see +at.” 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 “stop when you get to this point in the program, but only if -a certain expression is true”. The variables in the debugger +a certain expression is true.” 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 -“$foo+=5” to increment the value of “$foo” by -five, or just “$foo++” 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 -“$foo--==0”. 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 “Print” +<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 -“Define Mumble”, and then you give some lines of commands -and then you say “end”. And now there is defined a -“Mumble” 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 “help” 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=<some number></pre> +<pre><code>SET $PC=<some number></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+=<something></pre> +<pre><code>SET $SP+=<something></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 “RETURN” command. You select a stack frame and you -say “RETURN”, 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: “reg” always has an integer, -because registers are numbered, but “+” 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 “tail” 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 “FOO” it +the end of it. Thus if you give the filename <code>FOO</code> it means “Search the versions that exists for FOO and take the -latest one”. But if you say “FOO.” it means -“use exactly the name FOO and none other”. If you say -“FOO.3.” it says “use exactly the name FOO.3 ” +latest one.” But if you say <code>FOO.</code> it means +“use exactly the name FOO and none other.” If you say +<code>FOO.3.</code> it says “use exactly the name FOO.3” which of course is version three of FOO and none other. On output, if -you just say “FOO”, it will eventually create a new -version of “FOO”, but if you say “FOO.” it -will write a file named exactly “FOO”.</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 “star matching”, +<p>And this idea can be connected up to “star matching,” 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 “*”, 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 “*.” 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 -“*.c” and “*.c.” this [the first] would give -you essentially versionless references to all the “.c” +<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 … well this actually wouldn't, you'd have to say -“*.c.*.”. 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 “halt” at any time without ever +that you can press “<kbd>halt</kbd>” 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 -“Commune”, that in order to use EMACS you had to be a +“Commune,” 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, “I like this program, my neighbor would like the program, I want us both to have -it”, instead he said, “Yeah, give it to me. To hell with +it,” instead he said, “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!”, and that spirit is what does the spiritual harm. +it to me!” and that spirit is what does the spiritual harm. That attitude of saying, “To hell with my neighbors, give ME a -copy”.</p> +copy.”</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 “half worked”. And it was very +with things that “half worked.” 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: “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 … when it's over -I'll go away and try not to think about it any more”. That kind +I'll go away and try not to think about it any more.” 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 “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!!”. Well, it's sort of strange that most of them +mine, MINE!!” 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: “Nobody -should be able to mess up my work of art”. Well, imagine that +should be able to mess up my work of art.” 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 “Oh, no. I designed this dish, and it has to have this much salt!” “But my doctor -says it's not safe for me to eat salt. What can I do?”.</p> +says it's not safe for me to eat salt. What can I do?”</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” on the one hand, and to say “We need to have the current system, you need to get rich by programming” 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: “How will I eat?”, but the -problem is not really how “Will he eat?”, but “How -will he eat sushi?”. “How will I have a roof over my -head?”, but the real problem is “How can he afford a -condo?”.</p> +nowadays. They always say: “How will I eat?” but the +problem is not really how “Will he eat?” but “How +will he eat sushi?” “How will I have a roof over my +head?” but the real problem is “How can he afford a +condo?”</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 “nobody will do it -unless they get paid that well”.</p> +unless they get paid that well.”</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: “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”. And this was called “the protection -racket”. Now we have something where a person says “You +a fire here.” And this was called “the protection +racket.” Now we have something where a person says “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”, and this is called “the software protection -racket”.</p> +license,” and this is called “the software protection +racket.”</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, “You want those programs to disappear on your -computer?”, the user can say “I'm not afraid of you any +computer?” the user can say “I'm not afraid of you any more. I have this free GNU software, and there's nothing you can do to me now.”</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 “pirate”. -Please refuse to use to use the term “pirate” to describe +most flagrant example of this is the term “pirate.” +Please refuse to use the term “pirate” 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: “I did the work to make this one chair, and only one person can have this chair, it -might as well be me”, we might as well say: “Yeah, that makes -sense”. When a person says: “I carved the bits on this +might as well be me,” we might as well say: “Yeah, that makes +sense.” When a person says: “I carved the bits on this disk, only one person can have this disk, so don't you dare take it -away from me”, well that also make sense. If only one person is +away from me,” 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: “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”, well, it's the same as if somebody said: +the same as before,” well, it's the same as if somebody said: “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”. That's good.</p> +I'll have a chair too.” 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 “material object -age”, but it's gone, and we should get our ideas of right and +age,” 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 & GNU inquiries to @@ -1731,13 +1751,13 @@ to <a href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> to <a href="mailto:web-translators@gnu.org"> <web-translators@gnu.org></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 © 1987, 2009, 2010, 2020 Richard Stallman and Bjrn Remseth +Copyright © 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> |