[00:00] For those of you who don't know me, I'm Chris Foster, I'm president of the Free Software Society and I thank you for coming today. We are absolutely completely honored to have the executive director of the Free Software Foundation, an active member in the software development community and the boss of Free Software bosses pretty much, Mr Bradley Kuhn. [applause] [00:28] So... This talk is probably different, than most of the talks that happen here in any kind of academic setting. It tends to be the case that in computer science and in the sciences in general, people tend to avoid political and ethical issues surrounding the field. And in the Free Software community, for decades now, we have focused on the ethical and political implications of software. These days a lot of people focus on the software that our movement produced, the free software that exist embodied today in GNU+Linux systems or the various BSD systems that are available, they think about it in terms of its reliability, its dependability, and how functional it is. But we continue in the Free Software Movement to focus on the ethical and political implications of the software and what rights people have. In fact we believe that the issues of technology and how good technology is and how functional it is are ultimately secondary to the questions of what kind of community is surrounding that software. And we focus on the idea of augmenting the community of software users and programmers, and fostering cooperation and good will between programmers and users alike. And that continues to be the issue we focus most on. [02:02] What I want to demonstrate to you tonight through some personal anecdotes, through some philosophical consideration and through a little bit of historical perspective about the movement, is to show you how Free Software can build and create cooperating communities of software developers and users and how by direct contrast proprietary software, the functional opposite of Free Software, tears down and impedes the creation of cooperating communities. Unfortunately, because English has a bug in it, I have to start by defining terms. It's always unfortunate when you have to start a conversation by defining your terms. Well, English has more words than any other language on the planet, it still only has one adjective for two very different concepts. When we're talking about free software we're talking about free as in freedom not necessarily in price. So think about free speech, not free beer. I know that's hard for college students to think about and avoid the free beer aspect of what we do but for the evening I hope you'll focus on the ideas of free speech rather than free handouts or free beer. Other languages of course make this distinction clear, in Spanish there is the adjective "libre" and the adjective "gratis" which are referring to these two different types of free. We don't have that in English unfortunately. [03:36] So, Free Software is defined in terms of what freedoms you, a particular user, receive with the software. And it's always defined in the context of specific users because a given software system could be Free Software for one person and the exact same system might not be free as in freedom for another person. [04:00] The first freedom that you as a user get with Free Software is the freedom to run and use the program for any particular purpose that you can think of. This includes any purpose that the original programmer who wrote the software or the original distributor of the software might not even have considered. This freedom is often these day restricted even with proprietary software. It used to be the case that all software by and large gave you this freedom, but these days, you can get versions of Microsoft Frontpage (for example) that forbid you from creating any web pages with it that say negative things about Microsoft. So even that freedom to run and use the program for any purpose doesn't exist sometimes with proprietary software. With Free Software you always get that right. You can use the software for anything you can think of, including exercising your free speech right to say how much you hate the Free Software Foundation or something like that. [04:56] The second freedom that you get is the freedom to help yourself by improving, changing, modifying or otherwise adapting the software to suit your own needs. And of course, if you are a software programmer, you can take direct benefit from this freedom. Because you understand how software works and you can look at the software source code (which, by the way, is a prerequisite for this freedom) because even making the most trivial adaptations or modifications to computer software without its source code -- the original "stuff" the programmer generated -- is virtually impossible. So all Free Software by prerequisite has to come with the source code, so that you can modify that source code to improve the software to suit your needs. This freedom, as I said, directly benefits programmers but it also indirectly benefits non-programmers -- people who don't know how to write software. This is because they are allowed to ask anyone they want, to modify or adapt the software on their behalf. And an interesting thing comes up with regard to Free Software in this case. You have this same freedom whether you choose to exercise it in a noncommercial sense or in a commercial sense. So -- if you have, rather, if you're a software user but not a programmer and you have a Free Software program that doesn't work quite right for you, it has a bug or is missing a feature that you need, you can ask a friend as an altruistic act to improve or fix the software for you. But you can also -- if you can't convince a friend of yours to fix it without paying them -- you can hire anyone you'd like on the competitive free market to fix the software. You can hire someone to do the work for you. So this freedom, and all the other freedoms I'm going to talk about, always work in both a noncommercial and a commercial sense. And the Free Software licenses that we've produced and ones that we've approved as things we think are Free Software licenses make sure that the noncommercial and the commercial freedoms are treated equally -- that you have an equal right to make money from free software and you haven an equal right to engage in various activities non-commercially. [07:13] The third freedom that you get is the freedom to help other people, by sharing your software. This, again, can be done altruistically or as part of a busyness model. You can share Free Software. If your friend sees you running a copy of a free program you can give them a copy, and make a copy immediately for them and distribute it to them. All Free Software licenses give you this right. But you also have the freedom to go into the commercial business of sharing software. We have a specific name in our economic culture for commercial sharing of software. It's usually called "distribution" or "putting software for sale". With Free Software you can charge any price you would like. If you can get people to pay you that price for the software, you are permitted to sell it at that price. You can of course put it for sale at any price you like but you may not get an opportunity to sell a copy of gcc for $1,000,000. (Although MontaVista seems to be able to get $15K a copy for the same stuff you can download from our website.) So there is substantial money that you can make from distributing Free Software. Red Hat, for example, early in their business model, made a lot of money selling copies of distributions of GNU/Linux, especially before high speed connections were common among their user base. They were able to sell box sets for around $40 or $50. And that price was set by what the market would bear and what they felt they could get for it. Free Software has no requirements on you about how much or how little you can charge for distribution. So that's your third freedom, you freedom to help other people by sharing the software. [08:49] The fourth and final key freedom that you get with Free Software is the freedom to help the community at large, effectively by combining the previous two freedoms. If you modify or adapt a Free Software program to suit your needs, you have the right, if it's Free Software, to then distribute that modified or improved version to other people if you'd like. Again, this can be done in an altruistic way or as a commercial endeavor. A lot of Free Software gets developed by people posting a patch to a mailing list, a discussion list about the development of a particular software program, and encouraging the original developers to include that patch or improvement into the typical version of the software. And incrementally the software gets better by people altruistically contributing changes. But that's not the only way you can help your community. You can also go into business -- selling you services as someone who can modify or improve Free Software or adapt it to suit the needs of your clients. So that's again a very important aspect (that I really can't stress enough_ that commercial and noncommercial endeavors are treated as fully equal by Free Software licenses. If it's Free Software you have both a noncommercial and a commercial right to copy, share, modify and redistribute the software as much as you'd like. [10:15] Now by contrast you can define proprietary software, which is the term we use for the "opposite" of Free Software, as software that restricts most or all of these freedoms. As I mentioned, sometimes the freedom to run or use the program is often restricted by various licensing terms that prohibit you from doing certain things with the software. The freedom to modify or improve the software is usually restricted in two different ways with proprietary software. First, the licensing agreement that you are required to sign or agree to upon opening the package (a legally dubious tactic, by the way) might say: "You are not permitted to modify or reverse engineer this software to figure out how it works." But they also put a very practical constraint on your ability to modify or improve the software. Software is a very special kind of copyrighted work in our culture. Most copyrighted works (in fact in pretty much all other copyrighted works except for software) come in their transparent form. Until the days when we have the chips in our brain which you can download a whole novel or motion picture into your head, you actually have to experience the piece of literature or the motion picture up on the screen, in its [native] form actually presented under copyright. So if you read a novel, even if it's by William Faulkner and very dense, you actually get to see the words, word-by-word, that composes the literary work. If you go to see a film -- even if it's directed by David Lynch and completely bizarre and you can't figure out -- you at least get to see, frame-by-frame and sound-by-sound, what the image and what the vision is and what the effect his work has. So you always get, in other copyrighted works, presented with the material itself -- not so with software. When a proprietary software company presents their software to you, you get it only in the form that the computer can understand, the binary "ones and zeros" that execute to make the program act. You don't actually get the true copyrighted, original, reproduced work, as you do when you get a copy of a motion picture or when you get a copy of a musical song or when you get a copy of a novel. The original work that is in fact under copyright is the source code of the software. But, because computer software has this special thing where, by-and-large, it needs to be compiled into a binary of some form (or into a byte-code of some form) before it can be executed by the computer, they can distribute to you only those binary- or byte-code-compiled versions of the software, and not distribute the source code to you. So they have, of course, the licensing restriction against reverse engineering and trying to figure out how the software works. But, they also have this practical constraint that really is a happenstance of the way software happens to work. It's almost by historical accident that you only get the binaries of software and not the source code. It's just the way software happens to work. [13:20] Now, of course, your freedom to help others is severely restricted because of the licensing agreement that you have to agree to; it prohibits you from sharing. You immediately have to agree, upon opening a package of a proprietary software program, that you're not going to help anyone else by sharing a copy with them. Even though it's zero-marginal-cost to make a copy, and this takes a little bit of electricity and some hard drive space. So that freedom to help others by sharing is restricted with proprietary software again by the licensing terms. And, of course, since you have neither of those two freedoms, you don't have the freedom to help the community by sharing improved versions, by the nature of not having the source code, and not having the licensing permission to do these things. [14:04] So, I've laid out these two different worlds of Free Software and proprietary software, and how the rights that you get are set up in each of the worlds. But I haven't really shown you yet, at all, why these particular freedoms are important. In our society we frequently give up what are some "so called freedom" because there is just no reason for us to have that particular "freedom", and society gains some benefit from us not having it. For example, we don't have the "freedom" in our society to drive an automobile in any direction we want at any speed we want at any time we want on any road we want. We've decided as a culture that those aren't really freedoms that are of any consequence -- that it's a much better society when we have stop signs and stop lights and traffic laws because the safety of the people is more important than a particular drivers right to speed down the highway or down the road at any speed, ignoring all stop signs and stoplights and so forth. So we've decided as a culture that that thing -- driving in any direction we want at any speed we want at any time we want -- isn't something that matters. And we've decided as a society we're just going to give that up and let it go. So when I look at this question -- of why these freedoms are important-- I look at it from the terms of what harm is caused by not having these freedoms. If you don't have the right to do those things that are laid out you're allowed to do with Free Software, who is hurt and in what way are they hurt? [15:39] And a lot of you, I think who are probably my age or younger -- you know when you're 30 or younger -- grew up in this age where we have both Free Software around and proprietary software around. You probably all heard of GNU+Linux, although you probably heard it under the name Linux. You probably even used it in one of your classes and so forth. And you probably also used the stuff from the monopolist down the block, that is available to you under some licensing terms, and you probably haven't thought about this question at all, I would guess. I certainly didn't as I entered my career and I was really skeptical about these ideas of freedom that I read about on the FSF's web page and so forth. And, I actually spent 14 years of my career thinking about the question. And, I actually came to the same conclusion that the founders of our organization did in the end, because of specific experiences that I had in the industry that began to show me that there was real harm caused, by proprietary software and by the practice of propagating proprietary software in our information technology industry. [16:47] And this 14 year journey begins, for me, when I got my first computer. I got a computer that probably by this time you guys remember only as an antique. A Commodore 64 was my first computer. The older people in the crowd seem to know what that is, but the younger people might not. That's just things you download ROM-s for, right, in these days? And it didn't come with a whole lot of software. It had BASIC that was burned onto the ROM chip in the computer. So you got the BASIC programming language with it (well, Commodore's version of BASIC at least). And if you wanted more software you had to get some peripheral device to plug into the machine. So the first thing I got was a little tape deck, that --, you actually had a tape deck that you record programs, on which took forever to load a program. It would take hours to load a single game or something (well, you know, it seemed like hours I was of course 10 years old at the time so anything seemed like hours if it was more than 5 minutes). And I got sick of that, so my parents finally bought me the 1541 floppy drive unit, which was about that long and that high and probably that wide [shows size with hands], something like that. It was a pretty big device! It weighted more than my laptop sitting over there does now. But it was, in some sense, a portable device. You could carry it under your arm, at least. It was a little bit heavy. So I got this 1541 floppy drive. And so I started looking for software. And all the software was available in the store, if you could get it. But I found there was a lot of other people who had Commodore 64s. And I went to this club in my neighborhood for Commodore 64 users. And I found other kids my age who also had a Commodore 64 and a 1541 floppy drive, and we started to hang out together. And in our age, 10 or 11 years old, we didn't see the computer as anything different than the rest of our toys. So we had an attitude about the machine and the programs for it that were very similar to the attitude our parents had instilled in us, regarding how to deal with our toys. And there was two key rules that went around my neighborhood about how you ought to play with your toys. The first rule was that you should always share you toys. You should always make sure that everybody got a turn. That nobody was left out and didn't have a turn to play with the best action figure or the best ship in the action figure's universe or whatever. You made sure everybody got a turn to play with the toys in equal measure. The second thing we were supposed to do, and this was a really big deal when I was a kid, was we were supposed to invent games that could include everybody's toys. And this was a particular problem because, at the time, Star Wars figures were probably the largest selling toy. But there was also a whole set of knock-offs of "generic universe" space action figures. And they were about half the price of Star Wars figures so the kids whose parents didn't have as much money in the neighborhood bought them, you know, the generic space universe action figure. And the kids who had a little bit more money got the real Star Wars official Galoob rubber-stamped versions of Luke Skywalker and Darth Vador and so forth. And there was this big argument in my community about, you know, playing with the kids who didn't have the real action figures. And our parents were always saying: "Well, you've got to play with those kids too and let them be part of your group even though you have different action figures". So this rule was developed that you tried to include everybody's toys and make sure that everybody's toys could come in to play in the particular thing you were doing. [20:08] So, here we are with our computers. And we treat them fundamentally the same way. And we found both rules applied. First of all, we found that everybody could get a turn because there was a really neat thing you could do. If you took two of these 1541 floppy drives and you plugged one to the other and ran a cable to the Commodore 64 unit you could make copies of pretty much any disk that you had. So every game that we had could be copied. And we could share it with all of our friends. And we discovered that we were actually engaged in the sharing activity, and it was a lot easier than it was with single physical-object toys because you didn't have to pass them around to take turns. When everybody got a copy, you could play the game together and you could all go home and play it separately as well. So that [sharing] rule fit well with what we were doing with our computers. Of course the second rule, by proxy, fit because to actually make these copies you had to bring your 1541 drive over to someone's house. You couldn't make the copies by yourself. You needed two disk drives to actually get it done at any [reasonable] speed. With one drive, you had to swap disks all the time -- swapping them back and forth. So you'd bring your 1541 drive over to make copies of disks. You had [in fact] invented a game that included everybody's toys and everybody got to share. Our parents actually discovered we played a lot nicer with our computers than we did with our Star Trek toys or Star Wars toys. So everything seemed to work out ok. And it was going ok for a few months. [21:31] And then we started to discover that not everybody had the same philosophy about sharing that we did. I discovered this one month when I went to the Commodore 64 club and one of the adults in the club (there were a few as it turned out) was presenting a video game that she had just got called "Little Computer People". And there was this little person that lived inside your computer and you had to take care of them and deliver their newspaper and make sure they got fed every day and had to feed their dog as well. And the coolest part about the game for me, at the age of 10, was that it remembered the last time you ran the game by checking the system clock. And if you took a while to run it, it would compl-- the little person would complain at you that you hadn't been by to visit in a long time and they were wondering what the news was and so forth. This was just the greatest game I'd ever seen. And she did a little demo of how she played it and so forth. And met her little person that she was taking care of at her computer. And I went up afterwards and said: "I found this is just the best game I've ever seen. Can I please get a copy so I can play it at home?" And her eyes darted a little bit. And my first thought was maybe she didn't have time that day to make the copy because there were not a bunch of drives around to do it. And I said, I said "Look if you are too busy today my parents can drive me over to you house tomorrow -- it's Saturday -- and we can hook up the drives and it only takes a few minutes and I can get a copy." And she still didn't want to do it. So I, like 10-year-olds tend to do, kept pressuring her, asking her: "Could you please get me a copy of this game?". And finally she looked at me and said: "I can't make a copy for you; it's illegal". And this was kind of strange to me. So I described to her that my friends did this all the time and it was no big deal and it couldn't possibly be illegal. After all, you know, the police never came over to our house and said we weren't allowed to do this. And it's what our parents told to us to do and after all we're sharing. And she stopped me and said: "You and your friends are criminals." In fact she had a specific word for the kind of criminals we were. She said that we were "pirates". At 10 years old, I had a pretty clear image of what a pirate was. So as she's telling me that I'm a pirate my mind flashed to this imaginary Scooby-Doo episode in my head. Where the villain of the week are "s-s-s-software p-p-pirates". And I imagine my friends and I as being chased around by the Mystery Gang and finally catching us in the end. And Fred (the ascot-wearing alpha male of the Mystery Machine) says: "Look, they did it by hooking two 1541 drives together." And we turned around and we'd take our masks of and say: "We would've gotten away with it, too, if it wasn't for you darn kids!" This image of what we were doing didn't fit with the reality. We seemed to be doing what our parents wanted us to do. We seemed to be sharing and helping each other. That seemed right to me but I couldn't really explain that to Eveyln at 10 years old so I did what most self-respecting 10-year-olds would do and said that she was really mean and stormed out of the meeting and didn't come back. [24:25] But it continued in my mind that there were people in the world who didn't think sharing made sense. And I really didn't understand why people felt this way and why the world was structured this way. But the experience stayed with me until about 10 years later, uh, 9 years later, when I got my first programming job. And I began to experience that, in the real world, just like in the kids world of video games, the feeling about sharing was pretty much the same. But the consequences were a lot bigger. My first programming job was for a blood typing laboratory. They did mostly paternity suits in those days of people that-- One woman accuses the guy being the father and they all get blood-tested and we did calculations to figure out the probability that he was the father or wasn't the father. And we wrote and fixed the software system [for it]. And underneath we used the Informix database products as the whole database that stored all the blood lab results and so forth. We were running this on an AT&T system V release 3.2 on an AT&T 3V2 600, you know, a big iron UNIX machine. And I was excited that I got to use a real UNIX system for the first time in my life. I even enjoyed learning the vi text editor, that's how excited I was. And after a couple of weeks I started getting assignments to work on various programs and of course every program we wrote had to, underneath, talk to the Informix database system, we did it through a library writing embedding SQL statements in the C code. So every program you wrote linked against the ESQL-C library provided by Informix. So after a couple of weeks I started to discover various bugs in the software I was working with. I couldn't figure out what I was doing wrong in various cases but my programs didn't seem to work correctly. And I spend 4 or 5 days, maybe a week, trying to figure out why it was that a particular program wasn't functioning. And I done programming long enough (since I was a kid) that I knew, if you have a piece of code that doesn't work, get it down to the smallest number of lines that can produce the bug so that you can isolate it and try and figure out what's going on. So I did that and still couldn't find the problem. I went to one of my co-workers, you know, somebody much older -- probably 10 years or 15 years older than me -- and said "Greg, I'm trying to figure out why this software doesn't work. Could you look at my code and see what I've done wrong?" And he looked at my code and audited it line by line (this little short example I had that exhibited the bug) and said: "Everything looks fine. I don't think it's actually a bug in your program. I think it's a bug in the underlying Informix library." I said: "Well that really can't be possible because we got the Informix stuff in a shrink-wrapped box with a manual. So how can it possibly have any bugs in it?" [crowd laughs] And he tells me "No, no, no. I've been working with Informix software for 10 years; there's tons of bugs. But fortunately this particular client site has a tech-support contract. So you can call up and report the bug and explain it to them. You can even e-mail your code example to them. And they'll look into it and get back to and tell you how to fix it or how to work around it if they don't have a fix for it." I said "Ok, great." So I called up the tech-support line and, this is programmer tech-support, so it's not the, you know, Tier-1 tech-support, but actual programmers on the other end you get to talk to, which is, you know, pretty good support, all things considered. At least we thought so. I explained the bug to this guy and he took it down, and I e-mailed him the little code example and he looked it over. And a couple days later he called me back and said: "Yeah, this is a bug in the library on the AT&T 3b2 platform and I don't know when it's going to get fixed. We don't have a work around at this time. Could I just close out the bug report?" I said "Well, I really need a fix, you know. I've been dealing with this for a while and I really want to find a way to fix it. I mean, maybe we can talk through it; we can figure it out. I know the 3b2 platform is a little quirky. You know, it was hard to get things compiled and didn't have sockets, you know. This is bizarre, I know. And so forth. So I said: "Well, maybe we can help figure out what's going on." He says, he says "No I'm pretty sure--". And I asked: "Why is it 3b2 specific, you know, is it fixed on other platforms?" He goes: "Oh yeah, it's been fixed on-- this particular bug has been fixed on SunOS for a couple of years but there has never been a 3b2 back port of that fix." I said: "Well, maybe, maybe we can do something about the 3b2." He says "No, there's nothing that can be done. I just need to close out the bug report. Is that ok?" [28:55] And this experience was pretty surreal. As I was saying, we had become kind of experts on this platform. It was quirky -- it was pre System VR4 and we had gotten used to the way of getting various things working on the platform and how it differed from other UNIX-like systems. So I probably didn't know enough about the platform to fix it, but Greg probably did, or somebody on the site probably did. But I didn't even bother to ask him for this code because I had learned, 9 or 10 years before, what happens when you ask people to share software with you that don't want to share it with you. So I just hung up-- neatly hung up the phone and gave up. And it was really, I think, a surreal experience because this was programmer tech-support. They're supposed to help other programmers. But the first thing that probably happened the first day this guy went in to work was he was ordered to sign something that made him promise not to do his job. He probably had to sign a non-disclosure agreement about the software he was viewing. He probably was required, as part of his job, to not help the programmers who called him, in the most natural way two programmers help each other. I'm sure those of you that are computer science students have had the experience of trying to get a friend to help you debug a program. And eventually it comes down to showing the friend your source code so they can see what you're doing. Because even anything beyond the most trivial of questions, requires actually looking and sharing the source code to work together to solve the problem. But in this particular case, the tech-support for programmers was set up in a way that required that they not help any programmers whatsoever, in the natural way that two programmers help each other. I think that this is a bizarre thing to have, be true. But, it was standard and often still is standard. When you get tech-support for programming from somebody who produces middleware, they are not allowed to share the software with you and help you in the most natural way that makes sense. So I just gave up on that particular problem and I found that as my career continued, this happened over and over again. I was always in the situation where I was helpless to solve some particular problem because the upstream software that we had, had some bug or another in it. And it's not just that I and the programmers I worked with lost productivity, the users lost a great deal of productivity as well. The company I was working for did blood typing on lab results. They didn't care where the bugs were that we had to find. They wouldn't even have cared if we had made the change and donated the software back to Informix. All they wanted was for the software to work so they could get their job done. That had nothing to do with what the underlying database did or some bug in the software. They would have happily payed us to find Informix's bug, so that we could move on and get to the next thing that we needed to do for them. And the problem was, though, that we didn't have the freedom to do that. We didn't have the right to do that because the software was licensed under proprietary terms. [32:04] And as I continued my software development career it continued to be pretty much the same. So I decided at one point that I wouldn't do software development any more. That there was another career I could have, another career track in computer science, that I could do. And I heard how easy it was and you didn't have to do any work, you just sat around all day. It was called system administration. [crowd laughs] So I was pretty excited until I actually started doing the job and realized that it was a lot more work most of the time than software development. And a lot more "under the gun" kind of stuff. But, at the time, I was excited 'cause it sounded real easy -- in the land of dreams where you just sit there and hide from the users and never do any work. [32:42] So, my first sysadmin job that I got was for Westinghouse (by-and-large the divisions I worked for don't exist anymore -- they were swallowed up by Northrop Grumman). And I was with the mobile satellite telephone division of Westinghouse. These were satellite telephones that talk directly up to the satellites and don't go through any of the typical cellular mobile infrastructure. And they're used in-- Forest Rangers use them and, and other places where you don't have infrastructure. They're used in a lot of rescue environments where, if you have a hurricane going on in Florida, the mobile towers might be down or not functioning. So you have a way to communicate with regular telephones with regular telephone numbers across a satellite link. And they were pretty expensive devices and they developed the embedded software that went inside the telephones. And I was just supporting their use of the Solaris systems, that were there, that they used to actually do that software development. So the details of what I was doing really didn't matter to what the company was doing. They just needed these machines to work, so that they could get their job done. To write this software, so that forest rangers could talk to each other and that they could do rescue situations when there were hurricanes and that sort of thing. So I was in charge of these Solaris machines. And they had a whole list of bugs when I showed up. They had been without a sysadmin for a while and there was these annoying things about the system as it was set up that were causing them trouble. [34:01] The number one thing on my list was, the-- They were using this NIS+ authentication system, a proprietary Solaris login authentication system, and they discovered this bug that when xdm, which is the, which is the X-windows login program that presents you with you login password prompt on an X-windows screen, that when they typed in their username and password the first time in the morning, it didn't work correctly. Even if they typed everything without any mistakes. And they discovered, though, that those users who had logged in the night before, through a modem connection via remote access, were able to login just fine. So it was some sort of timeout bug with the length of time since you'd last logged in. So what they would do every morning is, they would find somebody who had logged in the night before. Which means anyone who got in that morning and had an active login, they'd go over to their machine, remotely log in to the machine back on their desk, which made an active login. They'd log back out; they'd come back to their machine and log in, and everything would work fine, because they'd recently had a remote login close enough so the timeout bug wasn't causing a problem. This took about 45 minutes every morning. Everybody would wander around to each others desks -- trying to find somebody who got an active login that morning -- use it to log back into their own machine and everybody would be able to log on. It worked "just fine". Uhm, and there was a Westinghouse rule that you couldn't leave a soft login overnight, so they couldn't do that either. So they, they had this problem, and they wanted me to solve it and find a way that they didn't have to wander around. Management was particularly worried about this because it was wasting valuable time. Every morning all these people wandered around and chatted looking for active logins. [35:31] So I had looked into the problem and I found actually on Sun's website a list of bugs related to NIS+ with their interaction with X-windows and this was actually one of them. "Xdm login not functioning but remote OK" or something like that. So I called them [Sun] up and said: "Great, you know about this bug already". I don't have to like convince them it's a real bug. I called up Sun tech-support and said: "Hey look, we have this bug. We don't know what to do. How do I fix it? It's not working and you've got patches for Solaris 2.5 but we're running 2.4. You know, can we get the backported patch for Solaris 2.4." And they said: "Well, no, you have to upgrade to Solaris 2.5." And I saidL "Well, how much is that?" It was like $800 a seat, or something like that. I said: "Well, we can't do that. (1) because I don't have the budget for it. (2) because we've actually done an ISO 9000 regression test on the whole environment. And it has listed in it all the versions of software we're using and the only thing we can get away with doing are critical bug fixes. We can't do any major change to upgrade the operating system; we just have to stick with bug fixes. And after all, Solaris 2.4 is only about a year and a half old at this point. So it's still pretty actively used." And I said: "By the way, I noticed that you fixed a number of other X-windows/NIS+ interaction bugs on the website for 2.4 and there is patches for those, which of course I've installed, but they don't fix this particular bug. Why did you fix some of them and not all of them?" They said: "Oh, we did those because NASA requested them and they are a big Sun customer. And they can tell us to do things and we have to do them, but you're just not a big enough Sun customer to demand that kind of service." Now, of course, I was surprised to learn that Westinghouse was a small Sun customer, [crowd laughs] because Westinghouse was pretty big in these days, but we were a small division of Westinghouse so they treated us like a tiny customer. So, I wasn't able to fix the problem. [37:17] And I found that I found myself going back to the users and delivering that same message, that I had heard a couple of years before from the Informix tech-support guy: "Yeah, this is a bug in NIS+. No, I don't know when it's going to get fixed. We're just gonna have to hope somebody logged in the night before, so we can all get logins in the morning." So that kind of apathy that gets created by proprietary software is rampant. People don't feel like they can get their jobs done, and they are not empowered to get their jobs done, because they don't have access to the software. I'd actually run strace against the binary; I knew the exact place where it was making the call back to X-windows and exactly -- more or less exactly as I didn't have the source code -- what needed to be fixed. Or at least where the bug would be and where I'd have to go in the code. But I didn't have access to the source code for the version of X-windows I was running, I didn't have access to the source code for NIS+. Sun didn't want to help me because I wasn't NASA. So I had nothing I could do tho fix the problem. Just had to hope that the users would be happy with the shoddy system that they had. [38:20] Now all of this isn't to say Free Software isn't without bugs. We have our share. A lot of people argue we have more than our share. It's not even to say that the original developer of the particular Free Software program you find a bug in will care about your bug. They may be just like Sun and Microsoft in those situations, or just like Informix. They don't care about this bug, it doesn't matter to them. The difference though, with Free Software, is that you have the means yourself to improve and fix the software. Or to hire anyone you want to improve and fix the software for you. And this I think is the fundamental reason that I moved to Free Software and become a professional advocate for Free Software. But at the time I was kind of convinced that I could never do what I wanted to do in computer science. I came into this field because I wanted to make computers easier to use for people. I wanted peoples lives to be better because of technology. But I was pretty sure at that point that I couldn't do that. And this was most evident when I remember an experience right between my time at RH lab and my time at Westinghouse. [39:34] I worked for three months on a contract for Lucent Technologies to re-engineer a legacy system. It was used to configure telephone switches. And the telephone switches in those days were actually sort of sophisticated Unix boxes. And -- ah -- in fact that 4ESS, which is a standard telephone switch, is actually used today in a lot of places still. And the gurus who understand these boxes can actually log into the thing via SSH these days and actually fix things with vi on the command line and do all kind of weird stuff to the telephone switch. But the average person you call up, when you ask for Lucent to implement a Centrex or some other system for you business phone system for you, don't know how to do this. So Lucent had developed a product for use by the Baby Bells, who use these switches, to configure them through a nice little user interface and so forth that they -- well, it wasn't a nice user interface, it was a rather clunky interface but certainly better than what the gurus had to know to be able to get the job done. And in fact, as they were beginning this re-engineering process they had this big user group meeting. They invited all the Baby Bells to come (back when they were Baby Bells, right?) They all came -- Nynex was there, Southwestern Bell was there, Pacific Bell was there -- all talking about how they wanted to use the program. I thought: "This is great! We're actually listening to users! We're gonna do what they want us to do and make the software better." I was actually pretty optimistic as I went into this user group meeting. And we listened to them describe all these various bugs that they had in the software they were using. And there is this one bug that is wasting like 5 or 7 minutes every call, because they had to go in deep into one menu structure, and then escape all the way out, and there was lag in the system so they hit escape one too many times they were too far out, and they had to dig back down into a separate menu structure, and there was no easy way to connect up these many systems in the way the software was originally designed. And I was looking at our new design. I went back to my desk after that days user group meeting, and started looking at what we were doing. And I went to my boss and said: "This is just great! I can solve that problem for free because it just comes out of the wash with our new redesign. And the menu structures won't have to be that way and will be perfect, to solve this problem." He looks at me and says "OK, do you know how to turn it off?" I said: "What do you mean, turn it off? Nobody wanted the menu structures laid out in the way they are. We don't want to turn this off, it should be the default." He goes: "No, we have to be able to turn it off. We have to make the old interface the default and make this an add-on option." "So why is that?" He says: "Because we can get more money out of them by requiring them to pay extra for that." This is interesting because two days before I had seen a budget sheet for the division I was working in. Division of fifty people, was making a profit of $500,000 a month of licensing fees and support fees and upgrade fees from all these Baby Bells, who were just paying every month, for large amounts of money for the new upgrades. But they had a way in the contract that they could add a little extra thing, a bell and whistle, that they could charge separately for. So we were gonna exploit this little hole in the contract, even tough their profits were completely fine for the time. Because they could get away with it. [42:34] And what that experience showed me, more than all the others, was that in most of the software industry, turning a profit and getting the profit as high as possible, is substantially more important, in a lot of proprietary software companies, than making the lives of people better through technology. Now I don't have anything against profit. I like to get paid. I like to make money. I enjoy that I don't have to not work and that I can get money for what I do. But I also don't think that the biggest goal in working with computers is to make money. And if you happen to be one of the people who thinks that it is, and feels that the only reason you're doing this computer stuff is to make a lot of money, then we probably don't have much we can connect on. And you probably ought to apply for a job at Microsoft and try to move up in there corporate structure, because that's the way they think there and Oracle is much the same. But if you perhaps think that making money doesn't have to be number one, even if it's just as number two and that the first thing is to make the technology better for people to be happier and for peoples lives to be better than I think we have something to talk about. Because, what I discovered, in the IT industry, is that with the focus solely on profit, the whole mission of computer science is forgotten. It let me to be pretty much apathetic to the whole industry and how it worked. I pretty much wanted to give up on computer science all together. But I was discovering, because I was going to college at the same time I was working, that there was actually an other alternative, that there was an other way of doing things. [44:09] And this was because in 1992 I became an early adopter of what today is the GNU+Linux system that you may have heard under the name just Linux. I didn't understand any issues about software freedom or why sharing was important other than what I vaguely understood from my experiences. I just needed a low cost (i.e. free beer) Unix-like operating system that I could use on my own machine to get my computer science homework done. And I discovered that there was this software out there. And I installed it on my machine and started showing it to my professors and showing them how it worked and that it was available and it was under this license called the GPL and you could copy it as much as you wanted. It wasn't illegal and you were allowed to share it. And they said: "That's really interesting because we just got a price quote from Sun to buy a bunch of new machines for our Lab but we can't afford them: (a) because Sun's hardware is too expensive and (b) because the software licenses are too expensive." Meanwhile commodity PC hardware we could get three times the machines at the same price. And if you could install all this stuff on the systems we'd have Unix-like workstations for all the students. And we wouldn't have this problem where everybody is trying to share [the hardware] because we have just a very few number of machines. We have enough for everybody so that nobody really has to wait for a machine. So they hired me that summer to actually install GNU/Linux on this new batch of Dell computers that we were getting. So actually as early as 1992 I went into the business of supporting Free Software. I was paid a stipend for that summer to make these systems work with Free Software. And I quickly discovered that it wasn't as easy as it all looked. There were bugs and problems. The biggest problem we had in those day's was that the Ctrl-Alt-Del sequence on the keyboards -- were hot [rather] -- was hardwired in the kernel named Linux. The activity that would happened if you hit the Ctrl, Alt and Del all at once: it actually automatically did a system reboot. These days, that's controlled by the init system and you can tell it what -- you'd [rather] -- what operation on the system you want to happen when somebody hits those keys. But in those days it was hardwired, so it appeared. Now, the problem was, that a lot of the students were coming from regular computer labs, into this new lab that we were creating that had Unix-like systems, and in the regular labs they apparently had to hit this key sequence a lot. Apparently they were running some operating system that requires you to hit this over and over again, for no apparent reason. So, we didn't want them to come in and do this particularly because we wanted to allow remote access to these machines, and somebody could be logged in from there dorm room using the machine remotely, and if somebody hit this key sequence the rebooted the machine on them, in an instant. So they said: "Well, you got to fix that, that's a problem." So, what was I going to do? Of course, I was a sophomore in computer science. [noise from crowd] (Oh, there's some sophomores in the room!). But I had this belief that, well, *any* software problem: I know how to fix, because I am a programmer. So I started grep'ing the source code for the kernel named Linux for the words "control", "alt", and "delete". Lo and behold, I found a function called "ctrl_alt_del". And I saw that it did a bunch of things I didn't really understand, then it called the halt system call. So, being a sophomore in computer science, I said: "Well, anytime something doesn't do what you want it to do. You just comment it out, recompile and everything will be fine." Now in the general case, this is a really bad thing to do. In this specific case, it was exactly what was needed. I commented out the halt system call, recompiled the kernel named Linux, installed it across the lab and walked around pressing Ctrl-Alt-Del on every system. And absolutely nothing happened. Which was precisely the behavior we wanted for this lab. So, I found it amazingly rewarding and exhilarating to be able to fix this problem myself. I think it's ultimately liberating when you give people the tools to solve their own problems, rather than requiring them to call up some tech support and beg for help and beg to get their problem paid attention to or fixed. [48:07] And because of this experience and many others that I had with Free Software, by the mid 1990's I understood what this ethical thing was about. I had seen real problems in the real world created by proprietary software. Specifically because it was licensed under these proprietary terms. And I saw two things in the Free Software world. One, I saw that you could solve these problems yourself and two, I saw that if you knew how to solve these problems yourself, and could convince others that you were good at it, you could get paid to solve these kinds of problems. You could get paid to actually rewarding and exhilarating work in the software industry rather than calling up tech support and begging them to fix your problem. [48:49] Now as time progressed this Free Software stuff showed up on everybody else's radar screen, sometime around the late 1990's along with the .com boom. And in fact it unfortunately got associated with that which is really unfortunate because it existed long before that and it's going to exist long after. And the mainstream media picked up on this and started focusing on a very specific aspect of what our community had done: that we had made reliable, useful, dependable software that had (by and large) fewer bugs than the proprietary equivalents in very specific spaces such as web servers and operating system server software. And because they got focused on this aspect, the ideas of freedom and sharing -- throughout the late 1990's and early into this decade -- people didn't realize that there was a political and philosophical basis that generated this community. And it goes back really far, way back in 1984. When I was busy in my Commodore 64 club, being called a pirate and getting told I shouldn't share software, Richard Stallman (who is my boss these days) was thinking about these same issues. He was considering this because he had watched his own community of software sharing disappear. He is from the era, and many people of his generation, remember the 1970's and what computing was like in the 1970's. In those days, you had big computer manufacturers who sold you giant pieces of iron, and the software was on there almost as an afterthought. It was there to make that big piece of iron useful to you. And they didn't really care if universities got access to it and improved it -- that sold more hardware. They didn't care if you got access to improve it and sold it with another one of there clients. It might sell another hardware unit if you do that. It didn't really matter that people had the source code to the software and were sharing it. If anything, it helped the sale of the hardware. [50:54] But as the mid 1980s wore on, the whole thing changed. The PC revolution happened. And a few people discovered that they could invent a new way of doing software. They could "license" software, rather than include it as part of the package. Bill Gates is often credited for inventing software licensing although I've never seen any direct evidence that it's true. But certainly he is one of the few who benefited most from it, at least financially. They discovered that you could divide the whole user base. Conquer each person one by one, by forbidding them, under license, from helping the next person, forbidding the next person from helping the next person. And if you could get each of them to pay some amount of money, for stuff that actually has zero marginal cost. It was a pretty innovative idea from a business point of view, but it was not all that innovative from a freedom point of view. It took what was a community of software sharing and academic research and endeavor to improve computers and improve how they did their jobs for people, into effectively a way to stop people from helping each other. [52:06] And in looking at this, Stallman decided to create the Free Software movement. And it could have been done in a straight forward way, like a lot of movements that don't have the means to change things themselves. This is why you see a lot of protests. And I suppose the Free Software movement could have designed itself like that: eh, you know, a movement that stood outside of offices of proprietary software companies like Microsoft and held signs that said "Make your software free!" or we're gonna write letters and we're gonna chain ourselves to your door and all these sort of things. And I feel bad for movements who have no other choice but to do that. But the innovative thing that Stallman discovered in the Free Software movement -- in creating the Free Software movement -- was that there was a really productive way of political action that could be done. People were upset about this proprietary software, upset that software didn't come with source code with the right to share it or modify it or improve it. And they said: "Well what do you need to create an alternative?" You need access to a bunch of computers, and people with good minds for programming to create software. And in fact, the community that was falling apart because of the proprietarization of software was there to do this job. [53:21] So what they did was start the GNU project: a project to create an operating system that works like Unix but was, in fact, not Unix. Created from scratch, to work just like the proprietary equivalent but be available Free as in Freedom, with the right to copy share modify and redistribute software. And this is where it all started, this is where we began to create something different. While it wasn't focused as profit as a primary motive, free software has made a lot of money for a lot of people. I know even after the .com boom personally three millionaires who made there million from Free Software. Now, it hasn't generated any billionaires: you've probably got to do proprietary software to be billionaire, but maybe you can settle for being a millionaire instead and do Free Software, rather than being a billionaire and doing proprietary software. Because they can generate that level of unbelievable financial wealth by treating users badly and putting them in effectively an unfair position. See, when I think back to my first experience with Eveyln and asking for a copy of "Little Computer People", I realized that she was actually put in an unfair position. It wasn't her fault. She had to make a decision between obeying a software license that she had (in good faith) agreed to, and doing the right thing for a child who was asking for a favor that was easy to do. I don't like myself to be put into that situation. If something is easy to do for somebody to help them out, I do it. I think we all do because we want to be good people and help the world. But proprietary software puts us in this situation where we have to choose between doing the nice thing and obeying the license we agreed to. And Free Software frees you from that ethical dilemma. I believe that we should have laws in a society. I believe that copyright law probably had a very good goal behind it. Indeed our constitution said it was there to create and promote progress in science and the useful arts. A laudable goal, no question! But when you implement laws, they should make peoples lives better. They should increase good will and cooperation; that's why we should have laws in our society. And the copyright system -- as it's typically applied to computer software -- does exactly the opposite. It uses this system to stop people from being allowed to help each other. Stop people from improving the software they use and understanding the software they use. [55:58] You can make a lot of profit the other way. But you can make a reasonable profit this way too. And, in fact, in the Free Software world you make profit in the typical way that you do in most proprietary software companies. Only the largest, most powerful companies like Oracle and Microsoft actually can make a profit on licensing alone. Most software companies make the bulk of their revenue from the typical models that we also use in the Free Software world. They make their revenue from service contracts, from support contracts, from custom modification for software commissioned by a company who needs an improved feature. These methods of developing software -- where you're commissioned to improve a software program that already exists or you're selling a service contract for software that's already available -- these are the models that make most of the money at the "smaller company" level in the software industry. [56:55] I worked myself for a proprietary software company that did, in fact, charge licensing fees, but if you looked at the budget sheets the licensing fees were this tiny little piece that barely even covered the cost of one of us or two of us and there were like five or six programmers working for the company. The rest of the revenue paid to everybody else and to make the profit the company sent back to its shareholders (or private owners, in this case) was from this service contracts and support and the hiring to improve the software for new changes and new features that was done. [57:26] So these models are exactly the same in the Free Software world. In fact they're more available because your ability to start off from scratch is much easier, because there is all this existing software infrastructure and the reference material, right in front of you, today. The source code to the entire operating system and all the applications available in Free Software is available to you right now out there on the Internet. You can learn not how the toy examples work, but how the production stuff that actually gets real work done in the real world every day works. And you can study it and you can learn it and you can improve it. You can become an expert on it. And in the Free Software space the experts make the most money, the people who know the most make the most money, get the most contracts, find the most clients. [58:20] This a purely capitalistic way of designing an industry. I'm amazed when capitalists come to us and call us un-American and that we created cancer on the software industry that will destroy it. We're substantially more capitalistic. We're opposing the government-determined monopoly in Seattle. We're saying: "Look, the software industry ought to be set up such that everybody has access to a competitive free market, where the the amount you know about software and your ability to make it work for people is what determines how much money you can make and how many jobs you can get". That's the way I think a competitive capitalistic software industry ought to work. I'm not really deeply capitalistic, but I see how the capitalist's philosophy fits perfectly well with Free Software. It is, in effect, a meritocracy of people who know how the software works being able to get the best contracts and jobs. [59:15] Of course, as we started to distribute Free Software in the 1980's, there was a real question about how to get it done. As I said, our goal was to create a system that would make sure the software we made was free. We wanted everyone to get these freedoms, so we had to consider what the terms of distribution would be. We obviously weren't going to release it under a proprietary license, but we quickly discovered as a community that licensing would be necessary and here is why: The easiest way to avoid the proprietary way of doing things is to release software into the public domain. When you release software in the public domain you are asserting no copyright whatsoever over it. And in fact, public domain software gives you the right to copy, share, modify, redistribute and use the software in any way you see fit. The downside to that is that anyone else who would like to make a proprietary adaptation or modification to the software can do so and license it back out into the world under proprietary licensing terms. Pretty much everybody who worked early in the GNU project is sure, that if GNU had been licensed in this way from the start, it would likely have been a failure. Because anything that was particularly useful would have immediately been picked up by a proprietary software company, made into proprietary software, and the Free version would constantly play catch-up with the proprietary version, since there was no incentive for them to cooperate with the free developers. [1:00:50] So, what was discovered was a new way of using copyright law, to take the world back to the old way that software existed before proprietary licensing. This new idea was called copyleft, because it took what copyright law typically did and flipped it over -- turned it on its head -- to something different. What it said was, rather than prohibit the things that copyright law governs, which most software licenses do (i.e., copying, modifying and distributing the software), this copyleft license, from the start, grants you permission to copy, share, modify and redistribute the software. The only restriction placed upon you is that you can't -- if you engage in these activities -- take those rights from anyone else. In essence, it grants you all the freedoms that I talked about at the beginning of this talk, but forbids you to forbid those freedoms of anyone else. [1:01:48] This is the general idea of how to do software sharing, and it needed a specific implementation. So Stallman sat down with a couple of lawyers and wrote the GNU General Public License or the GNU GPL. GPL is effectively the constitution of the Free Software Movement. It explains how legally, you get all these freedoms to copy, share, modify and distribute, but that no one who subsequently exercises those freedoms is able to take away your rights nor anyone else's rights in the community. It does an interesting thing: it avoids the tragedy of the commons that comes about when software is in the public domain. Companies are unwilling to service the commons because there is no incentive to do so. If there is no requirement to do so, they'll take but not give back. Bill Gates, when he spoke here a couple of months ago, talked very highly of this kind of software because it allowed companies to innovate around software, but he was really talking about [the fact that] it allowed companies to take without giving back. It allows companies to chop down all the trees in your nature conservancy but not plant any new ones. What GPL does is it say: "Great, we want companies to be involved, if you want to be. If you don't [want] to be, then write your software from scratch." If Bill Gates wants to never touch GPL's code, he is permitted to. Unlike what he and his other executives say, it is not a cancer or virus. You can't catch it just by sneezing in the direction of proprietary software. It has to actually be brought into your software, and once you choose to do that activity, you have some obligations to the community that gave that benefit. It's a club that nobody is required to join, but once you join, you have rules that you have to follow. You have to make sure that you give other people the same rights that you got when you got the software. [1:03:37] I -- [and] We don't have anything against Free Software under non-copylefted licenses. It has this drawback. In fact, I have experienced it myself when I was working at Westinghouse with the Solaris machines. X-windows, in fact, was Free Software under a modified-BSD license which is effectively the same as public domain, in its details. So I got a copy of xdm that was Free Software when Sun got it, but they made proprietary modifications to integrate it with NIS+ and by the time I got it, it was proprietary software. So I've actually been a victim myself of this problem that comes up when software is not copylefted. But at the same time, as we were trying to build a Free Software operating system from scratch we had to look for shortcuts. There was no reason to reject existing Free Software that granted freedoms if it was there, even if it wasn't copylefted. So, the GNU project started adopting other various Free Software programs that were around, the X-windows system is a great example, it's the default windowing system for GNU+Linux systems, the TeX document formatting system was adopted as the official formatting engine for the GNU system. And by 1991, pretty much all the different components had been assembled except for one: the kernel. Meanwhile, someone was interested in operating system development over in Finland and decided to write a kernel from scratch called Linux. That kernel integrated with the existing GNU software and created what is the modern GNU+Linux system that most people shorten to just Linux. [1:05:12] And the reason that we continue to talk about this history of the GNU system in relation to Linux is that GNU was started because of a philosophy for freedom. Linux was started because Linus was interested in technology and wanted to start doing a project. He picked our license, the GPL, for his project, because he liked the stuff that we had already done. But it isn't a project that's focused on this political issue of software freedom -- the rights you ought to get with software. But this whole community came into being specifically because people who were very focused on rights for users and programmers were working to create this operating system that would be freely available and freely shared. So we continue in our community to focus on these ethical issues and talk about the importance of community and cooperation and sharing of software to help other people. A lot of times, you hear it talked about in terms of "Open Source". That term has primarily become the corporate way of thinking about it. We think it's good that corporations want to get involved with what we do and we understand that companies aren't particularly interested in talking about political issues. So that's a good term to think about, in those terms, when you are thinking about the corporate side of this: why it is usable software and why a company would want to use it. I continue to say "Free Software" rather that "Open Source" to get across the idea that this is about freedom -- that we did all this work to give people certain rights and to effectively make those rights inalienable. Because I believe, very strongly, that computer scientists need to consider the ethical and sociological impact to the work they do. [66:56] Too often, we get focused as computer scientists on technology. We focus on the exciting, great wizz-bang new technology that we've developed, the new software we have written that does all kinds of amazing things, and forget that: (a) there is a bunch of users out there who need to be given the benefit of this technology and the technology should be shared with them, and, (b) we have to think about how that creates a community, and how software can be used to foster community and foster people helping each other. Too often we get focused just on the technological issues. So I encourage you to think about this issue when you're developing software. A lot of people say they don't have a choice: that they have to write proprietary software, particularly the way the economy is now. People are happy to get any job they can get. And, I am not going to say that you've done a terrible thing if you take a proprietary software job. But, think about this issue. Try, if you do take a proprietary software job. Those of you who are students, when you graduate, talk to your employers about Free Software. Try to get them to do a little bit of it, if you can. If you're able, volunteer some time for various Free Software projects when you are not working. Try help create a free software infrastructure. I guarantee you if learn a piece of free software really well, you'll find it helps you greatly in your career. It will change the way you are able to understand software and collaborate on projects. And that is a skill any employer needs, no matter what kind of software development they do. And, I encourage you to think about these issues and see if you can find a way to make money doing Free Software. There are a lot of business models out there -- support, service, modifications and so forth -- that are really usable and they work. Now, the other side is going to argue that we are here to stop innovation. You are going to hear a lot of that. I'm sure you heard it when Bill Gates was here. I heard some pieces of excerpts of the speech when he was saying that we are out here to stop innovation and stop things. And I actually think that the truth is we make a competitive free market like I was talking about. Free Software ends up causing the software industry to function a lot like other professional endeavors that we are used to. [69:10] One great example is the law. Lawyers still make a lot of money. In pretty much any economy good lawyers make a lot of money. But the law in the United States is free in the senses that I've been talking about. All the laws are available to study. You can go to a library and read all the laws of our society and learn them. If you don't want to learn them on your own, you can go to law school and pay them to teach you about the law. But most of the time we don't do that as individual citizens. We hire an expert to help us understand things that we don't understand rather than trying to learn it all by ourselves. This is why people hire lawyers. And people who are better lawyers and understand the law better are able to get more money for their services. Now we could design a society that has proprietary law in the same that we have proprietary software. In my science fiction fandom, I have seen this kind of culture in the Star Trek universe there is the Cardassians who have a legal system whereby you are told you sentence before you go to trial. And the trial is just a big show thing and they tell you: "Ok, you are going to be executed and you don't get to see the evidence and examine it. And, you don't get to know which law you violated that is causing you to be executed." We could design that kind of legal system; that has existed in our history. But nobody would call that legal system "free". It certainly functions more efficiently. It certainly works to make the society move along nice and smooth. But it's not free, in the senses of freedom that we think about. And the same thing is true in the software world. Sometimes Free Software requires a little more work to get going. Sometimes, to get a project done, it takes more effort. But the end outcome is free in that sense. It's available to the public in that sense. And the experts still are an important part of the economic ecosystem of software, just as they are in a proprietary world. Even more so in the Free Software world. [1:11:10] I want to end by saying (and [then] take as many questions you'll like to ask), by pointing out that it is up to the next generation of computer scientists to decide where this goes. I was told today, in one of your classes (in one of the ethics classes here on campus) that we are failing, because we haven't succeeded in beating Microsoft. [But] I'm not looking what happens in the next few years. I'm looking further out, in the next 10, the next 20, the next 50 [years]. What is computer technology going to be like? Is it going to be available to everyone freely, So that they can learn and grow and actually have access to the technology that they are using? Or, is it going to be closed and proprietary, and forbid people from sharing and forbid people from learning? Are the computer science education programs of the next generation going to be reading manuals of proprietary software and being told: "Well, when you get to work for Oracle or Microsoft someday, you'll actually get to learn how this stuff works in the real world, but we can't tell you [now] because it's proprietary". It's a strange way to run an education system, but we are headed in that direction. If you are using Microsoft computers to do your computer science homework, think about the fact that you are learning computer science on a system that is an implementation of ideas you are learning, yet you can't study that implementation. It's a strange system to be under. I hope that you'll choose to use the GPL for the software you write, to help society and help people learn, and help the community get more access to software. And, I hope that if you end up working in the proprietary software world, you'll at least become a member of the Free Software Foundation and send some of that big fat check to us so that we can continue to work, even if you are not able to contribute, for whatever reason. I hope you will fight for a free and cooperative culture. That profits not just you individually or companies, but the whole of society. [1:13:10] I thank you for your time and am happy to talk in detail about anything that you guys want to ask about. [applause]