A look at the history of Linux, as seen by a long time Linux user. The talk is a series of anecdotes, shy of technical details, and sprinkled with personal memories.

27 April 1998

This talk was given at the 1998 Linux Expo.

Who I am and why I am here

I seem to have acquired a little bit of reputation in the Linux community, despite my efforts in to stay quiet and invisible, so that I don't get so many questions from people having trouble with Linux.

Part of my reputation is that I know Linux pretty well. That part is based on the time when I and Linus Torvalds---I assume you know Linus---shared an office at the University of Helsinki. In reality, I don't know Linux all that well. For example, my one stab at kernel programming resulted in a bug that took three years to track down and fix, and even then it was done by someone hacking OS/2. I'm referring to the sprintf function inside the kernel.

I wrote sprintf in the summer of 1991. Linus needed some easy way to print messages from the kernel, and did not then know how to use the stdarg mechanism to implement variable argument lists to functions. I see some people in the audience shaking their heads. Yes, it's true. There was a time when Linus didn't know everything. Really. Trust me. I was there.

Anyway, I wrote a simple sprintf for Linus, to show him how it was done, and he used in the Linux kernel, after some modification. The bug was in the handling of an asterisk as the width for an output field. I forgot to increment a pointer past the asterisk, so the code had no chance of working for this case. No chance at all. This was clear to anyone who tried it. Obviously, I didn't, which means that I probably shouldn't be employed to write software. In 1994, three years later, one Friedemann Baitinger noticed the bug, and sent me a patch. He was using the sprintf while debugging a device driver he was writing for OS/2.

Anyway, back to who I am. I've been a friend of Linus since before Linux even existed. We met as first-year students in 1988. When he started to write Linux, I naturally followed things with interest and some jealosy. Except for sprintf, I didn't really participate, since I'm not a hacker, just a wannabe. When Linux and its community grew, I took part in various non-technical things that needed doing. For example, I helped created the Linux Documentation Project, and co-moderated comp.os.linux.announce, also known as cola.

My moderating cola is the reason I'm here. When I had been doing it for five years, that is, in last December, I decided to retire from it and found a successor. In my farewell note to the group, I jokingly said that I wouldn't mind getting a trip around the world, if anyone wanted to send me one. It happens that some people don't understand jokes, and it seems that Marc Ewing is one of them. He told me I would come here to give a talk and he wouldn't take no for an answer. If you feel bored now, you know whom to blame.

Linus the god

You all know Linus, at least by reputation. The wonder-child. The coding wizard. The hacker god. Well, it wasn't always like that. What I'm about to say next may shock the most devout Linuxers in the audience, but that's all right. This is a free country, and anyway, I've been promised police protection.

I've already told you that Linus didn't always know everything. I'm not saying he isn't omniscient now. After all, he might now be a god and I'm not lightning-proof. So I'm only going to talk about old times. I'm sure he'll forgive me that.

Not only did Linus not know everything about C, he also didn't know anything about PC's. In fact, he didn't even have one when I first met him. When he bought his first PC, he didn't even start hacking it right away. Instead, he played computer games, especially one called something like Prince of Persia. I've never understood that part of him. I mean, what's a computer game worth if it doesn't simulate playing cards? No, give me solitaire, if you want me to play with a computer.

Even a few years later, when Linux was already a success, Linus had this strange fascination for silly computer games, such as Doom and Quake. By then he'd already learned some social skills and knew that one just doesn't admit to liking computer games after the age of 12. So when he was playing Doom, he used to explain that he was debugging and stress testing memory management and the X server.

When Linus decides to learn something, he really learns it, and usually quickly. This is why he may now be omniscient. I remember once when we were being questioned about some math home work. I happened to know Linus hadn't done it. But bold as he was even then, he claimed to have done them anyway. As luck would have it, the teacher wanted Linus to present his solution to the class. On the way to the blackboard, Linus read the problem, then stood in front of the board for a second or two, and went on to present a solution that the teacher couldn't understand. Linus can be quite annoying like that.

