taler-merchant-demos

Python-based Frontends for the Demonstration Web site
Log | Files | Refs | Submodules | README | LICENSE

stallman-kth.html (103205B)


      1 <!--#include virtual="/server/header.html" -->
      2 <!-- Parent-Version: 1.96 -->
      3 <!-- This page is derived from /server/standards/boilerplate.html -->
      4 <!--#set var="TAGS" value="speeches" -->
      5 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
      6 <title>RMS lecture at KTH (Sweden), 1986
      7 - GNU Project - Free Software Foundation</title>
      8 <style type="text/css" media="screen"><!--
      9 #content span { font-style: italic; color: #505050; }
     10 --></style>
     11 <!--#include virtual="/philosophy/po/stallman-kth.translist" -->
     12 <!--#include virtual="/server/banner.html" -->
     13 <!--#include virtual="/philosophy/ph-breadcrumb.html" -->
     14 <!--GNUN: OUT-OF-DATE NOTICE-->
     15 <!--#include virtual="/server/top-addendum.html" -->
     16 <div class="article reduced-width">
     17 <h2>RMS lecture at KTH (Sweden), 1986</h2>
     18 
     19 <div class="infobox">
     20 <p>Transcript of Richard Stallman's speech at the <i>Kungliga Tekniska
     21 H&ouml;gskolan</i> (Royal Institute of Technology) in
     22 Stockholm, Sweden, arranged by the student society <i>Datorf&ouml;reningen
     23 Stacken</i> on 30&nbsp;October&nbsp;1986.
     24 </p>
     25 </div>
     26 <hr class="thin" />
     27 
     28 <div class="introduction">
     29 <p><i>Note: This is a slightly edited transcript of the talk.
     30 As such it contains false starts, as well as locutions that are
     31 natural in spoken English but look strange in print.  It is not clear
     32 how to correct them to written English style without doing
     33 violence to the original speech.</i></p>
     34 </div>
     35 
     36 <p><b>Rms:</b> It seems that there are three things that people would like me to
     37 talk about.  On the one hand I thought that the best thing to talk
     38 about here for a club of hackers, was what it was like at the
     39 <abbr title="Massachusetts Institute of Technology">MIT</abbr>
     40 in the old days.  What made the Artificial Intelligence Lab such a
     41 special place.  But people tell me also that since these are totally
     42 different people from the ones who were at the conference Monday and
     43 Tuesday that I ought to talk about what's going on in the GNU Project
     44 and that I should talk about why software and information can not be
     45 owned, which means three talks in all, and since two of those subjects
     46 each took an hour it means we're in for a rather long time.  So I had
     47 the idea that perhaps I could split it in to three parts, and people
     48 could go outside for the parts they are not interested in, and that
     49 then when I come to the end of a part I can say it's the end and
     50 people can go out and I can send Jan Rynning out to bring in the other
     51 people.</p>
     52 
     53 <p><span>[Someone else says: &ldquo;<i>Janne, han trenger ingen
     54 mike.</i>&rdquo; (Translation: &ldquo;Janne, he doesn't need a
     55 mike.&rdquo;)]</span></p>
     56 
     57 <p>Jan, are you prepared to go running out to fetch the
     58 other people?</p>
     59 
     60 <p><b>Jmr:</b> I am looking for a microphone, and someone tells
     61 me it is inside this locked box.</p>
     62 
     63 <p><b>Rms:</b> Now in the old days at the AI
     64 lab we would have taken a sledgehammer and cracked it open, and the
     65 broken door would be a lesson to whoever had dared to lock up
     66 something that people needed to use.  Luckily however I used to study
     67 Bulgarian singing, so I have no trouble managing without a
     68 microphone.</p>
     69 
     70 <p>Anyway, should I set up this system to notify you about the parts
     71 of the talk, or do you just like to sit through all of it?  <span>[Answer:
     72 Yeaaah]</span></p>
     73 
     74 <p>When I started programming, it was 1969, and I did it in an IBM
     75 laboratory in New York.  After that I went to a school with a computer
     76 science department that was probably like most of them.  There were
     77 some professors that were in charge of what was supposed to be done,
     78 and there were people who decided who could use what.  There was a
     79 shortage of terminals for most people, but a lot of the professors had
     80 terminals of their own in their offices, which was wasteful, but
     81 typical of their attitude. When I visited the Artificial Intelligence
     82 lab at MIT I found a spirit that was refreshingly different from that.
     83 For example: there, the terminals was thought of as belonging to
     84 everyone, and professors locked them up in their offices on pain of
     85 finding their doors broken down.  I was actually shown a cart with a
     86 big block of iron on it, that had been used to break down the door of
     87 one professors office, when he had the gall to lock up a terminal.
     88 There were very few terminals in those days, there was probably
     89 something like five display terminals for the system, so if one of
     90 them was locked up, it was a considerable disaster.</p>
     91 
     92 <p>In the years that followed I was inspired by that ideas, and many
     93 times I would climb over ceilings or underneath floors to unlock rooms
     94 that had machines in them that people needed to use, and I would
     95 usually leave behind a note explaining to the people that they
     96 shouldn't be so selfish as to lock the door.  The people who locked
     97 the door were basically considering only themselves.  They had a
     98 reason of course, there was something they thought might get stolen
     99 and they wanted to lock it up, but they didn't care about the other
    100 people they were affecting by locking up other things in the same
    101 room.  Almost every time this happened, once I brought it to their
    102 attention, that it was not up to them alone whether that room should
    103 be locked, they were able to find a compromise solution: some other
    104 place to put the things they were worried about, a desk they could
    105 lock, another little room.  But the point is that people usually don't
    106 bother to think about that.  They have the idea: &ldquo;This room is
    107 Mine, I can lock it, to hell with everyone else,&rdquo; and that is
    108 exactly the spirit that we must teach them not to have.</p>
    109 
    110 <p>But this spirit of unlocking doors wasn't an isolated thing, it was
    111 part of an entire way of life.  The hackers at the AI lab were really
    112 enthusiastic about writing good programs, and interesting programs.
    113 And it was because they were so eager to get more work done, that they
    114 wouldn't put up with having the terminals locked up, or lots of other
    115 things that people could do to obstruct useful work.  The differences
    116 between people with high morale who really care about what they're
    117 trying to do, and people who think of it as just a job.  If it's just
    118 a job, who cares if the people who hired you are so stupid they make
    119 you sit and wait, it's their time, their money but not much gets done
    120 in a place like that, and it's no fun to be in a place like that.</p>
    121 
    122 <p>Another thing that we didn't have at the AI lab was file
    123 protection.  There was no security at all on the computer.  And we
    124 very consciously wanted it that way.  The hackers who wrote the
    125 Incompatible Timesharing System decided that file protection was
    126 usually used by a self-styled system manager to get power over
    127 everyone else.  They didn't want anyone to be able to get power over
    128 them that way, so they didn't implement that kind of a feature.  The
    129 result was, that whenever something in the system was broken, you
    130 could always fix it.  You never had to sit there in frustration
    131 because there was NO WAY, because you knew exactly what's wrong, and
    132 somebody had decided they didn't trust you to do it.  You don't have
    133 to give up and go home, waiting for someone to come in in the morning
    134 and fix the system when you know ten times as well as he does what
    135 needs to be done.</p>
    136 
    137 <p>And we didn't let any professors or bosses decide what work was
    138 going to be done either, because our job was to improve the system!
    139 We talked to the users of course; if you don't do that you can't tell
    140 what's needed.  But after doing that, we were the ones best able to
    141 see what kind of improvements were feasible, and we were always
    142 talking to each other about how we'd like to see the system changed,
    143 and what sort of neat ideas we'd seen in other systems and might be
    144 able to use.  So the result is that we had a smoothly functioning
    145 anarchy, and after my experience there, I'm convinced that that is the
    146 best way for people to live.</p>
    147 
    148 <p>Unfortunately the AI lab in that form was destroyed.  For many
    149 years we were afraid the AI lab would be destroyed by another lab at
    150 MIT, the Lab for Computer Science, whose director was a sort of empire
    151 builder type, doing everything he could to get himself promoted within
    152 MIT, and make his organization bigger, and he kept trying to cause the
    153 AI lab to be made a part of his lab, and nobody wanted to do things
    154 his way because he believed that people should obey orders and things
    155 like that.</p>
    156 
    157 <p>But that danger we managed to defend against, only to be destroyed
    158 by something we had never anticipated, and that was commercialism.
    159 Around the early 80's the hackers suddenly found that there was now
    160 commercial interest in what they were doing.  It was possible to get
    161 rich by working at a private company.  All that was necessary was to
    162 stop sharing their work with the rest of the world and destroy the
    163 MIT-AI lab, and this is what they did despite all the efforts I could
    164 make to prevent them.</p>
    165 
    166 <p>Essentially all the competent programmers except for me, at the AI
    167 lab were hired away, and this caused more than a momentary change, it
    168 caused a permanent transformation because it broke the continuity of
    169 the culture of hackers.  New hackers were always attracted by the old
    170 hackers; there were the most fun computers and the people doing the
    171 most interesting things, and also a spirit which was a great deal of
    172 fun to be part of.  Once these things were gone, there is nothing to
    173 recommend the place to anyone new, so new people stopped arriving.
    174 There was no-one they could be inspired by, no-one that they could
    175 learn those traditions from.  In addition no-one to learn how to do
    176 good programming from.  With just a bunch of professors and graduate
    177 students, who really don't know how to make a program work, you can't
    178 learn to make good programs work.  So the MIT AI lab that I loved is
    179 gone and after a couple of years of fighting against the people who
    180 did it to try to punish them for it I decided that I should dedicate
    181 my self to try to create a new community with that spirit.</p>
    182 
    183 <p>But one of the problems I had to face was the problem of
    184 <a href="/philosophy/categories.html#ProprietarySoftware">proprietary
    185 software</a>.  For example one thing that happened at the lab, after
    186 the hackers left, was that the machines and the software that we had
    187 developed could no longer be maintained.  The software of course
    188 worked, and it continued to work if nobody changed it, but the
    189 machines did not.  The machines would break and there would be no-one
    190 who could fix them and eventually they would be thrown out. In the old
    191 days, yes we had service contracts for the machines, but it was
    192 essentially a joke.  That was a way of getting parts after the expert
    193 hackers from the AI lab fixed the problem.  Because if you let the
    194 field-service person fix it it would take them days, and you didn't
    195 want to do that, you wanted it to work.  So, the people who knew how
    196 to do those things would just go and fix it quickly, and since they
    197 were ten times as competent as any field service person, they could do
    198 a much better job.  And then they would have the ruined boards, they
    199 would just leave them there and tell the field service person
    200 &ldquo;take these back and bring us some new ones.&rdquo;</p>
    201 
    202 <p>In the real old days our hackers used to modify the machines that
    203 came from Digital also.  For example, they built paging-boxes to put
    204 on the PDP-10's.  Nowadays I think there are some people here [in
    205 Stockholm] who do such things too, but it was a pretty unusual thing in
    206 those days.  And the really old days, the beginning of the 1960's
    207 people used to modify computers adding all sorts of new instructions
    208 and new fancy timesharing features, so that the PDP-1 at MIT by the
    209 time it was retired in the mid-seventies had something like twice as
    210 many instructions as it had when it was delivered by Digital in the
    211 early sixties, and it had special hardware scheduler assisting
    212 features and strange memory-mapping features making it possible to
    213 assign individual hardware devices to particular timesharing jobs and
    214 lots of things that I hardly really know about.  I think they also
    215 built in some kind of extended addressing modes they added index
    216 registers and indirect addressing, and they turned it essentially from
    217 a weak machine into a semi-reasonable one.</p>
    218 
    219 <p>I guess it is one of the disadvantages of VLSI that it's no longer
    220 so feasible to add instructions to your machines.</p>
    221 
    222 <p>The PDP-1 also had a very interesting feature, which is that it was
    223 possible to write interesting programs in very few instructions.  Fewer than
    224 any other machine since then.  I believe for example that the famous
    225 display hack &ldquo;munching squares&rdquo; which made squares that
    226 get bigger and break up into lots of smaller squares which gets bigger
    227 and break up into smaller squares.  That was written in something like
    228 five instructions on the PDP-1.  And many other beautiful display
    229 programs could be written in few instructions.</p>
    230 
    231 <p>So, that was the AI lab.  But what was the culture of hackers like
    232 aside from their anarchism?  In the days of the PDP-1 only one person
    233 could use the machine, at the beginning at least.  Several years later
    234 they wrote a timesharing system, and they added lots of hardware for
    235 it.  But in the beginning you just had to sign up for some time.  Now
    236 of course the professors and the students working on official projects
    237 would always come in during the day.  So, the people who wanted to get
    238 lots of time would sign up for time at night when there were less
    239 competition, and this created the custom of hackers working at night.
    240 Even when there was timesharing it would still be easier to get time,
    241 you could get more cycles at night, because there were fewer users.
    242 So people who wanted to get lots of work done, would still come in at
    243 night.  But by then it began to be something else because you weren't
    244 alone, there were a few other hackers there too, and so it became a
    245 social phenomenon.  During the daytime if you came in, you could
    246 expect to find professors and students who didn't really love the
    247 machine, whereas if during the night you came in you would find
    248 hackers.  Therefore hackers came in at night to be with their culture.
    249 And they developed other traditions such as getting Chinese food at
    250 three in the morning.  And I remember many sunrises seen from a car
    251 coming back from Chinatown.  It was actually a very beautiful thing to
    252 see a sunrise, cause' that's such a calm time of day.  It's a
    253 wonderful time of day to get ready to go to bed.  It's so nice to walk
    254 home with the light just brightening and the birds starting to chirp,
    255 you can get a real feeling of gentle satisfaction, of tranquility
    256 about the work that you have done that night.</p>
    257 
    258 <p>Another tradition that we began was that of having places to sleep
    259 at the lab.  Ever since I first was there, there was always at least
    260 one bed at the lab.  And I may have done a little bit more living at
    261 the lab than most people because every year of two for some reason or
    262 other I'd have no apartment and I would spend a few months living at
    263 the lab.  And I've always found it very comfortable, as well as nice
    264 and cool in the summer.  But it was not at all uncommon to find people
    265 falling asleep at the lab, again because of their enthusiasm; you stay
    266 up as long as you possibly can hacking, because you just don't want to
    267 stop.  And then when you're completely exhausted, you climb over to
    268 the nearest soft horizontal surface.  A very informal atmosphere.</p>
    269 
    270 <p>But when the hackers all left the lab this caused a demographic
    271 change, because the professors and the students who didn't really love
    272 the machine were just as numerous as before, so they were now the
    273 dominant party, and they were very scared.  Without hackers to
    274 maintain the system, they said, &ldquo;we're going to have a disaster,
    275 we must have commercial software,&rdquo; and they said &ldquo;we can
    276 expect the company to maintain it.&rdquo;  It proved that they were
    277 utterly wrong, but that's what they did.</p>
    278 
    279 <p>That was exactly when a new KL-10 system was supposed to arrive,
    280 and the question was, would it run the Incompatible Timesharing System
    281 or would it run Digital's Twenex system.  Once the hackers were gone
    282 who probably would have supported using ITS, the academic types chose
    283 to run the commercial software, and this had several immediate
    284 effects.  Some of them weren't actually so immediate but they followed
    285 inevitably as anyone who thought about it would see.</p>
    286 
    287 <p>One thing was that that software was much more poorly written, and
    288 harder to understand; therefore making it harder for people to make
    289 the changes that were in fact needed.  Another was, that that software
    290 came with security, which had the inevitable effect of causing people
    291 to cooperate with each other less.  In the old days on ITS it was
    292 considered desirable that everyone could look at any file, change any
    293 file, because we had reasons to.  I remember one interesting scandal
    294 where somebody sent a request for help in using Macsyma.  Macsyma is a
    295 symbolic algebra program that was developed at MIT.  He sent to one of
    296 the people working on it a request for some help, and he got an answer
    297 a few hours later from somebody else.  He was horrified, he sent a
    298 message &ldquo;so-and-so must be reading your mail, can it be that
    299 mail files aren't properly protected on your system?&rdquo; &ldquo;Of
    300 course, no file is protected on our system.  What's the problem?  You
    301 got your answer sooner; why are you unhappy?  Of course we read each
    302 other's mail so we can find people like you and help them.&rdquo;
    303 Some people just don't know when they're well off.</p>
    304 
    305 <p>But of course Twenex not only has security, and by default turns on
    306 security, but it's also designed with the assumption that security is
    307 in use.  So there are lots of things that are very easy to do that can
    308 cause a lot of damage, and the only thing that would stop you from
    309 doing them by accident, is security.  On ITS we evolved other means of
    310 discouraging people from doing those things by accident, but on Twenex
    311 you didn't have them because they assumed that there was going to be
    312 be strict security in effect and only the bosses were going to have
    313 the power to do them.  So they didn't put in any other mechanism to
    314 make it hard to do by accident.  The result of this is that you can't
    315 just take Twenex and turn off the security and have what you'd really
    316 like to have, and there were no longer the hackers to make the changes
    317 to put in those other mechanisms, so people were forced to use the
    318 security.  And about six months after the machine was there they
    319 started having some coups d'etat.  That is, at first we had the
    320 assumption that everyone who worked for the lab was going to have the
    321 wheel bit which gave full powers to override all security measures,
    322 but some days you'd come in some afternoon and find out that the wheel
    323 bits of just about everybody had been turned off.</p>
    324 
    325 <p>When I found out about those, I overthrew them.  The first time, I
    326 happened to know the password of one of the people who was included
    327 among the elite, so I was able to use that to turn everyone back on.
    328 The second time he had changed his password, he had now changed his
    329 sympathies, he was now part of the aristocratic party.  So, I had to
    330 bring the machine down and use non-timeshared DDT to poke around.  I
    331 poked around in the monitor for a while, and eventually figured out
    332 how to get it to load itself in and let me patch it, so that I could
    333 turn off password checking and then I turned back on a whole bunch of
    334 people's wheel bits and posted a system message.  I have to explain
    335 that the name of this machine was OZ, so I posted a system message
    336 saying: &ldquo;There was another attempt to seize power.  So far the
    337 aristocratic forces have been defeated&mdash;Radio Free OZ.&rdquo;
    338 Later I discovered that &ldquo;Radio Free OZ&rdquo; is one of the
    339 things used by Firesign Theater.  I didn't know that at the time.</p>
    340 
    341 <p>But gradually things got worse and worse, it's just the nature of
    342 the way the system had been constructed forced people to demand more
    343 and more security.  Until eventually I was forced to stop using the
    344 machine, because I refused to have a password that was secret.  Ever
    345 since passwords first appeared at the MIT-AI lab I had come to the
    346 conclusion that to stand up for my belief, to follow my belief that
    347 there should be no passwords, I should always make sure to have a
    348 password that is as obvious as possible and I should tell everyone
    349 what it is.  Because I don't believe that it's really desirable to
    350 have security on a computer, I shouldn't be willing to help uphold the
    351 security regime.  On the systems that permit it I use the &ldquo;empty
    352 password,&rdquo; and on systems where that isn't allowed, or where
    353 that means you can't log in at all from other places, things like
    354 that, I use my login name as my password.  It's about as obvious as
    355 you can get.  And when people point out that this way people might be
    356 able to log in as me, I say &ldquo;yes that's the idea, somebody might
    357 have a need to get some data from this machine.  I want to make sure
    358 that they aren't screwed by security.&rdquo;</p>
    359 
    360 <p>And an other thing that I always do is I always turn of all
    361 protection on my directory and files, because from time to time I have
    362 useful programs stored there and if there's a bug I want people to be
    363 able to fix it.</p>
    364 
    365 <p>But that machine wasn't designed also to support the phenomenon
    366 called &ldquo;tourism.&rdquo;  Now &ldquo;tourism&rdquo; is a very old
    367 tradition at the AI lab, that went along with our other forms of
    368 anarchy, and that was that we'd let outsiders come and use the
    369 machine.  Now in the days where anybody could walk up to the machine
    370 and log in as anything he pleased this was automatic: if you came and
    371 visited, you could log in and you could work.  Later on we formalized
    372 this a little bit, as an accepted tradition specially when the Arpanet
    373 began and people started connecting to our machines from all over the
    374 country.  Now what we'd hope for was that these people would actually
    375 learn to program and they would start changing the operating system.
    376 If you say this to the system manager anywhere else he'd be horrified.
    377 If you'd suggest that any outsider might use the machine, he'll say
    378 &ldquo;But what if he starts changing our system programs?&rdquo; But
    379 for us, when an outsider started to change the system programs, that
    380 meant he was showing a real interest in becoming a contributing member
    381 of the community.  We would always encourage them to do this.
    382 Starting, of course, by writing new system utilities, small ones, and
    383 we would look over what they had done and correct it, but then they
    384 would move on to adding features to existing, large utilities.  And
    385 these are programs that have existed for ten years or perhaps fifteen
    386 years, growing piece by piece as one craftsman after an other added
    387 new features.</p>
    388 
    389 <p>Sort of like cities in France you might say, where you can see the
    390 extremely old buildings with additions made a few hundred years later
    391 all the way up to the present.  Where in the field of computing, a
    392 program that was started in 1965 is essentially that.  So we would
    393 always hope for tourists to become system maintainers, and perhaps
    394 then they would get hired, after they had already begun working on
    395 system programs and shown us that they were capable of doing good
    396 work.</p>
    397 
    398 <p>But the ITS machines had certain other features that helped prevent
    399 this from getting out of hand, one of these was the &ldquo;spy&rdquo;
    400 feature, where anybody could watch what anyone else was doing.  And of
    401 course tourists loved to spy, they think it's such a neat thing, it's
    402 a little bit naughty you see, but the result is that if any tourist
    403 starts doing anything that causes trouble there's always somebody else
    404 watching him.  So pretty soon his friends would get very mad because
    405 they would know that the continued existence of tourism depended on
    406 tourists being responsible.  So usually there would be somebody who
    407 would know who the guy was, and we'd be able to let him leave us
    408 alone. And if we couldn't, then what we would do was we would turn off
    409 access from certain places completely, for a while, and when we turned
    410 it back on, he would have gone away and forgotten about us.  And so it
    411 went on for years and years and years.</p>
    412 
    413 <p>But the Twenex system wasn't designed for this sort of thing, and
    414 eventually they wouldn't tolerate me with my password that everybody
    415 knew, tourists always logging in as me two or three at a time, so they
    416 started flushing my account.  And by that time I was mostly working on
    417 other machines anyway, so eventually I gave up and stopped ever
    418 turning it on again.  And that was that.  I haven't logged in on that
    419 machine as myself &hellip; <span>[At this point RMS is interrupted by
    420 tremendous applause.]</span> &hellip; for.</p>
    421 
    422 <p>But when they first got this Twenex system they had several changes
    423 in mind that they wanted to make.  Changes in the way security worked.
    424 They also wanted to have the machine on both the ARPA network and the
    425 MIT-chaos network, and it turns out that they were unable to do this,
    426 that they couldn't get anyone who was sufficiently competent to make
    427 such changes.  There was no longer talent available to do it, and it
    428 was to hard to change.  That system was much harder to understand,
    429 because it was to poorly written, and of course, Digital wouldn't do
    430 these things, so their ideas that a commercial system would
    431 essentially maintain itself, proved to be mistaken.  They had just as
    432 much need for system hackers, but they had no longer the means to
    433 entice system hackers.  And nowadays at MIT there are more people
    434 interested in hacking on ITS than there are interested in hacking on
    435 Twenex.</p>
    436 
    437 <p>And the final reason why this is so, is that Twenex can't be
    438 shared.  Twenex is a proprietary program and you're only allowed to
    439 have the sources if you keep them secret in certain nasty ways, and
    440 this gives them a bad flavor.  Unless a person is oblivious (which
    441 some people in computers are, there's some people who'll do anything
    442 if it's fun for them, and won't think for a minute whether they're
    443 cooperating with anyone else, but you'd have to be pretty oblivious to
    444 not to notice what a sad thing it is to work on a program like that,
    445 and that is a further discouragement).  And if that isn't enough there
    446 is the fact that every year or so they're going to give you a new
    447 release full of 50 000 additional lines of code all written by
    448 monkeys.  Because they generally follow the &ldquo;million monkeys
    449 typing, and eventually they'll come up with something useful&rdquo;
    450 school of system development.</p>
    451 
    452 <p>It was clear to me from what I saw happening to these proprietary
    453 systems that the only way we could have the spirit of the old AI lab
    454 was to have a free operating system.  To have a system made up of free
    455 software which could be shared with anyone.  So that we could invite
    456 everyone to join in improving it.  And that's what led up to the GNU
    457 project.  So I guess we've arrived at the second part of the talk.</p>
    458 
    459 <p>About three and a half year ago it was clear to me that I should
    460 start developing a <a href="/philosophy/free-sw.html">free
    461 software</a> system.  I could see two possible kinds of systems to
    462 develop: One: A LISP-machine-like system, essentially a system just
    463 like the MIT LISP machine system that had just been developed, except
    464 free, and running on general purpose hardware, not on special LISP
    465 machines.  And the other possibility was a more conventional operating
    466 system, and it was clear to me that if I made a conventional operating
    467 system, I should make it compatible with Unix, because that would make
    468 it easy for people all around to switch to it.  After a little while,
    469 I concluded I should do the latter and the reason was, that I saw that
    470 you can't have something really like the LISP machine system on
    471 general purpose hardware.  The LISP machine system uses special
    472 hardware plus special writable microcode to gain both good execution
    473 speed and robust detection of errors at runtime, specially data-type
    474 errors.  In order to make a LISP system run fast enough on ordinary
    475 hardware, you have to start making assumptions.  Assuming that a
    476 certain argument is the right type, and then if it isn't the system
    477 just crashes.</p>
    478 
    479 <p>Of course you can put in explicit checks, you can write a robust
    480 program if you want, but the fact is that you are going to get things
    481 like memory addressing errors when you feed a function an argument of
    482 the wrong type if you did NOT put in things to check for it.</p>
    483 
    484 <p>So the result is then that you need something running underneath
    485 the LISP system to you catch these errors, and give the user the
    486 ability to keep on running, and debug what happened to him.  Finally I
    487 concluded that if I was going to have to have a operating system at a
    488 lower level, I might as well make a good operating-system&mdash;that
    489 it was a choice between an operating system and the lisp, or just an
    490 operating system; therefore I should do the operating system first,
    491 and I should make it compatible with Unix.  Finally when I realized
    492 that I could use the most amusing word in the English language as a
    493 name for this system, it was clear which choice I had to make.  And
    494 that word is of course GNU, which stands for &ldquo;Gnu's Not
    495 Unix.&rdquo;  The recursive acronym is a very old tradition among the
    496 hacker community around MIT.  It started, I believe, with an editor
    497 called TINT, which means: &ldquo;Tint Is Not Teco,&rdquo; and later on
    498 it went through names such as &ldquo;SINE&rdquo; for &ldquo;SINE Is
    499 Not Emacs,&rdquo; and FINE for &ldquo;Fine Is Not Emacs,&rdquo; and
    500 EINE for &ldquo;Eine Is Not Emacs,&rdquo; and ZWEI for &ldquo;Zwei Was
    501 Eine Initially,&rdquo; and ultimately now arrives at GNU.</p>
    502 
    503 <p>I would say that since the time about two and a half years ago when
    504 I actually started working on GNU, I've done more than half of the
    505 work.  When I was getting ready to start working on the project, I
    506 first started looking around for what I could find already available
    507 free.  I found out about an interesting portable compiler system which
    508 was called &ldquo;the free university compiler kit,&rdquo; and I
    509 thought, with a name like that, perhaps I could have it.  So, I sent a
    510 message to the person who had developed it asking if he would give it
    511 to the GNU Project, and he said &ldquo;No, the university might be
    512 free, but the software they develop isn't,&rdquo; but he then said
    513 that he wanted to have a Unix compatible system too, and he wanted to
    514 write a sort of kernel for it, so why didn't I then write the
    515 utilities, and they could both be distributed with his proprietary
    516 compiler, to encourage people to buy that compiler.  And I thought
    517 that this was despicable and so I told him that my first project would
    518 be a compiler.</p>
    519 
    520 <p>I didn't really know much about optimizing compilers at the time,
    521 because I'd never worked on one.  But I got my hands on a compiler,
    522 that I was told at the time was free. It was a compiler called PASTEL,
    523 which the authors say means &ldquo;off-color PASCAL.&rdquo;</p>
    524 
    525 <p>Pastel was a very complicated language including features such as
    526 parametrized types and explicit type parameters and many complicated
    527 things.  The compiler was of course written in this language, and had
    528 many complicated features to optimize the use of these things.  For
    529 example: the type &ldquo;string&rdquo; in that language was a
    530 parameterized type; you could say <code>string(n)</code> if you
    531 wanted a string of a particular length; you could also just say
    532 <code>string</code>, and the parameter would be determined from the
    533 context.  Now, strings are very important, and it is necessary for a
    534 lot of constructs that use them to run fast, and this means that they
    535 had to have a lot of features to detect such things as: when the
    536 declared length of a string is an argument that is known to be
    537 constant throughout the function, to save to save the value and
    538 optimize the code they're going to produce, many complicated things.
    539 But I did get to see in this compiler how to do automatic register
    540 allocation, and some ideas about how to handle different sorts of
    541 machines.</p>
    542 
    543 <p>Well, since this compiler already compiled PASTEL, what I needed to
    544 do was add a front-end for C, which I did, and add a back-end for the
    545 68000 which I expected to be my first target machine.  But I ran into
    546 a serious problem.  Because the PASTEL language was defined not to
    547 require you to declare something before you used it, the declarations
    548 and uses could be in any order, in other words: Pascal's
    549 <code>forward</code> declaration was obsolete, because of this it was
    550 necessary to read in an entire program, and keep it in core, and then
    551 process it all at once.  The result was that the intermediate storage
    552 used in the compiler, the size of the memory needed, was proportional
    553 to the size of your file.  And this also included stack-space, you
    554 needed gigantic amounts of stack space, and what I found as a result
    555 was: that the 68000 system available to me could not run the compiler.
    556 Because it was a horrible version of Unix that gave you a limit of
    557 something like 16K words of stack, this despite the existence of six
    558 megabytes in the machine, you could only have 16Kw of stack or
    559 something like that.  And of course to generate its conflict matrix to
    560 see which temporary values conflicted, or was alive at the same time
    561 as which others, it needed a quadratic matrix of bits, and that for
    562 large functions that would get it to hundreds of thousands of bytes.
    563 So I managed to debug the first pass of the ten or so passes of the
    564 compiler, cross compiled on to that machine, and then found that the
    565 second one could never run.</p>
    566 
    567 <p>While I was thinking about what to do about these problems and
    568 wondering whether I should try to fix them or write entirely new
    569 compiler, in a roundabout fashion I began working on GNU Emacs.  GNU
    570 Emacs is the main distributed portion of the GNU system.  It's an
    571 extensible text editor a lot like the original emacs which I developed
    572 ten years ago, except that this one uses actual LISP as its extension
    573 language.  The editor itself is implemented in C, as is the LISP
    574 interpreter, so the LISP interpreter is completely portable, and you
    575 don't need a LISP system external to the editor.  The editor contains
    576 its own LISP system, and all of the editing commands are written in
    577 LISP so that they can provide you with examples to look at for how to
    578 write your own editing commands, and things to start with, so you can
    579 change them into the editing commands that you really want.</p>
    580 
    581 <p>In the summer of that year, about two years ago now, a friend of
    582 mine told me that because of his work in early development of Gosling
    583 Emacs, he had permission from Gosling in a message he had been sent to
    584 distribute his version of that.  Gosling originally had set up his
    585 Emacs and distributed it free and gotten many people to help develop
    586 it, under the expectation based on Gosling's own words in his own
    587 manual that he was going to follow the same spirit that I started with
    588 the original Emacs.  Then he stabbed everyone in the back by putting
    589 copyrights on it, making people promise not to redistribute it and
    590 then selling it to a software-house.  My later dealings with him
    591 personally showed that he was every bit as cowardly and despicable as
    592 you would expect from that history.</p>
    593 
    594 <p>But in any case, my friend gave me this program, and my intention
    595 was to change the editing commands at the top level to make them
    596 compatible with the original Emacs that I was used to.  And to make
    597 them handle all the combinations of numerical arguments and so on that
    598 one might expect that they would handle and have all the features that
    599 I wanted.  But after a little bit of this, I discovered that the
    600 extension language of that editor, which is called MOCKLISP, was not
    601 sufficient for the task.  I found that that I had to replace it
    602 immediately in order to do what I was planning to do.  Before I had
    603 had the idea of someday perhaps replacing MOCKLISP with real LISP, but
    604 what I found out was that it had do be done first.  Now, the reason
    605 that MOCKLISP is called MOCK, is that it has no kind of structure
    606 datatype: it does not have LISP lists; it does not have any kind of
    607 array.  It also does not have LISP symbols, which are objects with
    608 names: for any particular name, there is only one object, so that you
    609 can type in the name and you always get the same object back.  And
    610 this tremendously hampers the writing of many kinds of programs, you
    611 have to do things by complicated string-manipulation that don't really
    612 go that way.</p>
    613 
    614 <p>So I wrote a LISP interpreter and put it in in place of MOCKLISP
    615 and in the process I found that I had to rewrite many of the editor's
    616 internal data structures because I wanted them to be LISP objects.  I
    617 wanted the interface between the LISP and the editor to be clean,
    618 which means that objects such as editor buffers, sub-processes,
    619 windows and buffer-positions, all have to be LISP objects, so that the
    620 editor primitives that work on them are actually callable as LISP
    621 functions with LISP data.  This meant that I had to redesign the data
    622 formats of all those objects and rewrite all the functions that worked
    623 on them, and the result was that after about six months I had
    624 rewritten just about everything in the editor.</p>
    625 
    626 <p>In addition, because it is so hard to write things in MOCKLISP, all
    627 the things that had been written in MOCKLISP were very unclean and by
    628 rewriting them to take advantage of the power of real LISP, I could
    629 make them much more powerful and much simpler and much faster.  So I
    630 did that, and the result was that when I started distributing this
    631 program only a small fraction remained from what I had received.</p>
    632 
    633 <p>At this point, the company that Gosling thinks he sold the program
    634 to challenged my friend's right to distribute it, and the message was
    635 on backup tapes, so he couldn't find it.  And Gosling denied having
    636 given him permission.  And then a strange thing happened.  He was
    637 negotiating with this company, and it seemed that the company mainly
    638 was concerned with not having anything distributed that resembled what
    639 they were distributing.  See, he was still distributing, and the
    640 company where he worked, which is Megatest, was still distributing the
    641 same thing he had given me, which really was an old version of Gosling
    642 Emacs with his changes, and so he was going to make an agreement with
    643 them where he would stop distributing that, and would switch to using
    644 GNU Emacs, and they would then acknowledge that he really had the
    645 permission after all, and then supposedly everyone would be happy.
    646 And this company was talking to me about wanting to distribute GNU
    647 Emacs, free of course, but also sell various sorts of supporting
    648 assistance, and they wanted to hire me to help do the work.  So it's
    649 sort of strange that they then changed their mind and refused to sign
    650 that agreement, and put up a message on the network saying that I
    651 wasn't allowed to distribute the program.  They didn't actually say
    652 that they would do anything, they just said that it wasn't clear
    653 whether they might ever someday do something.  And this was enough to
    654 scare people so that no one would use it any more, which is a sad
    655 thing.</p>
    656 
    657 <p>(Sometimes I think that perhaps one of the best things I could do
    658 with my life is: find a gigantic pile of proprietary software that was
    659 a trade secret, and start handing out copies on a street corner so it
    660 wouldn't be a trade secret any more, and perhaps that would be a much
    661 more efficient way for me to give people new free software than
    662 actually writing it myself; but everyone is too cowardly to even take
    663 it.)</p>
    664 
    665 <p>So I was forced to rewrite all the rest that remained, and I did
    666 that, it took me about a week and a half.  So they won a tremendous
    667 victory.  And I certainly wouldn't ever cooperate with them in any
    668 fashion after that.</p>
    669 
    670 <p>Then after GNU Emacs was reasonably stable, which took all in all
    671 about a year and a half, I started getting back to other parts of the
    672 system.  I developed a debugger which I called GDB which is a symbolic
    673 debugger for C code, which recently entered distribution.  Now this
    674 debugger is to a large extent in the spirit of DBX, which is a
    675 debugger that comes with Berkeley Unix.  Commands consist of a word
    676 that says what you want to do, followed by arguments.  In this
    677 debugger, commands can all be abbreviated, and the common commands
    678 have single character abbreviations, but any unique abbreviation is
    679 always allowed.  There are extensible HELP facilities, you can type
    680 HELP followed by any command or even subcommands, and get a lengthy
    681 description of how to use that command.  Of course you can type any
    682 expression in C, and it will print the value.</p>
    683 
    684 <p>You can also do some things that are not usual in symbolic C
    685 debuggers, for example: You can refer to any C datatype at any memory
    686 address, either to examine the value, or to assign the value.  So for
    687 example if you want to store a floating point value in a word at a
    688 certain address, you just say: &ldquo;Give me the object of type FLOAT
    689 or DOUBLE at this address&rdquo; and then assign that.  Another thing
    690 you can do is to examine all the values that have been examined in the
    691 past.  Every value examined gets put on the &ldquo;value
    692 history.&rdquo;  You can refer to any element in the history by its
    693 numerical position, or you can easily refer to the last element with
    694 just dollar-sign.  And this makes it much easier to trace list
    695 structure.  If you have any kind of C structure that contains a
    696 pointer to another one, you can do something like
    697 <code>PRINT&nbsp;*$.next</code>, which says: &ldquo;Get
    698 the next field out of the last
    699 thing you showed me, and then display the structure that points
    700 at.&rdquo;  And you can repeat that command, and each time you'll see
    701 then next structure in the list.  Whereas in every other C debugger
    702 that I've seen the only way to do that is to type a longer command
    703 each time.  And when this is combined with the feature that just
    704 typing carriage-return repeats the last command you issued, it becomes
    705 very convenient.  Just type carriage-return for each element in the
    706 list you want to see.</p>
    707 
    708 <p>There are also explicitly settable variables in the debugger, any
    709 number of them.  You say dollar-sign followed by a name, and that is a
    710 variable.  You can assign these variables values of any C datatype and
    711 then you can examine them later.  Among the things that these are
    712 useful for are: If there's a particular value that you're going to
    713 examine, and you know you are going to refer to it a lot, then rather
    714 than remember its number in the history you might give it a name.  You
    715 might also find use for them when you set conditional breakpoints.
    716 Conditional breakpoints are a feature in many symbolic debuggers, you
    717 say &ldquo;stop when you get to this point in the program, but only if
    718 a certain expression is true.&rdquo;  The variables in the debugger
    719 allow you to compare a variable in the program with a previous value
    720 of that variable that you saved in a debugger variable.  Another thing
    721 that they can be used for is for counting, because after all,
    722 assignments are expressions in C, therefore you can do
    723 <code>$foo+=5</code> to increment the value of <code>$foo</code> by
    724 five, or just <code>$foo++</code> you can do.  You can even do this
    725 in a conditional breakpoint, so that's a cheap way of having it break
    726 the tenth time the breakpoint is hit, you can do
    727 <code>$foo--==0</code>.  Does everyone follow that?  Decrement foo
    728 and if it's zero now, break.  And then you set <code>$foo</code> to the number of
    729 times you want it to skip, and you let it go.  You can also use that
    730 to examine elements of an array.  Suppose you have an array of
    731 pointers, you can then do:</p>
    732 
    733 <pre><code>PRINT X[$foo++]</code></pre>
    734 
    735 <p>But first you do</p>
    736 
    737 <pre><code>SET $foo=0</code></pre>
    738 
    739 <p>Okay, when you do that [points at the <code>PRINT</code>
    740 expression], you get the zeroth element of X, and then you do it again
    741 and it gets the first element, and suppose these are pointers to
    742 structures, then you probably put an asterisk there [before the X in
    743 the PRINT expression] and each time it prints the next structure
    744 pointed to by the element of the array.  And of course you can repeat
    745 this command by typing carriage-return.  If a single thing to repeat
    746 is not enough, you can create a user-defined-command.  You can say
    747 <code>Define Mumble</code>, and then you give some lines of commands
    748 and then you say <code>end</code>.  And now there is defined a
    749 <code>Mumble</code> command which will execute those lines.  And it's
    750 very useful to put these definitions in a command file.  You can have
    751 a command file in each directory, that will be loaded automatically
    752 when you start the debugger with that as your working directory.  So
    753 for each program you can define a set of user defined commands to
    754 access the data structures of that program in a useful way.  You can
    755 even provide documentation for your user-defined commands, so that
    756 they get handled by the <code>help</code> features just like the
    757 built-in commands.</p>
    758 
    759 <p>One other unusual thing in this debugger, is the ability to discard
    760 frames from the stack.  Because I believe it's important not just to
    761 be able to examine what's happening in the program you're debugging,
    762 but also to change it in any way conceivable.  So that after you've
    763 found one problem and you know what's wrong, you can fix things up as
    764 if that code were correct and find the next bug without having to
    765 recompile your program first.  This means not only being able to
    766 change the data areas in you program flexibly, but also being able to
    767 change the flow of control.  In this debugger you can change the flow
    768 of control very directly by saying:</p>
    769 
    770 <pre><code>SET $PC=&lt;some number&gt;</code></pre>
    771 
    772 <p>So you can set the program counter.  You can also set the stack
    773 pointer, or you can say</p>
    774 
    775 <pre><code>SET $SP+=&lt;something&gt;</code></pre>
    776 
    777 <p>If you want to increment the stack pointer a certain amount.  But
    778 in addition you can also tell it to start at a particular line in the
    779 program, you can set the program counter to a particular source line.
    780 But what if you find that you called a function by mistake and you
    781 didn't really want to call that function at all?  Say, that function
    782 is so screwed up that what you really want to do is get back out of it
    783 and do by hand what that function should have done.  For that you can
    784 use the <code>RETURN</code> command. You select a stack frame and you
    785 say <code>RETURN</code>, and it causes that stack-frame, and all the
    786 ones within it, to be discarded as if that function were returning
    787 right now, and you can also specify the value it should return.  This
    788 does not continue execution; it pretends that return happened and then
    789 stops the program again, so you can continue changing other
    790 things.</p>
    791 
    792 <p>And with all these things put together you thus have pretty good
    793 control over what's going on in a program.</p>
    794 
    795 <p>In addition one slightly amusing thing: C has string constants,
    796 what happens if you use a string constant in an expression that you're
    797 computing in the debugger?  It has to create a string in the program
    798 you were debugging.  Well it does.  It sets up a call to MALLOC in
    799 that debugged program, lets MALLOC run, and then gets control back.
    800 Thus it invisibly finds a place to put the string constant.</p>
    801 
    802 <p>Eventually when this debugger is running on the real GNU system, I
    803 intend to put in facilities in the debugger to examine all of the
    804 internal status of the process that is running underneath it.  For
    805 example to examine the status of the memory map, which pages exist,
    806 which are readable, which are writable, and to examine the inferior
    807 program's terminal status.  There already is a bit of a command; this
    808 debugger, unlike the debuggers on Unix, keeps the terminal status
    809 completely separate for the debugger and the program you're debugging,
    810 so that it works with programs that run in raw mode, it works with
    811 programs that do interrupt driven input, and there's also a command
    812 that enables you to find out something about the terminal settings at
    813 the program you're debugging is actually using.  I believe that in
    814 general a debugger should allow you to find out everything that's
    815 going on in the inferior process.</p>
    816 
    817 <p>There are two other main parts of the GNU system that already
    818 exist.  One is the new C compiler, and one is the TRIX kernel.</p>
    819 
    820 <p>The new C compiler is something that I've written this year since
    821 last spring.  I finally decided that I'd have to throw out PASTEL.
    822 This C compiler uses some ideas taken from PASTEL, and some ideas
    823 taken from the University of Arizona Portable Optimizer.  Their
    824 interesting idea was to handle many different kinds of machines by
    825 generating simple instructions, and then combining several simple
    826 instructions into a complicated instruction when the target machine
    827 permits it.  In order to do this uniformly, they
    828 represent the instructions in algebraic notation.  For example, an ADD
    829 instruction might be represented like this:</p>
    830 
    831 <pre>
    832   <code>r[3]=r[2]+4</code>
    833 </pre>
    834 
    835 <p>This would be a representation inside their compiler for
    836 instruction to take the contents of register two, add four and store
    837 it in register three.  In this fashion you can represent any possible
    838 instruction for any machine.  So they actually did represent all the
    839 instructions this way and then when it came time to try to combine
    840 them, they would do this by substituting one expression into another,
    841 making a more complicated algebraic expression for the combined
    842 instruction.</p>
    843 
    844 <p>Sometimes depending on whether the result of the first instruction
    845 had any further use, it might be necessary to make a combined
    846 instruction with two assignment operators.  One for this value
    847 [pointing at ???] and another one with this value [pointing at ???]
    848 substituted in it with what came from the second instruction.  But if
    849 this value was only used that once, you could eliminate it after
    850 substituting for it; there'd be no need to compute it any more.  So
    851 it's actually somewhat complicated doing the substitution correctly
    852 checking that the intervening instructions don't change any of these
    853 values and other such things.  When you support such things as
    854 auto-increment and auto-decrement addressing, which I do now, you also
    855 have to do various checks for those to check for situations where what
    856 you're doing is not value preserving.</p>
    857 
    858 <p>But after checking all those things, then you take the substituted
    859 combined expression and put it through a pattern matcher, which
    860 recognizes all the valid instructions of your chosen target machine.
    861 And if it's recognized, then you replace those two instructions with
    862 the combined one, otherwise you leave them alone.  And their technique
    863 is to combine two or three instructions related by data flow in this
    864 way.</p>
    865 
    866 <p>In the Arizona compiler, they actually represent things as text
    867 strings like this, and their compiler is horribly slow.  First I had
    868 some idea of just using their compiler and making changes in it, but
    869 it was clear to me I had to rewrite it entirely to get the speed I
    870 wanted, so I have rewritten it to use list structure representations
    871 for all these expressions.  Things like this:</p>
    872 
    873 <pre>
    874      <code>(set (reg 2)</code>
    875           <code>(+ (reg 2)</code>
    876              <code>(int 4)))</code>
    877 </pre>
    878 
    879 <p>This looks like Lisp, but the semantics of these are not quite
    880 LISP, because each symbol here is one recognized specially.  There's a
    881 particular fixed set of these symbols that is defined, all the ones
    882 you need.  And each one has a particular pattern of types of
    883 arguments, for example: <code>reg</code> always has an integer,
    884 because registers are numbered, but <code>+</code> takes two
    885 subexpressions, and so on.  And with each of these expressions is also
    886 a data type which says essentially whether it's fixed or floating and
    887 how many bytes long it is.  It could be extended to handle other
    888 things too if you needed to.</p>
    889 
    890 <p>And the way I do automatic register allocation is that when I
    891 initially generate this code, and when I do the combination and all
    892 those things, for every variable that conceivably go into a register,
    893 I allocate what I call a pseudo register number, which is a number
    894 starting at sixteen or whatever is too high to be a real register for
    895 your target machine.  So the real registers are numbered zero to
    896 fifteen or whatever and above that comes pseudo registers.  And then
    897 one of the last parts of the compiler consists of going through and
    898 changing all the pseudo registers to real registers.  Again it makes a
    899 conflict graph, it sees which pseudo registers are alive at the same
    900 point and they of course can't go in the same real register, and then
    901 it tries packing pseudo registers into real registers as much as it
    902 can, ordering them by priority of how important they are.</p>
    903 
    904 <p>And finally it then has to correct the code for various problems,
    905 such as happen when there were pseudo registers that don't fit in the
    906 real registers, that had to be put into stack slots instead.  When
    907 that happens on certain machines, some of the instructions may become
    908 invalid.  For example on the 68000 you can add a register into memory
    909 and you can add memory into register, but you can't add one memory
    910 location into another.  So if you have an ADD instruction, and you're
    911 headed for a 68000 and both of the things end up in memory, it's not
    912 valid.  So this final pass goes through and copies things into
    913 registers and out of registers as needed to correct those
    914 problems.</p>
    915 
    916 <p>Problems can also arise with index registers.  If you're trying to
    917 index by something, then most of the time that code will become
    918 invalid if the index quantity is in memory, except in a few cases on
    919 some machines where you can it with indirect addressing.  In the cases
    920 when you're doing auto-increment on an index register you may have to
    921 copy the value into a register, do the instruction, and then copy the
    922 incremented value back to the memory slot where it really lives.</p>
    923 
    924 <p>There's got room for a lot of hair, and I've not finished
    925 implementing all the hair needed to make really fully efficient.</p>
    926 
    927 <p>This compiler currently works by having a parser which turns C code
    928 into effectively a syntax tree annotated with C datatype information.
    929 Then another pass which looks at that tree and generates code like
    930 this [LISP like code].  Then several optimization passes.  One to
    931 handle things like jumps across jumps, jumps to jumps, jumps to <code>.+1</code>,
    932 all of which can be immediately simplified.  Then a common
    933 subexpression recognizer, then finding basic blocks, and performing
    934 dataflow-analysis, so that it can tell for each instruction which
    935 values are used in that instruction and never used afterward.  And
    936 also linking each instruction to the places where the values it uses
    937 were generated, so if I have one instruction which generates pseudo
    938 register R[28], and then another instruction later which uses R[28]
    939 and it's the first place to use R[28], I make the second one point
    940 back to the first one, and this pointer is used to control the
    941 attempts to combine the instructions.  You don't combine adjacent
    942 instructions, you combine an instruction that uses a value with the
    943 instruction that produced that value.  Even if there are other
    944 instructions in between, they don't matter for this, you just have to
    945 check them to make sure they don't do anything to interfere.  Then
    946 after the combiner comes the dynamic register allocator, and finally
    947 something to convert it into assembly code.</p>
    948 
    949 <p>In the Arizona compiler the instruction recognizer was generated
    950 with LEX.  Your machine description was simply a LEX program that LEX
    951 would turn into a C function to recognize valid instructions as
    952 strings.  What I have is instead a special purpose decision tree
    953 that's generated from a machine description written in this syntax as
    954 if it were LISP.  And this recognizer is used as a subroutine for many
    955 different parts of the compiler.</p>
    956 
    957 <p>Currently this compiler runs about as fast as PCC.  It runs
    958 noticeably faster if you tell it not to do the hairy register
    959 allocation, in which case it allocates registers the same way as PCC
    960 does.  In its super hairy mode it does a much better job of allocating
    961 registers than PCC, and I observe that for the VAX it generates the
    962 best code I've seen from any C compiler on the VAX.</p>
    963 
    964 <p>For the 68000 the code is still not ideal.  I can see places where
    965 early stages do things that are not the best, because it can't fully
    966 look ahead.  It has a choice in an early stage, and it does the thing
    967 that it thinks is going to be best, but really if it did the other
    968 one, a later stage is actually smart enough to do something even
    969 better.  But the early stage doesn't know what the later stage is
    970 going to do, so I have more work to do on some of these things.</p>
    971 
    972 <p>Sometimes this causes it to free up registers unnecessarily.
    973 Because when things wind up in memory and it needs to copy them into
    974 registers, it needs to get registers to copy them into.  This means
    975 taking registers that it has already allocated to, and kicking those
    976 temporary quantities out to stack slots.  Of course this may
    977 invalidate more instructions now that those things are in memory, not
    978 registers, so it has to check again and again.  Sometimes it thinks it
    979 has to copy things to registers and really it isn't going to have to,
    980 so it may free up too many things and thus not use all the registers
    981 that it could.</p>
    982 
    983 <p><span>[Question: Do you have a code generator for 32000?]</span> Not yet, but
    984 again, it's not a code generator it's just a machine description that
    985 you need.  A list of all the machine instructions described in this
    986 [LISP like] form.  So in fact aside from the work of implementing the
    987 idea of constraints on which arguments can be in registers and which
    988 kind of registers, which is something which was needed for the 68000
    989 and was not needed for the VAX, the work of porting this compiler from
    990 the VAX to the 68000 just took a few days.  So it's very easy to
    991 port.</p>
    992 
    993 <p>The compiler currently generates assembler code and it can generate
    994 debugging information either in the format that DBX wants, or in the
    995 special internal format of GDB.  I'd say the only work needed on this
    996 compiler is in three areas.  One: I have to add a
    997 &ldquo;profiling&rdquo; feature, like the one that the Unix compilers
    998 have.  Two: I have to make these register allocation things smarter,
    999 so that I can stop seeing stupid things appearing in the output.  And
   1000 three: There are various bugs, things that doesn't handle correctly
   1001 yet, although it has compiled itself correctly.  I expect this will
   1002 just take a few months, and then I will release the compiler.</p>
   1003 
   1004 <p>The other sizable part of the system that exist, is the kernel.
   1005 <span>[Question: A pause?]</span> Ah, yeah I guess we've forgotten about breaks.
   1006 Why don't I finish talking about the kernel, which should only take
   1007 about five minutes, and then we can take a break.</p>
   1008 
   1009 <p>Now, for the kernel I am planning to use a system called TRIX (it
   1010 doesn't stand for anything that I know of) which was developed as a
   1011 research project at MIT.  This system is based on Remote Procedure
   1012 Call.  Thus programs are called domains.  Each domain is a address
   1013 space and various capabilities, and a capability is none other than
   1014 the ability to call a domain.  Any domain can create &ldquo;capability
   1015 ports&rdquo; to call it, and then it can pass these ports to other
   1016 domains, and there is no difference between calling the system and
   1017 calling another user domain.  In fact you can't tell which you have.
   1018 Thus it is very easy to have devices implemented by other user
   1019 programs.  A file system could be implemented by a user program,
   1020 transparently.  It's also transparent to communicate across networks.
   1021 You think that you're directly calling another domain, but really
   1022 you're calling the network server domain. It takes the information
   1023 that you gave in the call, and passes this over the network to another
   1024 server program which then calls the domain that you're trying to talk
   1025 to.  But you and that other domain see this as happening
   1026 invisibly.</p>
   1027 
   1028 <p>The TRIX kernel runs, and it has a certain limited amount of Unix
   1029 compatibility, but it needs a lot more.  Currently it has a file
   1030 system that uses the same structure on disk as the ancient Unix file
   1031 system does.  This made it easier to debug the thing, because they
   1032 could set up the files with Unix, and then they could run TRIX, but
   1033 that file system doesn't have any of the features that I believe are
   1034 necessary.</p>
   1035 
   1036 <p>Features that I believe must be added include: Version numbers,
   1037 undeletion, information on when and how and where the file was backed
   1038 up on tape, atomic superseding of files.  I believe that it is good
   1039 that in Unix when a file is being written, you can already look at
   1040 what's going there, so for example, you can use <code>tail</code> to
   1041 see how far the thing got, that's very nice.  And if the program dies,
   1042 having partly written the file, you can see what it produced.  These
   1043 things are all good, but, that partly written output should not ever
   1044 be taken for the complete output that you expected to have eventually.
   1045 The previous version of that should continue to be visible and used by
   1046 everyone who tries to use it, until the new version is completely and
   1047 correctly made.  This means that the new version should be visible in
   1048 the file system but not under the name it is supposed to have.  It
   1049 should get renamed when it's finished.  Which is by the way what
   1050 happens in ITS, although there each user program has to do this
   1051 explicitly.  For Unix compatibility with the user programs, it has to
   1052 happen invisibly.</p>
   1053 
   1054 <p>I have a weird hairy scheme to try to make version numbers fit with
   1055 the existing Unix user programs.  And this is the idea that you
   1056 specify a file name leaving the version number implicit, if you just
   1057 specify the name in the ordinary way.  But if you wish to specify a
   1058 name exactly, either because you want to state explicitly what version
   1059 to use, or because you don't want versions at all, you put a point at
   1060 the end of it.  Thus if you give the filename <code>FOO</code> it
   1061 means &ldquo;Search the versions that exists for FOO and take the
   1062 latest one.&rdquo;  But if you say <code>FOO.</code> it means
   1063 &ldquo;use exactly the name FOO and none other.&rdquo;  If you say
   1064 <code>FOO.3.</code> it says &ldquo;use exactly the name FOO.3&rdquo;
   1065 which of course is version three of FOO and none other.  On output, if
   1066 you just say <code>FOO</code>, it will eventually create a new
   1067 version of FOO, but if you say <code>FOO.</code> it
   1068 will write a file named exactly FOO.</p>
   1069 
   1070 <p>Now there's some challenges involved in working out all the details
   1071 in this, and seeing whether there are any lingering problems, whether
   1072 some Unix software actually breaks despite feeding them names with
   1073 points in them and so on, to try to make it get the same behavior.</p>
   1074 
   1075 <p>I would expect that when you open a file for output whose name ends
   1076 in a point, you should actually open that name right away, so you get
   1077 the so you get the same Unix behavior, the partially written output is
   1078 immediately visible, whereas when you output a name that doesn't end
   1079 in a point, the new version should appear when you close it, and only
   1080 if you close it explicitly. If it gets closed because the job dies, or
   1081 because the system crashes or anything like that, it should be under a
   1082 different name.</p>
   1083 
   1084 <p>And this idea can be connected up to &ldquo;star matching,&rdquo;
   1085 by saying that a name that doesn't end in a point is matched against
   1086 all the names without their version numbers, so if a certain directory
   1087 has files like this:</p>
   1088 
   1089 <pre>
   1090   <code>foo.1 foo.2 bar.8</code>
   1091 </pre>
   1092 
   1093 <p>If I say  <code>*</code>, that's equivalent to</p>
   1094 <pre>
   1095   <code>foo bar</code>
   1096 </pre>
   1097 
   1098 <p>because it takes all the names and gets rid of their versions, and
   1099 takes all the distinct ones.  But if I say <code>*.</code> then it
   1100 takes all the exact names, puts a point after each one, and matches
   1101 against them.  So this gives me all the names for all the individual
   1102 versions that exist.  And similar, you can see the difference between
   1103 <code>*.c</code> and <code>*.c.</code> this [the first] would give
   1104 you essentially versionless references to all the <code>.c</code>
   1105 files, whereas this [the second] will give you all the versions
   1106 &hellip; well this actually wouldn't, you'd have to say
   1107 <code>*.c.*.</code>;  I haven't worked out the details here.</p>
   1108 
   1109 <p>Another thing, that isn't a user visible feature and is certainly
   1110 compatible to put in, is failsafeness in the file system.  Namely, by
   1111 writing all the information on disk in the proper order, arranging
   1112 that you can press &ldquo;<kbd>halt</kbd>&rdquo; at any time without ever
   1113 corrupting thereby the file system on disk.  It is so well known how
   1114 to do this, I can't imagine why anyone would neglect it.  Another idea
   1115 is further redundant information.  I'm not sure whether I'll do this
   1116 or not, but I have ideas for how to store in each file all of its
   1117 names, and thus make it possible if any directory on disk is lost, to
   1118 reconstruct it from the rest of the contents of the disk.</p>
   1119 
   1120 <p>Also I think I know how to make it possible to atomically update
   1121 any portion of a file.  Thus if you want to replace a certain subrange
   1122 of a file with new data in such a fashion that any attempt to read the
   1123 file will either see only the old data, or only the new data.  I
   1124 believe I can do that, without any locking even.</p>
   1125 
   1126 <p>For network support, I intend eventually to implement TCP/IP for
   1127 this system.  I also think it's possible to use KERMIT to get
   1128 something effectively equivalent to UUCP.</p>
   1129 
   1130 <p>A shell I believe has already been written.  It has two modes, one
   1131 imitating the BOURNE shell, and one imitating the C-shell in the same
   1132 program.  I have not received a copy of it yet, and I don't know how
   1133 much work I'll have to do on it.  Also many other utilities exists.  A
   1134 MAKE exists, LS, there's a YACC replacement called BISON which is
   1135 being distributed.  Something pretty close to a LEX exists, but it's
   1136 not totally compatible, it needs some work.  And, in general what
   1137 remains to be done is much less that what's been done, but we still
   1138 need lots of people to help out.</p>
   1139 
   1140 <p>People always ask me &ldquo;When is it going to be finished?&rdquo;
   1141 Of course I can't know when it's going to be finished, but that's the
   1142 wrong question to ask me.  If you were planning to pay for it, it
   1143 would make sense for you to want to know exactly what are you going to
   1144 get and when.  But since you're not going to pay for it, the right
   1145 question for you to ask is &ldquo;how can you help make it get
   1146 finished sooner?&rdquo; I have a list of projects, it is on a file at
   1147 MIT, and people who are interested in helping could send me mail at
   1148 this Internet address, and I will send back a list of projects.  (I
   1149 wonder if this is will work (looking at the chalk)).  Is this
   1150 readable?  This is &ldquo;RMS@GNU.ORG&rdquo; (just follow the bouncing
   1151 ball.)  And now let's take a break, and after the break, I will say
   1152 some really controversial things.  So don't leave now.  If you leave
   1153 now, you're going to miss the real experience.</p>
   1154 
   1155 <p><strong>
   1156 [Here we had a 15 min. break]
   1157 </strong></p>
   1158 
   1159 <p>I've been asked to announce how you can get copies of GNU software.
   1160 Well, one way of course is if you know a friend who has a copy, you
   1161 can copy it, but if you don't know a friend who has a copy, and you're
   1162 not on the Internet, you can't FTP it, then you can always order a
   1163 distribution tape, and send some money to the Free Software
   1164 Foundation.  Of course free programs is not the same thing as free
   1165 distribution.  I'll explain this in detail later.</p>
   1166 
   1167 <p>Here I have an EMACS manual, of the nicely printed variety.  It has
   1168 been phototypeset and then offset printed.  Although you can also
   1169 print it yourself from the sources that come in the EMACS
   1170 distribution, you can get these copies from the Free Software
   1171 Foundation.  You can come afterwards and look at this and also this
   1172 contains an order for you might copy some information from, and this
   1173 [front] picture has also sometimes been enjoyed.  This [pointing at a
   1174 figure being chased by RMS riding a gnu] is a scared software hoarder,
   1175 I'll be talking about him in a moment.</p>
   1176 
   1177 <p>Software is a relatively new phenomenon.  People started
   1178 distributing software perhaps thirty years ago.  It was only about
   1179 twenty years ago that someone had the idea of making a business about
   1180 it.  It was an area with no tradition about how people did things, or
   1181 what rights anybody had.  And there were several ideas for what other
   1182 areas of life you might bring traditions from by analogy.</p>
   1183 
   1184 <p>One analogy that is liked by a lot of professors in Europe, is that
   1185 between programs and mathematics.  A program is sort of a large
   1186 formula.  Now, traditionally nobody can own a mathematical formula.
   1187 Anybody can copy them and use them.</p>
   1188 
   1189 <p>The analogy that's most meaningful to ordinary people is with
   1190 recipes.  If you think about it, the thing that you have in ordinary
   1191 life that's most like program is a recipe, it's instructions for doing
   1192 something.  The differences come because a recipe is followed by a
   1193 person, not by a machine automatically.  It's true there's no
   1194 difference between source code and object code for a recipe, but it's
   1195 still the closest thing.  And no-one is allowed to own a recipe.</p>
   1196 
   1197 <p>But the analogy that was chosen was the analogy with books, which
   1198 have copyright.  And why was this choice made?  Because the people
   1199 that had the most to gain from making that particular choice were
   1200 allowed to make the decision.  The people who wrote the programs, not
   1201 the people who used the programs, were allowed to decide, and they
   1202 decided in a completely selfish fashion, and as a result they've
   1203 turned the field of programming into an ugly one.</p>
   1204 
   1205 <p>When I entered the field, when I started working at MIT in 1971,
   1206 the idea that programs we developed might not be shared was not even
   1207 discussed.  And the same was Stanford and CMU, and everyone, and even
   1208 Digital.  The operating system from Digital at that time was free.
   1209 And every so often I got pieces of program from Digital system such as
   1210 a PDP-11 cross assembler, and I ported it to run on ITS, and added
   1211 lots of features.  It was no copyright on that program.</p>
   1212 
   1213 <p>It was only in the late seventies that this began to change.  I was
   1214 extremely impressed by the sharing spirit that we had.  We were doing
   1215 something that we hoped was useful and were happy if people could use
   1216 it.  So when I developed the first EMACS, and people wanted to start
   1217 use it outside of MIT, I said that it belongs to the EMACS
   1218 &ldquo;Commune,&rdquo; that in order to use EMACS you had to be a
   1219 member of the commune, and that meant that you had the responsibility
   1220 to contribute all the improvements that you made.  All the
   1221 improvements to the original EMACS had to be sent back to me so that I
   1222 could incorporate them into newer versions of EMACS, so that everyone
   1223 in the community could benefit from them.</p>
   1224 
   1225 <p>But this started to be destroyed when SCRIBE was developed at CMU,
   1226 and then was sold to a company.  This was very disturbing to a lot of
   1227 us at many universities, because we saw that this was a temptation
   1228 placed in front of everyone, that it was so profitable to be
   1229 uncooperative and those of us who still believed in cooperation had no
   1230 weapon to try to compel people to cooperate with us.  Clearly, one
   1231 after another, people would defect and stop cooperating with the rest
   1232 of society, until only those of us with very strong consciences would
   1233 still cooperate.  And that's what happened.</p>
   1234 
   1235 <p>The field of programming has now become an ugly one, where everyone
   1236 cynically thinks about how much money he is going to get by not being
   1237 nice to the other people in the field, and to the users.</p>
   1238 
   1239 <p>I want to establish that the practice of owning software is both
   1240 materially wasteful, spiritually harmful to society and evil.  All
   1241 these three things being interrelated.  It's spiritually harmful
   1242 because it involves every member of society who comes in contact with
   1243 computers in a practice that is obviously materially wasteful to other
   1244 people.  And every time you do something for your own good, which you
   1245 know is hurting other people more that it helps you, you have to
   1246 become cynical in order to support such a thing in your mind.  And
   1247 it's evil because it is deliberately wasting the work done in society
   1248 and causing social decay.</p>
   1249 
   1250 <p>First I want to explain the kinds of harm that are done by attempts
   1251 to own software and other information that's generally useful, then
   1252 I'll go on to rebut the arguments made to support that practice, and
   1253 then I want to talk about how to fight that phenomenon, and how I'm
   1254 fighting it.</p>
   1255 
   1256 <p>The idea of owning information is harmful in three different
   1257 levels.  Materially harmful on three different levels, and each kind
   1258 of material harm has a corresponding spiritual harm.</p>
   1259 
   1260 <p>The first level is just that it discourages the use of the program,
   1261 it causes fewer people to use the program, but in fact it takes no
   1262 less work to make a program for fewer people to use.  When you have a
   1263 price on the use of a program this is an incentive, that's the word these
   1264 software hoarders love to use, the price is an incentive for people
   1265 not to use the program, and this is a waste.  If for example only half
   1266 as many people use the program because it has a price on it, the
   1267 program has been half wasted.  The same amount of work has produced
   1268 only half as much wealth.</p>
   1269 
   1270 <p>Now in fact, you don't have to do anything special to cause a
   1271 program to get around to all the people who want to use it, because
   1272 they can copy it themselves perfectly well, and it will get to
   1273 everyone.  All you have to do after you've written the program is to
   1274 sit back and let people do what they want to do.  But that's not what
   1275 happens; instead somebody deliberately tries to obstruct the sharing
   1276 of the program, and in fact, he doesn't just try to obstruct it, he
   1277 tries to pressure other people into helping.  Whenever a user signs a
   1278 nondisclosure agreement he has essentially sold out his fellow users.
   1279 Instead of following the golden rule and saying, &ldquo;I like this
   1280 program, my neighbor would like the program, I want us both to have
   1281 it,&rdquo; instead he said, &ldquo;Yeah, give it to me.  To hell with
   1282 my neighbor!  I'll help you keep it away from my neighbor, just give
   1283 it to me!&rdquo; and that spirit is what does the spiritual harm.
   1284 That attitude of saying, &ldquo;To hell with my neighbors, give ME a
   1285 copy.&rdquo;</p>
   1286 
   1287 <p>After I ran into people saying they wouldn't let me have copies of
   1288 something, because they had signed some secrecy agreement, then when
   1289 somebody asked me to sign a thing like that I knew it was wrong.  I
   1290 couldn't do to somebody else the thing that had made me so angry when
   1291 it was done to me.</p>
   1292 
   1293 <p>But this is just one of the levels of harm.  The second level of
   1294 harm comes when people want to change the program, because no program
   1295 is really right for all the people who would like to use it.  Just as
   1296 people like to vary recipes, putting in less salt say, or maybe they
   1297 like to add some green peppers, so people also need to change programs
   1298 in order to get the effects that they need.</p>
   1299 
   1300 <p>Now, the software owners don't really care whether people can
   1301 change the program or not, but it's useful for their ends to prevent
   1302 people.  Generally when software is proprietary you can't get the
   1303 sources, you can't change it, and this causes a lot of wasted work by
   1304 programmers, as well as a lot of frustration by users.  For example: I
   1305 had a friend who told me how she worked for many months at a bank
   1306 where she was a programmer, writing a new program.  Now, there was a
   1307 commercially available program that was almost right, but it was just
   1308 not quite the thing they needed, and in fact as it was it was useless
   1309 for them.  The amount of change it would have taken to make it do what
   1310 they needed was probably small, but because the sources of that
   1311 program were not available, that was impossible.  She had to start
   1312 over from scratch and waste a lot of work.  And we can only speculate
   1313 about what fraction of all the programmers in the world are wasting
   1314 their time in this fashion.</p>
   1315 
   1316 <p>And then there is also the situation where a program is adequate
   1317 make do, but it's uncomfortable.  For example: The first time we had a
   1318 graphics printer at MIT, we wrote the software ourselves, and we put
   1319 in lots of nice features, for example it would send you a message when
   1320 your job had finished printing, and it would send you a message if the
   1321 printer ran out of paper and you had a job in the queue, and lots of
   1322 other things that were what we wanted.  We then got a much nicer
   1323 graphic printer, one of the first laser printers, but then the
   1324 software was supplied by Xerox, and we couldn't change it.  They
   1325 wouldn't put in these features, and we couldn't, so we had to make do
   1326 with things that &ldquo;half worked.&rdquo;  And it was very
   1327 frustrating to know that we were ready, willing and able to fix it,
   1328 but weren't permitted. We were sabotaged.</p>
   1329 
   1330 <p>And then there are all the people who use computers and say that
   1331 the computers are a mystery to them, they don't know [how] they work.  Well
   1332 how can they possibly know?  They can't read the programs they're
   1333 using.  The only way people learn how programs should be written, or
   1334 how programs do what they do, is by reading the source code.</p>
   1335 
   1336 <p>So I could only wonder whether the idea of the user who just thinks
   1337 of the computer as a tool is not actually a self-fulfilling prophecy,
   1338 a result of the practice of keeping source code secret.</p>
   1339 
   1340 <p>Now the spiritual harm that goes with this kind of material harm,
   1341 is in the spirit of self-sufficiency.  When a person spends a lot of
   1342 time using a computer system, the configuration of that computer
   1343 system becomes the city that he lives in.  Just as the way our houses
   1344 and furniture are laid out, determines what it's like for us to live
   1345 among them, so that the computer system that we use, and if we can't
   1346 change the computer system that we use to suit us, then our lives are
   1347 really under the control of others.  And a person who sees this
   1348 becomes in a certain way demoralized: &ldquo;It's no use trying to
   1349 change those things, they're always going to be bad.  No point even
   1350 hassling it.  I'll just put in my time and &hellip; when it's over
   1351 I'll go away and try not to think about it any more.&rdquo;  That kind
   1352 of spirit, that unenthusiasm is what results from not being permitted
   1353 to make things better when you have feelings of public spirit.</p>
   1354 
   1355 <p>The third level of harm is in the interaction between software
   1356 developers themselves.  Because any field of knowledge advance most
   1357 when people can build on the work of others, but ownership of
   1358 information is explicitly designed to prevent anyone else to doing
   1359 that.  If people could build on other people's work, then the
   1360 ownership would become unclear, so they make sure each new entry to
   1361 the field has to start from the beginning, and thus they greatly slow
   1362 down the advance of the field.</p>
   1363 
   1364 <p>So we can see: How many spreadsheet systems were made all by
   1365 different companies, all without any benefit of understanding how it
   1366 was done before?  Yes it's true, the first spreadsheet written wasn't
   1367 perfect.  It probably only ran on certain kinds of computers, and it
   1368 didn't do some things in the best possible way.  So there were various
   1369 reasons why certain people would want to rewrite parts of it.  But if
   1370 they had only to rewrite the parts that they really wanted to improve,
   1371 that would have made for a lot less work.  You may see how to make one
   1372 aspect of a system better, you may not see how to make another aspect
   1373 of the same system any better, in fact you might have a great deal of
   1374 trouble doing it as well.  Now if you could take the part that you
   1375 like and redo only the part that you have an inspiration for, you
   1376 could have a system that's better in all ways, with much less work
   1377 than it now takes to write a completely new system.  And we all know
   1378 that a system can often benefit from being completely rewritten, but
   1379 that's only if you can read the old one first.</p>
   1380 
   1381 <p>Thus, the people in the programming field have evolved a way of
   1382 wasting a lot of their time and thus making apparently a need for more
   1383 programmers than we really need.  Why is there a programmer shortage?
   1384 Because with intellectual property programmers have arranged to waste
   1385 half the work they do, so we seem to need twice as many programmers.
   1386 And so, when people point to the system of intellectual property and
   1387 say &ldquo;look at the large employment statistics, look at how big
   1388 this industry is&rdquo; what that really proves is that people are
   1389 wasting a lot of money and time.  If they talk about looking for ways
   1390 to improve programmer productivity, they're happy to do this if it
   1391 involves superior tools, but to improve programmer productivity by
   1392 getting rid of the explicit things that is done to reduce programmer
   1393 productivity, that they're against.  Because that would reduce the
   1394 number of programmers employed.  There's something a little bit
   1395 schizophrenic there.</p>
   1396 
   1397 <p>And the spiritual harm that corresponds to this level of material
   1398 harm is to the spirit of scientific cooperation, which used to be so
   1399 strong that scientists even in countries that were at war would
   1400 continue cooperating, because they knew that what they were doing had
   1401 nothing to do with the war, it was just for the long term benefit of
   1402 humanity.  Nowadays, people don't care about the long term benefit of
   1403 humanity any more.</p>
   1404 
   1405 <p>To get an idea of what it's like to obstruct the use of a program,
   1406 let's imagine that we had a sandwich, that you could eat, and it
   1407 wouldn't be consumed.  You could eat it, and another person could eat
   1408 it, the same sandwich, any number of times, and it would always remain
   1409 just as nourishing as originally.</p>
   1410 
   1411 <p>The best thing to do, the thing that we ought to do with this
   1412 sandwich is carry it around to the places where there are hungry
   1413 people; bringing it to as many mouths as possible, so that it feeds as
   1414 many people as possible.  By all means, we should not have a price to
   1415 eat from this sandwich, because then people would not afford to eat
   1416 it, and it would be wasted.</p>
   1417 
   1418 <p>The program is like this sandwich, but even more so because it can
   1419 be in many different places at once being eaten, used by different
   1420 people one after the other.  It is as if this sandwich was enough to
   1421 feed everyone, everywhere, forever, and that were not allowed to
   1422 happen, because someone believed he should own it.</p>
   1423 
   1424 <p>Now, the people who believe that they can own programs, generally
   1425 put forward two lines of argument for this.  The first one is &ldquo;I
   1426 wrote it, it is a child of my spirit, my heart, my soul is in this.
   1427 How can anyone take it away from me?  Wherever it goes it's mine,
   1428 mine, MINE!!&rdquo;  Well, it's sort of strange that most of them
   1429 signs agreements saying it belongs to the company they work for.</p>
   1430 
   1431 <p>So I believe this is one of the things you can easily talk yourself
   1432 into believing is important, but you can just as easily convince
   1433 yourself it doesn't matter at all.</p>
   1434 
   1435 <p>Usually, these people use this argument to demand the right to
   1436 control even how people can change a program.  They say: &ldquo;Nobody
   1437 should be able to mess up my work of art.&rdquo;  Well, imagine that
   1438 the person who invented a dish that you plan to cook had the right to
   1439 control how you can cook it, because it's his work of art.  You want
   1440 to leave out the salt, but he says &ldquo;Oh, no.  I designed this
   1441 dish, and it has to have this much salt!&rdquo; &ldquo;But my doctor
   1442 says it's not safe for me to eat salt.  What can I do?&rdquo;</p>
   1443 
   1444 <p>Clearly, the person who is using the program is much closer to the
   1445 event.  The use of the program affects him very directly, whereas it
   1446 only has a sort of abstract relation to the person who wrote the
   1447 program.  And therefore, for the sake of giving people as much control
   1448 as possible over their own lives, it has to be the user who decides
   1449 those things.</p>
   1450 
   1451 <p>The second line of argument they make is the economic one.
   1452 &ldquo;How will people get payed to program?&rdquo; they say, and
   1453 there's a little bit of real issue in this.  But a lot of what they
   1454 say is confusion.  And the confusion is, it's not at all the same to
   1455 say &ldquo;if we want to have a lot of people programming we must
   1456 arrange for them not to need to make a living in any other
   1457 fashion&rdquo; on the one hand, and to say &ldquo;We need to have the
   1458 current system, you need to get rich by programming&rdquo; on the
   1459 other hand.  There's a big difference between just making a living
   1460 wage and making the kind of money programmers, at least in the US make
   1461 nowadays.  They always say: &ldquo;How will I eat?&rdquo; but the
   1462 problem is not really how &ldquo;Will he eat?&rdquo; but &ldquo;How
   1463 will he eat sushi?&rdquo; &ldquo;How will I have a roof over my
   1464 head?&rdquo; but the real problem is &ldquo;How can he afford a
   1465 condo?&rdquo;</p>
   1466 
   1467 <p>The current system were chosen by the people who invest in software
   1468 development, because it gives them the possibility of making the most
   1469 possible money, not because it's the only way anyone can ever come up
   1470 with money to support a system development effort.  In fact, even as
   1471 recently as ten and fifteen years ago it was common to support
   1472 software development in other ways.  For example, those Digital
   1473 operating systems that were free, even in the early seventies, were
   1474 developed by people who were paid for their work.  Many useful
   1475 programs has been developed at universities.  Nowadays those programs
   1476 are often sold, but fifteen years ago they were usually free, yet the
   1477 people were paid for their work.</p>
   1478 
   1479 <p>When you have something like a program, like an infinite sandwich,
   1480 like a road, which has to be built once, but once it is built it
   1481 pretty much doesn't matter how much you use it, there's no cost in
   1482 using it, generally it's better if we don't put any price on using it.
   1483 And there are plenty of those things that we develop now, and pay
   1484 people to build.  For example, all the streets out there.  It's very
   1485 easy to find people who will program without being paid; it really is
   1486 impossible to find people who will build streets without being paid.
   1487 Building streets is not creative and fun like programming.  But we
   1488 have plenty of streets out there, we do come up with the money to pay
   1489 them, and it's much better the way we do it than if if we said:
   1490 &ldquo;Let's have companies go and build streets and put toll booths
   1491 up, and then every time you turn another street corner, you pay
   1492 another toll.  And then the companies that picked the good places to
   1493 put their streets, they will be profitable, and the others will go
   1494 bankrupt.&rdquo;</p>
   1495 
   1496 <p>There's a funny thing that happens whenever someone comes up with a
   1497 way of making lots of money by hoarding something.  Until that time
   1498 you've probably had lots and lots of people who were really
   1499 enthusiastic and eager to work in that field, the only sort of
   1500 question is how can they get any sort of livelihood at all.  If we
   1501 think of mathematicians for example, there are a lot more people who
   1502 want to be pure mathematicians than there is funding for anybody to be
   1503 pure mathematicians.  And even when you do get funding, you don't get
   1504 very much, they don't live well.  And for musicians it's even worse.
   1505 I saw a statistics for how much the average musician, the average
   1506 person devoting most of his time trying to be a musician, in
   1507 Massachusetts made; it was something like half the median income or
   1508 less.  It is barely enough to live on, it's difficult.  But there are
   1509 lots of them trying to do that.  And then, somehow when it gets
   1510 generally possible to get very well paid to do something, all those
   1511 people disappear, and people start saying &ldquo;nobody will do it
   1512 unless they get paid that well.&rdquo;</p>
   1513 
   1514 <p>And I saw this happen in the field of programming.  The very same
   1515 people who used to work at the AI lab and get payed very little and
   1516 love it, now wouldn't dream of working for less than fifty thousand
   1517 dollars a year.  What happened?  When you dangle before people the
   1518 possibility of making lots of money, when they see that other people
   1519 doing similar work are getting paid that much money, they feel that
   1520 they should get the same, and thus no-one is willing to continue the
   1521 old way.  And it's easy after this has happened to think that paying
   1522 people a lot of money is the only way it could be, but that's not so.
   1523 If the possibility of making a lots of money did not exist, you would
   1524 have people who would accept doing it for a little money, specially
   1525 when it's something that is creative and fun.</p>
   1526 
   1527 <p>Now I saw the unique world of the AI lab destroyed, and I saw that
   1528 selling software was an intrinsic part of what had destroyed it, and I
   1529 saw also, as I explained before, how you need to have free software in
   1530 order to have a community like that.  But then thinking about it more,
   1531 I realized all these ways in which hoarding software hurts all of
   1532 society, most specially by pressuring people to sell out their
   1533 neighbors and causing social decay.  The same spirit that leads people
   1534 to watch while somebody in the street is getting stabbed and not tell
   1535 anyone. The spirit that we can see so many companies all around us
   1536 displaying all the time.  And it was clear to me I had a choice, I
   1537 could become part of that world and feel unhappy about what I was
   1538 doing with my life, or I could decide to fight it.  So I decided to
   1539 fight it.  I've dedicated my career to try to rebuild the software
   1540 sharing community, to trying to put an end to the phenomenon of
   1541 hoarding generally useful information.  And the GNU system is a means
   1542 to this end.  It is a technical means to a social end.  With the GNU
   1543 system, I hope to vaccinate the users against the threat of the
   1544 software hoarders.</p>
   1545 
   1546 <p>Right now the hoarders essentially claims the power to render a
   1547 person's computer useless.  There used to be people in the US, most
   1548 commonly about fifty years ago, they were in the Mafia, they would go
   1549 up to stores and bars, especially bars when bars were illegal of
   1550 course.  They would go up and say: &ldquo;A lot of places around here
   1551 have been burning down lately.  You wouldn't want your place to burn
   1552 down, would you?  Well we can protect you from fires, you just have to
   1553 pay us a thousand dollars a month, and we'll make sure you don't have
   1554 a fire here.&rdquo;  And this was called &ldquo;the protection
   1555 racket.&rdquo;  Now we have something where a person says &ldquo;You
   1556 got a nice computer there, and you've got some programs there that
   1557 you're using.  Well, if you don't want those programs to disappear, if
   1558 you don't want the police to come after you, you better pay me a
   1559 thousand dollars, and I'll give you a copy of this program with a
   1560 license,&rdquo; and this is called &ldquo;the software protection
   1561 racket.&rdquo;</p>
   1562 
   1563 <p>Really all they're doing is interfering with everybody else doing
   1564 what needs to be done, but they're pretending as much to them selves
   1565 as to the rest of us, that they are providing a useful function.
   1566 Well, what I hope is that when that software Mafia guy comes up and
   1567 says, &ldquo;You want those programs to disappear on your
   1568 computer?&rdquo; the user can say &ldquo;I'm not afraid of you any
   1569 more.  I have this free GNU software, and there's nothing you can do
   1570 to me now.&rdquo;</p>
   1571 
   1572 <p>Now, one of the justifications people sometimes offer for owning
   1573 software, is the idea of giving people an incentive to produce things.
   1574 I support the idea of private enterprise in general, and the idea of
   1575 hope to make money by producing things that other people like to use,
   1576 but it's going haywire in the field of software now.  Producing a
   1577 proprietary program is not the same contribution to society as
   1578 producing the same program and letting it be free.  Because writing
   1579 the program is just a potential contribution to society.  The real
   1580 contribution to the wealth of society happens only when the program is
   1581 used.  And if you prevent the program from being used, the
   1582 contribution doesn't actually happen.  So, the contribution that
   1583 society needs is not these proprietary programs that everyone has such
   1584 an incentive to make, the contribution we really want is free
   1585 software, so our society is going haywire because it gives people an
   1586 incentive to do what is not very useful, and no incentive to do what
   1587 is useful.  Thus the basic idea of private enterprise is not being
   1588 followed, and you could even say that the society is neurotic.  After
   1589 all when an individual encourages in others behavior that is not good
   1590 for that individual we call this a neurosis.  Here society is behaving
   1591 in that fashion, encouraging programmers to do things that is not good
   1592 for society.</p>
   1593 
   1594 <p>I'm unusual.  I'd rather believe that I'm a good member of society
   1595 and that I'm contributing something, than feel that I'm ripping
   1596 society off successfully, and that's why I've decided to do what I
   1597 have done.  But every one is at least a little bit bothered by the
   1598 feeling that they are getting paid to do what's not really useful.  So
   1599 let's stop defending this idea of incentives to do the wrong thing and
   1600 let's at least try to come up with arrangements to encourage people to
   1601 do the right thing, which is to make free software.</p>
   1602 
   1603 <p>Thank you.</p>
   1604 
   1605 <p><strong>[After this RMS answered questions for about an hour.  I
   1606 have only included a very few of the questions and answers in this
   1607 version.  The tape was bad, and I didn't have the time to do a proper
   1608 job on all of it.]
   1609 </strong></p>
   1610 
   1611 <dl>
   1612 <dt><b>Q:</b> Has anyone tried to make problems for you?</dt>
   1613 
   1614 <dd><p><b>A:</b> The only time anyone has tried to make a problem for me
   1615 was those owners, so called, self-styled owners of Gosling Emacs.
   1616 Aside from that they have no grounds to do so, so there is not much
   1617 they can do.  By the way, I'd like to call everyone's attention to the
   1618 way in which people use language to try to encourage people to think
   1619 certain thoughts and not think of others.  Much of the terminology
   1620 current in the field was chosen by the self-styled software owners to
   1621 try to encourage you to try to make you see software as similar to
   1622 material objects that are property, and overlook the differences.  The
   1623 most flagrant example of this is the term &ldquo;pirate.&rdquo;
   1624 Please refuse to use the term &ldquo;pirate&rdquo; to describe
   1625 somebody who wishes to share software with his neighbor like a good
   1626 citizen.</p>
   1627 
   1628 <p>I forgot to tell you this: The idea of copyright was invented after
   1629 the printing press.  In ancient times authors copied from each other
   1630 freely, and this was not considered wrong, and it was even very
   1631 useful: The only way certain authors works have survived, even in
   1632 fragments, is because some of them were quoted at length in other
   1633 works which have survived.</p>
   1634 
   1635 <p>This was because books were copied one copy at the time.  It was
   1636 ten times as hard to make ten copies as it was to make one copy.  Then
   1637 the printing press was invented, and this didn't prevent people from
   1638 copying books by hand, but by comparison with printing them, copying
   1639 by hand was so unpleasant that it might as well have been
   1640 impossible.</p>
   1641 
   1642 <p>When books could only be made by mass production, copyright then
   1643 started to make sense and it also did not take away the freedom of the
   1644 reading public.  As a member of the public who didn't own a printing
   1645 press, you couldn't copy a book anyway.  So you weren't losing any
   1646 freedom just because there were copyrights.  Thus copyright was
   1647 invented, and made sense morally because of a technological change.
   1648 Now the reverse change is happening.  Individual copying of
   1649 information is becoming better and better, and we can see that the
   1650 ultimate progress of technology is to make it possible to copy any
   1651 kind of information. <span>[break due to turning of tape]</span></p>
   1652 
   1653 <p>Thus we are back in the same situation as in the ancient world
   1654 where copyright did not make sense.</p>
   1655 
   1656 <p>If we consider our idea of property, they come from material
   1657 objects.  Material objects satisfy a conservation law, pretty much.
   1658 Yes it's true I can break a chalk in half, that's not it, and it gets
   1659 worn down, it gets consumed.  But basically this is one chair
   1660 [pointing at a chair].  I can't just sort of snap my finger and have
   1661 two chairs.  The only way to get another one is to build it just the
   1662 way the first one was build.  It takes more raw materials, it takes
   1663 more work of production, and our ideas of property were evolved to
   1664 make moral sense to fit these facts.</p>
   1665 
   1666 <p>For a piece of information that anyone can copy, the facts are
   1667 different.  And therefore the moral attitudes that fit are different.
   1668 Our moral attitudes comes from thinking how much it will help people
   1669 and how much it will hurt people to do certain things. With a material
   1670 object, you can come and take away this chair, but you couldn't come
   1671 and copy it.  And if you took away the chair, it wouldn't be producing
   1672 anything, so there's no excuse. I somebody says: &ldquo;I did the work
   1673 to make this one chair, and only one person can have this chair, it
   1674 might as well be me,&rdquo; we might as well say: &ldquo;Yeah, that makes
   1675 sense.&rdquo;  When a person says: &ldquo;I carved the bits on this
   1676 disk, only one person can have this disk, so don't you dare take it
   1677 away from me,&rdquo; well that also make sense.  If only one person is
   1678 going to have the disk, it might as well be the guy who owns that
   1679 disk.</p>
   1680 
   1681 <p>But when somebody else comes up and says: &ldquo;I'm not going to
   1682 hurt your disk, I'm just gonna magically make another one just like it
   1683 and then I'll take it away and then you can go on using this disk just
   1684 the same as before,&rdquo; well, it's the same as if somebody said:
   1685 &ldquo;I've got a magic chair copier.  You can keep on enjoying your
   1686 chair, sitting in it, having it always there when you want it, but
   1687 I'll have a chair too.&rdquo;  That's good.</p>
   1688 
   1689 <p>If people don't have to build, they can just snap their fingers and
   1690 duplicate them, that's wonderful.  But this change in technology
   1691 doesn't suit the people who want to be able to own individual copies
   1692 and can get money for individual copies.  That's an idea that only
   1693 fits conserved objects.  So they do their best to render programs like
   1694 material objects.  Have you wondered why, when you go to the software
   1695 store and buy a copy of a program it comes in something that looks
   1696 like a book?  They want people to think as if they were getting a
   1697 material object, not to realize what they have really got in the form
   1698 of digital copyable data.</p>
   1699 
   1700 <p>What is a computer after all but a universal machine?  You've
   1701 probably studied universal Turing machines, the machines that can
   1702 imitate any other machine.  The reason a universal machine is so good
   1703 is because you can make it imitate any other machine and the
   1704 directions can be copied and changed, exactly the things you can't do
   1705 with a material object.  And those are exactly what the software
   1706 hoarders want to stop the public from doing.  They want to have the
   1707 benefit of the change in technology, to universal machines, but they
   1708 don't want the public to get that benefit.</p>
   1709 
   1710 <p>Essentially they are trying to preserve the &ldquo;material object
   1711 age,&rdquo; but it's gone, and we should get our ideas of right and
   1712 wrong in sync with the actual facts of the world we live in.</p>
   1713 </dd>
   1714 
   1715 <dt><b>Q:</b> So it boils down to ownership of information.  Do you
   1716 think there are any instances where, [in] your opinion, it's right to own
   1717 information?</dt>
   1718 
   1719 <dd><p><b>A:</b> With information that's not generally useful, or is of a
   1720 personal nature, I would say it's OK. In other words not information
   1721 about how to do things, but information about what you intend to do.
   1722 Information whose only value to others is speculative, that is they
   1723 can take some money away from you, but they can't actually create
   1724 anything with it.  It's perfectly reasonable I'd say to keep that sort
   1725 of thing secret and controlled.</p>
   1726 
   1727 <p>But in terms of creative information, information that people can
   1728 use or enjoy, and that will be used and enjoyed more the more people
   1729 who have it, always we should encourage the copying.</p>
   1730 </dd>
   1731 </dl>
   1732 </div>
   1733 
   1734 </div><!-- for id="content", starts in the include above -->
   1735 <!--#include virtual="/server/footer.html" -->
   1736 <div id="footer" role="contentinfo">
   1737 <div class="unprintable">
   1738 
   1739 <p>Please send general FSF &amp; GNU inquiries to
   1740 <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
   1741 There are also <a href="/contact/">other ways to contact</a>
   1742 the FSF.  Broken links and other corrections or suggestions can be sent
   1743 to <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
   1744 
   1745 <p><!-- TRANSLATORS: Ignore the original text in this paragraph,
   1746         replace it with the translation of these two:
   1747 
   1748         We work hard and do our best to provide accurate, good quality
   1749         translations.  However, we are not exempt from imperfection.
   1750         Please send your comments and general suggestions in this regard
   1751         to <a href="mailto:web-translators@gnu.org">
   1752         &lt;web-translators@gnu.org&gt;</a>.</p>
   1753 
   1754         <p>For information on coordinating and contributing translations of
   1755         our web pages, see <a
   1756         href="/server/standards/README.translations.html">Translations
   1757         README</a>. -->
   1758 Please see the <a
   1759 href="/server/standards/README.translations.html">Translations
   1760 README</a> for information on coordinating and contributing translations
   1761 of this article.</p>
   1762 </div>
   1763 
   1764 <!-- Regarding copyright, in general, standalone pages (as opposed to
   1765      files generated as part of manuals) on the GNU web server should
   1766      be under CC BY-ND 4.0.  Please do NOT change or remove this
   1767      without talking with the webmasters or licensing team first.
   1768      Please make sure the copyright date is consistent with the
   1769      document.  For web pages, it is ok to list just the latest year the
   1770      document was modified, or published.
   1771      
   1772      If you wish to list earlier years, that is ok too.
   1773      Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
   1774      years, as long as each year in the range is in fact a copyrightable
   1775      year, i.e., a year in which the document was published (including
   1776      being publicly visible on the web or in a revision control system).
   1777      
   1778      There is more detail about copyright years in the GNU Maintainers
   1779      Information document, www.gnu.org/prep/maintain. -->
   1780 
   1781 <p>
   1782 Copyright &copy; 1987, 2022 Richard Stallman and Bjrn Remseth
   1783 </p>
   1784 <p>
   1785 Permission is granted to make and distribute verbatim copies of this
   1786 transcript as long as the copyright and this permission notice appear.
   1787 </p>
   1788 
   1789 <!--#include virtual="/server/bottom-notes.html" -->
   1790 
   1791 <p class="unprintable">Updated:
   1792 <!-- timestamp start -->
   1793 $Date: 2022/06/10 16:48:04 $
   1794 <!-- timestamp end -->
   1795 </p>
   1796 </div>
   1797 </div><!-- for class="inner", starts in the banner include -->
   1798 </body>
   1799 </html>