Book Read Free

Just for Fun : The Story of an Accidental Revolutionary

Page 10

by Linus Benedict Torvalds


  That was the point where I had a decision to make: I could reinstall Minix, or I could bite the bullet and acknowledge that Linux was good enough that I didn’t need Minix. I would write the programs to compile Linux, under itself, and whenever I felt I needed Minix I would just add the desired feature to Linux. It’s a big conceptual step when you drop the original hosting environment and truly make a program self-hosting, so big that I released the new version as 0.10 in late November. A few weeks later came version 0.11.

  That’s when there actually started to be a number of people using it and doing things with it. Until then, I had gotten maybe one-line bug fixes. But now, people were sending me new features. I remember going out and upgrading my machine to have 8 mgs of RAM instead of 4 mgs, to accommodate the need for additional memory. I also went out and bought a floating-point coprocessor because people had started asking me if Linux would support their floating-point coprocessors. The extra hardware would enable my computer to perform floating-point math.

  I remember that, in December, there was this guy in Germany who only had 2 megabytes of RAM, and he was trying to compile the kernel and he couldn’t run GCC because GCC at the time needed more than a megabyte. He asked me if Linux could be compiled with a smaller compiler that wouldn’t need as much memory. So I decided that even though I didn’t need the particular feature, I would make it happen for him. It’s called page-to-disk, and it means that even though someone has only 2 mgs of RAM, he can make it appear to be more by using the disk for memory. This was around Christmas 1991. I remember on December 23rd trying to make the page-to-disk work. By December 24th, it kind of worked but crashed every once in a while. Then on December 25th, it was done. It was basically the first feature I added to serve somebody else’s need.

  And I was proud of it.

  Not that I mentioned anything about it to my family, as we gathered at my paternal grandmother’s (Farmor!) to dine on ham and varieties of herring. Each day, the community of Linux users expanded, and I was receiving email from places that I’d dreamed about visiting, like Australia and the United States. Don’t ask me why, but I didn’t feel the need to discuss any of this with my parents, sister, or any other relatives. They didn’t understand computers. I guess I thought they wouldn’t understand what was happening.

  As far as they were concerned, I was just tying up the phone lines with my modem. In Helsinki it used to be that you had a flat rate during the night, so I tried to do most of the work at home late at night. But occasionally I tied up the phone all day. I tried to get a second line, but the building that housed my mother’s apartment was so old that they didn’t have any extra lines and weren’t interested in adding new ones. Sara was doing nothing but talking on the phone with her friends at the time. At least that’s what it seemed like to me. So we had fights, occasionally. Virtual fights. As she talked to her friends, I would force the modem to start dialing so that she would hear dee-dee-dee-dee-dee when I was trying to dial out. It would disturb her but she would know that I really, really needed to read email. I never said I was the world’s best older brother.

  Page-to-disk was a fairly big thing because it was something Minix had never done. It was included in version 0.12, which was released in the first week of January 1992. Immediately, people started to compare Linux not only to Minix but to Coherent, which was a small Unix clone developed by Mark Williams Company. From the beginning, the act of adding page-to-disk caused Linux to rise above the competition.

  That’s when Linux took off. Suddenly there were people switching over from Minix to Linux. At the time, Linux didn’t do everything Minix did, but it did most of the things people really cared about. And it had this one capability that people really, really cared about: With page-to-disk, you could run bigger programs than you had memory for. It meant that when you ran out of memory you could take an old piece of memory, save it off to disk, remember where you saved it, and reuse that memory for the problem you had to solve. This was a big deal in the opening weeks of 1992.

  It was in January that Linux users grew from five, ten, twenty people—folks who I could email and whose names I knew—to hundreds of unidentifiable people. I didn’t know everybody using Linux, and that was fun.

  About this time there was a hoax speeding its way on the Internet. Some poor boy named Craig was dying of cancer and a popular chain letter urged you to show your support by sending him a postcard. It turned out to be somebody’s idea of a sick joke; I don’t think Craig ever really existed, much less suffered from cancer. But the appeal generated millions of postcards. So I was only half-serious when I asked for postcards instead of money from people who used Linux. It was like an oh-God-not-another-email-that-asks-for-postcards joke. In the PC world at the time, there had been a strong tradition of shareware. You downloaded a program and you were supposed to send in something on the order of ten bucks to the writer. I was getting emails from people asking me if I would like them to send me thirty bucks or so. I had to say something.

  Looking back, the money would have been useful, I guess. I had amassed something like $5,000 in student loans, and had to shell out about $50 a month to pay off my computer. My other major expenditures were pizza and beer. But Linux was keeping me so preoccupied that I wasn’t going out much at the time, maybe once a week at most. I didn’t need money for dates although I could have used it for hardware add-ons, but that wasn’t necessary. Probably a different son would have asked for money for his program, if only to fork over some rent to his working single mom. It never occurred to me at the time. Sue me.

  I was more interested in seeing where people were using Linux. Instead of cash, I preferred postcards. And they poured in—from New Zealand, from Japan, from the Netherlands, from the United States. It was Sara who typically picked up the mail, and she was suddenly impressed that her combative older brother was somehow hearing from new friends so far away. It was her first tip-off that I was doing anything potentially useful during those many hours when I had the phone line engaged. The postcards totaled in the hundreds, and I have no idea what happened to them. They must have disappeared in one of my moves. Avuton calls me “the least nostalgic person” he has ever met.

  Actually, I didn’t want the money for a variety of reasons. When I originally posted Linux, I felt I was following in the footsteps of centuries of scientists and other academics who built their work on the foundations of others—on the shoulders of giants, in the words of Sir Isaac Newton. Not only was I sharing my work so that others could find it useful, I also wanted feedback (okay, and praise). It didn’t make sense to charge people who could potentially help me improve my work. I suppose I would have approached it all differently if I hadn’t been raised in Finland, where anyone exhibiting the slightest sign of greediness is viewed with suspicion, if not envy. (This has changed a bit since the days when Nokia phones started making their way into pockets the world over, boosting the bank accounts of numerous Finns.) And, yes, I undoubtedly would have approached the whole no-money thing a lot differently if I had not been brought up under the influence of a diehard academic grandfather and a diehard communist father.

  Regardless, I didn’t want to sell Linux. And I didn’t want to lose control, which meant I didn’t want anybody else to sell it, either. I made that clear in the copyright policy I included in the copying file of the first version I had uploaded back in September. Thanks to the Berne Convention in Europe in the 1800s, you own the copyright to anything you create, unless you sell the copyright. As the copyright owner, I got to make up the rules: You can use the operating system for free, as long as you don’t sell it, and if you make any changes or improvements you must make them available to everybody in source code (as opposed to binaries, which are inaccessible). If you didn’t agree with these rules, you didn’t have the right to copy the code or do anything with it.

  Think of yourself. You put six months of your life into this thing and you want to make it available and you want to get something out of it, but you
