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ögskolan</i> (Royal Institute of Technology) in 22 Stockholm, Sweden, arranged by the student society <i>Datorföreningen 23 Stacken</i> on 30 October 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: “<i>Janne, han trenger ingen 54 mike.</i>” (Translation: “Janne, he doesn't need a 55 mike.”)]</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: “This room is 107 Mine, I can lock it, to hell with everyone else,” 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 “take these back and bring us some new ones.”</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 “munching squares” 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, “we're going to have a disaster, 275 we must have commercial software,” and they said “we can 276 expect the company to maintain it.” 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 “so-and-so must be reading your mail, can it be that 299 mail files aren't properly protected on your system?” “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.” 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: “There was another attempt to seize power. So far the 337 aristocratic forces have been defeated—Radio Free OZ.” 338 Later I discovered that “Radio Free OZ” 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 “empty 352 password,” 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 “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.”</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 “tourism.” Now “tourism” 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 “But what if he starts changing our system programs?” 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 “spy” 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 … <span>[At this point RMS is interrupted by 420 tremendous applause.]</span> … 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 “million monkeys 449 typing, and eventually they'll come up with something useful” 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—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 “Gnu's Not 495 Unix.” 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: “Tint Is Not Teco,” and later on 498 it went through names such as “SINE” for “SINE Is 499 Not Emacs,” and FINE for “Fine Is Not Emacs,” and 500 EINE for “Eine Is Not Emacs,” and ZWEI for “Zwei Was 501 Eine Initially,” 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 “the free university compiler kit,” 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 “No, the university might be 512 free, but the software they develop isn't,” 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 “off-color PASCAL.”</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 “string” 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: “Give me the object of type FLOAT 689 or DOUBLE at this address” 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 “value 692 history.” 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 *$.next</code>, which says: “Get 698 the next field out of the last 699 thing you showed me, and then display the structure that points 700 at.” 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 “stop when you get to this point in the program, but only if 718 a certain expression is true.” 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=<some number></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+=<something></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 “profiling” 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 “capability 1015 ports” 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 “Search the versions that exists for FOO and take the 1062 latest one.” But if you say <code>FOO.</code> it means 1063 “use exactly the name FOO and none other.” If you say 1064 <code>FOO.3.</code> it says “use exactly the name FOO.3” 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 “star matching,” 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 … 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 “<kbd>halt</kbd>” 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 “When is it going to be finished?” 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 “how can you help make it get 1146 finished sooner?” 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 “RMS@GNU.ORG” (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 “Commune,” 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, “I like this 1280 program, my neighbor would like the program, I want us both to have 1281 it,” instead he said, “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!” and that spirit is what does the spiritual harm. 1284 That attitude of saying, “To hell with my neighbors, give ME a 1285 copy.”</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 “half worked.” 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: “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 … when it's over 1351 I'll go away and try not to think about it any more.” 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 “look at the large employment statistics, look at how big 1388 this industry is” 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 “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!!” 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: “Nobody 1437 should be able to mess up my work of art.” 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 “Oh, no. I designed this 1441 dish, and it has to have this much salt!” “But my doctor 1442 says it's not safe for me to eat salt. What can I do?”</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 “How will people get payed to program?” 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 “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” on the one hand, and to say “We need to have the 1458 current system, you need to get rich by programming” 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: “How will I eat?” but the 1462 problem is not really how “Will he eat?” but “How 1463 will he eat sushi?” “How will I have a roof over my 1464 head?” but the real problem is “How can he afford a 1465 condo?”</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 “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.”</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 “nobody will do it 1512 unless they get paid that well.”</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: “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.” And this was called “the protection 1555 racket.” Now we have something where a person says “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,” and this is called “the software protection 1561 racket.”</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, “You want those programs to disappear on your 1568 computer?” the user can say “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.”</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 “pirate.” 1624 Please refuse to use the term “pirate” 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: “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,” we might as well say: “Yeah, that makes 1675 sense.” When a person says: “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,” 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: “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,” well, it's the same as if somebody said: 1685 “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.” 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 “material object 1711 age,” 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 & GNU inquiries to 1740 <a href="mailto:gnu@gnu.org"><gnu@gnu.org></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"><webmasters@gnu.org></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 <web-translators@gnu.org></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 © 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>