Once, when Linus was abroad at some conference or another, he modified my shell setup scripts so that when I logged in, it looked as if I was using MS-DOS. That was fun, of course, but it begged for revenge. This happened while we were sharing an office at the university, so once when Linus went out to get something to drink or something, I created an alias for startx for him. My alias first ran the real startx, and then printed out a kernel Oops' message. The first time Linus noticed this made him a bit worried, but he logged out and cleared the screen too fast to read it, but the second time made him really worried. I'd copied the Oops' message from linux-kernel, and of course it didn't suit Linus's kernel at all. He had gotten as far as decoding the message by hand, and muttering something like ``Why is it crashing there? It can't crash there!'', when I burst out laughing and told him what I'd done. Linus was quite relieved and never tried any practical jokes on me again.

The early times

Let's go back to the spring of 1991. In January, Linus bought a PC. He'd been using a Sinclair QL before that, which, like much British computer stuff, was ingenious and almost unusably different from everything else. Like every self-respecting hacker, Linus had written some software development tools of his own; an editor and an assembler, I think. He'd also modified the QL hardware a bit, to replace a broken keyboard, and to add a PC-compatible floppy drive. When he bought the PC, he wrote a device driver for the QL so he could move stuff from the QL to the PC.

When he got up to speed with the PC, after having played enough Prince of Persia, he started learning about programming the PC. Especially assembly language programming, since only wimps use high level languages. I remember one day when he was quite proud for having written a strlen function in assembly. Gee, I was impressed.

As I said, when Linus decides to learn, he really learns. A few weeks later he showed me two simple concurrent processes. One printed out A's as fast as it could, the other B's. That was much more fun to look at than his strlen, but not, I think, immediately as useful.

As time progressed, Linus added keyboard and serial port drivers, so that he could use his modem from the PC. Normal people would have used one of the dozens of existing terminal emulators, but Linus had to write his own. After that, he spent a long time just reading netnews. Sorry, I mean of course that he was debugging his terminal emulation code by reading netnews. The emulator consisted of two processes, one reading the keyboard and writing to the serial port, the other reading the serial port and writing to the screen and emulating a terminal.

At some point during this time Linus decided he wanted a Unix-like system at home, and the obvious choice back then was Minix, since it was the only thing he could afford. As it happened, Linus wasn't very happy with Minix, so he kept improving his terminal emulator, and modifying it to become more like an operating system. I guess we can conclude by now that he succeeded.

The success of Linux wasn't automatic, and things might well have gone differently. For example, if the Hurd had been finished a few years ago, Linux probably wouldn't exist today. Or the BSD systems might have taken over the free operating system marketplace.

However, things went as they did, and Linux prospered. The success has resulted in fame and also material rewards for rewards, including money. One of the first rewards wasn't money, but virtual beer. You may have heard the expression, since it is still used somewhat, but these days it is just a general good wish phrase. Originally, it had a very concrete meaning. Two guys from Oxford, England, calling themselves the Oxford Beer Trolls, wanted to buy Linus some beer, but since it was impractical to move either themselves, Linus, or the beer physically around, they asked me to receive the money via mail, and buy Linus beer with it, and that's what happened. So, virtual beer really means money, preferably money sent to me.

Alas, people started sending Linus money directly. I'm not sure they did it out of gratitude, however, since they usually sent personal checks from the US. As Linus quickly learned, Finnish banks really, really hate checks. Especially personal checks. Particularly personal checks from the US. They invent all sorts of bureaucratic pit-falls and rules and fees to make it difficult and expensive to use checks. If you want to make trouble for a Finn, send him a personal check from the US. And that's not a joke.

Linus also got some other stuff via mail. For example, a pair of 40 megabyte hard disks. That was really nice, since it meant that Linus was finally able to keep some backups. Not that he did, of course. One of his well-known quotes is: "Backups are for wimps. Real men upload their data to an FTP site and have everyone else mirror it." He said that even after dialling his hard disk.