don’t want people to take advantage of it. I wanted people to be able to see it, and to make changes and improvements to their hearts’ content. But I also wanted to make sure that what I got out of it was to see what they were doing. I wanted to always have access to the sources so that if they made improvements I could use those improvements myself. It made sense to me that the way for Linux to develop into the best possible technology was to keep it pure. If money was to get involved, things would get murky. If you don’t let money enter the picture, you won’t have greedy people.

  While I wasn’t interested in asking for money for Linux, other people were not shy about requesting donations whenever they gave someone a copy of the operating system they had loaded onto a floppy disk. By February, it was not uncommon for folks to attend Unix users’ meetings armed with floppies containing Linux. People started asking me if they could charge, say, five dollars just to cover the cost of the disk and their time. The trouble was, that was a violation of my copyright.

  It was time to rethink my Linux-is-not-for-sale stance. By that point, Linux was getting so much online discussion that I felt fairly confident that nobody was going to be in a position to just take it and run with it, which had been my big fear. At least they wouldn’t do it without generating a lot of negative reaction. If anybody tried abducting Linux and turning it into a commercial project, there would have been a strong backlash, and a growing community of hacker types who would say “Hey, that’s Linux! You can’t do that,” although not in such polite words.

  The momentum had been established: On a daily basis, hackers from around the world were sharing their suggested changes. We were collectively creating the best operating system around, and couldn’t possibly veer away from our trajectory. Because of this, and because Linux had become so recognizable, I felt comfortable allowing people to sell it.

  But before I make myself sound like Mr. Beneficent, let me mention another critical element of my decision. The fact is, to make Linux usable, I had relied on a lot of tools that had been distributed freely over the Internet—I had hoisted myself up on the shoulders of giants. The most important of these free software programs was the GCC compiler. It had been copyrighted under the General Public License, universally known as the GPL (or the “copyleft”), which was the brainchild of Richard Stallman. Under terms of the GPL, money is not the issue. You can charge a million bucks if somebody’s willing to pay it, but you have to make sources available. And the person you give or sell the source to has to have all the rights you have. It’s a brilliant device. But unlike many hard-core GPL freaks, who argue that every new software innovation should be opened up to the universe under the general public license, I believe it should be the right of the individual inventor to decide what to do with his or her invention.

  So I dumped my old copyright and adopted the GPL, a document that Stallman had written with lawyers looking it over. (Because lawyers were involved, it runs on for pages.)

  The new copyright was included in version 0.12, but I remember lying awake at night after releasing it, nervous about what commercial interests would do to the system. Looking back now, it seems ridiculous to have been so worried because the commercial interest was relatively small. Something made me think that I had to be careful. One of my worries was—and still is—that somebody would just take Linux and not honor the copyright. Back then I worried that it would be practically impossible to sue anyone in the United States who broke the copyright. It’s still a concern. It’s easy to prosecute someone for such violations, but I worry about somebody doing it until they’re forced to stop.

  And there are nagging fears that companies in places like China won’t honor the GPL. Practically nothing in their legal system prevents them from breaking the copyright, and in a real sense it’s not worth the trouble to go after people who would try to do something illegal. That’s what big software companies and the music industry have tried to do and it hasn’t been overwhelmingly successful. My fears are mitigated by reality. Somebody might do it for a while, but it is the people who actually honor the copyright, who feed back their changes to the kernel and have it improved, who are going to have a leg up. They’ll be part of the process of upgrading the kernel. By contrast, people who don’t honor the GPL will not be able to take advantage of the upgrades, and their customers will leave them. I hope.

  Generally speaking, I view copyrights from two perspectives. Say you have a person who earns $50 a month. Should you expect him or her to pay $250 for software? I don’t think it’s immoral for that person to illegally copy the software and spend that five months’ worth of salary on food. That kind of copyright infringement is morally okay. And it’s immoral—not to mention stupid—to go after such a “violator.” When it comes to Linux, who cares if an individual doesn’t really follow the GPL if they’re using the program for their own purposes? It’s when somebody goes in for the quick money—that’s what I find immoral, whether it happens in the United States or Africa. And even then it’s a matter of degree.

  Greed is never good.

  X: Minix vs. Linux

  The attention wasn’t all positive. Although confrontation never has been my best sport, I was bullied into defending Linux and my manhood when Andrew Tanenbaum kept making attacks on the operating system that was supplanting his own. We’re nerds, so it was all done via email.

  Who could blame him for getting hot under the T-shirt? Before any Linux newsgroups had been created, I routinely used Minix newsgroups to make announcements about Linux or find people who were interested in the operating system. Why should Andrew like that?

  So, for starters, he was unhappy about my infringing on his newsgroup. And he obviously wasn’t too pleased that his operating system was becoming eclipsed by this new creation from the snowy wilds of Finland—and that so many developers were joining the project. He also had opposing ideas for how operating systems should be built. At the time, Andrew was part of a camp of computer scientists who favored the microkernel approach to operating systems. He had done Minix as a microkernel, and Amoeba, the system he was working on at the time, also involved one.

  This was a flourishing movement in the late 1980s and early 1990s. And Linux’s success was threatening it. So he kept posting unpleasant little jabs.

  The theory behind the microkernel is that operating systems are complicated. So you try to get some of the complexity out by modularizing it a lot. The tenet of the microkernel approach is that the kernel, which is the core of the core of the core, should do as little as possible. Its main function is to communicate. All the different things that the computer offers are services that are available through the microkernel communications channels. In the microkernel approach, you’re supposed to split up the problem space so much that none of it is complex.

  I thought this was stupid. Yes, it makes every single piece simple. But the interactions make it far more complex than it would be if many of the services were included in the kernel itself, as they are in Linux. Think of your brain. Every single piece is simple, but the interactions between the pieces make for a highly complex system. It’s the whole-is-bigger-than-the-parts problem. If you take a problem and split it in half and say that the halves are half as complicated, you’re ignoring the fact that you have to add in the complication of communication between the two halves. The theory behind the microkernel was that you split the kernel into fifty independent parts, and each of the parts is a fiftieth of the complexity. But then everybody ignores the fact that the communication among the parts is actually more complicated than the original system was—never mind the fact that the parts are still not trivial.

  That’s the biggest argument against microkernels. The simplicity you try to reach is a false simplicity.

  Linux started out much smaller and much, much simpler. It didn’t enforce modularity, so you could do a lot of things more straightforwardly than you ever could with Minix. One of the original problems I had with Minix was that if you had five different programs runnin