At one point, Linus had implemented device files in /dev, and wanted to dial up the university computer and debug his terminal emulation code again. So he starts his terminal emulator program and tells it to use /dev/hda. That should have been /dev/ttyS1. Oops. Now his master boot record started with "ATDT" and the university modem pool phone number. I think he implemented permission checking the following day.

The name Linux was not coined by Linus himself, strange though that may seem to people familiar with his self-esteem. It was coined by Ari Lemmke, the administrator at ftp.funet.fi who first made Linux available for FTP. Ari had to coin a name since Linus had failed to give a proper one, so Ari invented one and it stuck.

A few days after Linux was put on ftp.funet.fi for the first time, Linus was bubbling with excitement. Ari had sent him the first download statistics for Linux, and there were literally tens of downloads! Ooh, the glory of success.

My own Linux history

My own Linux history is rather boring. I first installed Linux on a 109 megabyte hard disk that already had MS-DOS and SCO Xenix. That was rather cramped, so I got rid of SCO Xenix, first, and MS-DOS, later, when I no longer needed it for work. However, 109 megabytes isn't nearly enough for Linux anyway, so I bought a new hard disk and had my first kernel panic. I had some trouble getting the two hard disks to work together, so I was iterating various combinations of the seven jumpers on them. That gives rather a large number of possibilities, so I got a bit careless with how I attached the cables. At one point, I swiveled my chair, hit the computer with my knee, and the cable got loose and Linux panicked. That was fun. I never did get the two disks working together, however.

My first Linux installation was from the boot and root floppy pair that many old timers remember with fondness. I don't remember much about them, but I do remember having to edit offsets 508 and 509 of the boot floppy to set the root file system. The first time I did this, I didn't have a binary editor, so I used something like Emacs, which luckily was binary clean, even though I had to count the offsets manually.

Later, when distributions started to get built, I tried them out. That was a bit painful, since I only had a 2400 bit/s modem. What I did was invade a computer classroom at the university, or at least about half a dozen computers, and had them formatting floppies and downloading stuff via ftp in parallel. Then I carried the 50 or so floppies home, and tried to install Slackware or whatever from them. Usually, I found that one or two of the floppies had gone bad during the trip home, so I then had to spend a few hours downloading some files with the modem. I rather prefer my current situation, with a 10 Mbit/s connection to ftp.funet.fi.

I did prefer the original keyboard driver, however, since I didn't have to configure it for Finnish. I really don't understand why Linus went and changed the default to be American.

Advocacy

When Linux was young, in 1993 or so, I made some visiting cards that said I was a Linux fanatic. I've since been cured of that by meeting some real Linux fanatics. If you haven't had the dubious pleasure, let me tell, it ain't fun. This talk is meant to be fun, so I won't go on about advocacy any further.

The future

Every look at the history of Linux seems to end in a look at the future. I guess this one should also.

Linux the operating system kernel seems to me to be relatively finished. There's a lot of work to do, bugs to fix, drivers to write, architectures to port to, but that's pretty small stuff. It's not like the huge changes in the past, such as demand paging, networking, or the port to the Alpha.

The operating system distributions built on top of Linux the kernel still need a lot of work, but most of it just needs to be done. There's some huge projects remaining, such as good graphical desktops, but they're being worked on, so things are looking good on that front as well.

Where should Linux go next, then? I think the answer is clear, if you think about it: fluffy toys.

What is it that Linux has that no other operating system has? A cuddly, lovable, silly-looking mascot. If we play our cards right, the Linux penguin could be the next mass-consumer hit product. Can you imagine a Windows flag competing against our penguin? No, this time Mr. Gates has definitely dropped the ball and we're in exactly the right position to pick it up. Forget Microsoft, they're history. Start worrying about Mattel and the Barbie doll!