g at the same time and they all want to read five different files, the tasks would be serialized. In other words, you would have five different processes sending requests to the file system: “Can I please Read From File X?” The file system daemon that handles reading takes one of them and sends it back, then takes the next one and sends it back, and so on.

  Under Linux, which is a monolithic kernel, you have five different processes that each do a system call to the kernel. The kernel has to be very careful that they don’t get confused with each other, but it very naturally scales up to any number of processes doing whatever they want. It makes Linux much faster and more efficient.

  Another problem with Minix was that you got the sources but the licenses didn’t allow you to do a lot. Take someone like Bruce Evans, who performed major surgery on Minix and made it much more usable. He couldn’t just incorporate his improvements. He was restricted to only making patches. From a practical standpoint that’s a complete disaster. He couldn’t legally make a bootable image available to people so they could easily upgrade. So users had to take a multiple-step process to even get a usable system, which was horribly impractical.

  The only time I ended up communicating with Andrew Tanenbaum was in early 1992. Imagine logging on one blizzardy morning and running across the unedited version of this:

  From: ast@cs.vu.nl (Andy Tanenbaum)

  To: Newsgroups: comp.os.minix

  Subject: LINUX is obsolete

  Date: 29 Jan 92 12:12:50 GMT

  I was in the U.S. for a couple of weeks, so I haven’t commented much on LINUX (not that I would have said much had I been around), but for what it’s worth, I have a couple of comments now.

  As most of you know, for me MINIX is a hobby, something that I do in the evening when I get bored writing books and there are no major wars, revolutions, or senate hearings being televised live on CNN. My real job is a professor and researcher in the area of operating systems.

 

‹ Prev