Témoignage de Lars Wizenius : les 20 ans de Linux, souvenirs personnels

Partager, c’est aider à se souvenir…

Témoignage de Lars Wizenius :

Cela va être long et décousu. Si vous souhaitez tout lire, vous pouvez attendre d’être malade, de ne pas pouvoir sortir du lit, d’avoir la tête remplie de coton et de manger des analgésiques comme des bonbons. Je ne veux pas que vous ressentiez une douleur lors de la lecture. Être inconscient et avoir un synthétiseur vocal qui vous le lise à haute vitesse est une bien meilleure option.

Linux a 20 ans cette année. Cela fait un bail. Étant donné que j’ai été là dès le début, j’ai pensé partager quelques souvenirs de ce qui s’est passé.

En 1988, j’ai quitté le lycée et été admis à l’université d’Helsinki pour étudier l’informatique. Les cours ont commencé en septembre, et j’ai alors été invité à rejoindre Spektrum, le club suédophone pour ceux qui étudient les maths, la physique, la chimie, la géographie, ou les sciences informatiques.

Spektrum est un club social, ce qui était bien puisque j’étais, et demeure, timide et socialement maladroit, et le club m’a donné un moyen facile de rencontrer des gens alors que je déménageais dans une nouvelle ville. C’est également là que j’ai rencontré le seul autre nouvel étudiant suédophone en sciences informatiques de cette année, un gars du nom de Linus Torvalds.

Cette première année, nous avons pris quelques cours en commun, puisque tous les nouveaux étudiants avaient pris ces cours, et nous nous côtoyions au Spektrum aussi. Une sorte d’amitié s’est formée.

Les ordinateurs étaient très coûteux à l’époque, et l’université donnait accès à des salles de classe pleines de PC fonctionnant sous MS-DOS, plus quelques Macs, et des terminaux connectés à un grand VAX / VMS. Je n’ai jamais trop aimé MS-DOS, et ils étaient souvent tous utilisés. N’ayant jamais vu un GUI avant, je n’ai rien pu tirer des quelques Macs que j’ai essayé. Ainsi je me suis naturellement tourné vers les terminaux, même si VAX / VMS était un système horrible à utiliser, selon moi.

Après Noël, les choses ont un peu changé. Le département d’informatique avait un petit ordinateur Ultrix caché, le plus souvent inutilisé, et il m’est arrivé d’y avoir accès. Ultrix était la version de DEC (Digital Equipment Corporation) d’Unix. J’avais lu des choses sur Unix, particulièrement dans le livre de C de Kernighan & Ritchie, et aimé ce que j’avais lu. J’avais même écrit quelques outils MS-DOS en ligne de commande qui fonctionnaient comme des outils Unix similaires. Ce fut une joie de pouvoir accéder à un véritable ordinateur Unix : les tubes travaillaient en temps réel, et non pas via des fichiers temporaires ! Plusieurs processus en même temps ! Les noms de fichiers n’étaient pas artificiellement rétrécis ! Ce fut très libérateur.

Alors que je jouais avec la machine Ultrix, qui je pense était appelée kreeta (finnois pour la Crète, l’île), un jour j’ai accidentellement fait une faute de frappe à la commande ‘ »rm' ». J’avais auparavant développé l’habitude de saisir « rm » à la place de «em», qui était la version locale de MicroEmacs, alors j’essayais vraiment de ne pas faire de faute de frappe dans les commandes. Cependant, ce jour-là, je saisis « rn quelque_chose » à la place de « rm quelque_chose », et découvris Usenet.

Après m’être remis de la stupéfaction provoquée par cette découverte, et m’être fait jeter dehors par les gardiens parce que le bâtiment fermait, je suis rentré à la maison. Je venais d’apercevoir tout un monde, avec des gens qui parlaient de choses intéressantes telles que le langage C, et j’avais pu suivre leurs discussions. Quoi de mieux?

J’ai parlé de rn à Linus, et il a aimé aussi. Nous avons tous deux passé beaucoup trop de temps à lire les newsgroups, bien qu’aucun de nous n’ait posté cette année là. On recommandait grandement de ne pas faire perdre leur temps aux autres personnes, et nous prenions ça très au sérieux.

Des gens des laboratoires Bell participaient au newsgroup comp.lang.c, lequel est rapidement devenu mon préféré. Dennis Ritchie avait lui-même assez récemment cessé de participer au groupe, mais d’autres étaient toujours là, comme Andrew Koenig, dont je venais de lire le livre «C Traps and Pitfalls ». Étant un modeste étudiant de première année, je n’aurais pas osé déranger leurs discussions. Linus n’était pas aussi timoré, mais il ne voulait pas non plus poster quelque chose qui soit pointé comme erroné.

Nos études pour la première année se sont terminées en mai, et en juin nous avons tous deux commencé le service militaire semi-obligatoire, mais dans des endroits différents. Je n’ai pas vu Linus l’année suivante. L’armée finlandaise m’a appris à me taire, à arrêter de penser, à me dépêcher d’attendre, à tirer sur des gens à distance, et à ramasser la vaisselle sale dans un restaurant. Mon QI a notablement chuté au cours de ces neuf mois. Je n’ai pas aimé l’expérience.

J’ai terminé mon service militaire en Mars, et un peu plus tard, j’ai obtenu un emploi d’été, l’écriture d’une application de base de données de bureau pour les traducteurs officiels en Finlande. L’application a été écrite en dBASE IV, ce qui m’a appris que je ne devrais pas laisser les autres choisir mes outils pour moi, et que, bien qu’il soit possible d’écrire un bon logiciel en utilisant de mauvais outils, c’est une chose à éviter si possible.

Cet été là, j’ai repris contact avec mes camarades de l’université, y compris Linus. Un des étudiants un peu plus âgé que Linus et moi, Patrik, avait un sauna dans l’immeuble qu’il habitait, et il l’a réservé une fois par semaine pour notre groupe. Vous, pervers qui pensez que le mot sauna est un synonyme de bordel, pouvez arrêter d’imaginer des orgies : en Finlande, les saunas sont destinés à la baignade, à la médication, et même à la méditation, mais pas au sexe.

Il y a une photo à demi-célèbre de Linus, qui semble nu, buvant de la bière. La photo a été prise chez Patrik, par un autre étudiant, Stina, et Linus a un pantalon, mais c’était une chaude journée d’été, il n’avait donc pas sa chemise. Pas d’orgies. Vraiment.

Lorsque les études ont repris à l’automne, j’ai continué à traîner avec Linus à la plupart de nos cours en commun, aux mêmes soirées, et aussi en particulier dans les salles de terminaux. Nous avons tous deux aimé jouer avec le système Unix, et l’un des cours que nous avons pris concernait le C et la programmation Unix. Je connaissais le C depuis 1987, quand je l’ai appris seul en utilisant K&R1 [ndt : première édition du « C programming language »], et je pense que Linus en avait une certaine expérience aussi. La plupart des cours étaient peut-être un peu trop basiques pour nous, donc nous avons passé quelque temps sur des choses stupides comme réduire au minimum le nombre de lignes de code dans nos réponses à des exercices, rivalisant sur qui avait la plus courte réponse.

Nous avons exploré le système Unix et les technologies liées, et nous nous sommes beaucoup amusés. J’ai écrit ma première tâche cron, afin d’inonder Linus d’e-mails, et lui ai montré que oui, en effet, Unix met à jour les accès à l’horloge en temps réel (ce qui a été corrigé dans Linux, bien sûr). Lui, à un moment donné, a remarqué que l’université avait une imprimante Postscript, et a écrit du code PS (Postscript) à la main pour voir ce que c’était, et s’est amusé à imprimer des pages avec des boîtes de formes bizarres.

Travailler sur Kreeta était amusant, sauf quand ça plantait. Ultrix n’était pas un système de haute qualité. Un de ses défauts est que chaque fois qu’un utilisateur normal appelait l’appel système mknod, le noyau plantait dans la minute. Pendant la semaine où le cours de C et de programmation Unix traitait de mknod, kreeta fut hors service la plupart du temps.

Noël 1990 est venu et est reparti, et le 5 janvier, Linus a acheté un nouvel ordinateur. Il utilisait un Sinclair QL à la maison, mais voulait un PC avec un processeur Intel 386. Il prit son prêt étudiant et en acheta un. Il voulait en savoir plus sur le multitâche en apprenant comment le 386 le faisait. Malheureusement, il a également obtenu une copie de Prince of Persia (si je me souviens bien), un jeu pour ordinateur.

Quelques mois plus tard, quand il a finalement eu marre du jeu, il a réellement commencé à apprendre la programmation sur 386. Un jour, alors que je lui rendais visite, il m’a montré un petit programme qu’il avait mis au point, qui utilisait des threads. C’était une chose étonnante, même si elle ne ressemblait pas à grand-chose : un thread écrivait des ‘A’ à l’écran, et l’autre des  »B’, et on pouvait voir les threads commuter lorsque les ‘A’ s’arrêtaient et que les ‘B’ se lançaient, et un peu plus tard, revenaient les ‘A’.

Le plus étonnant était, bien sûr, que Linus avait écrit le tout lui-même. Ce n’était pas un morceau de logiciel commercial hors de prix écrit par des sorciers grisonnants. C’était un chouette hack, mais un hack vite fait d’étudiant. Ce fut le moment où il est devenu clair pour moi que même un programmeur seul pouvait réaliser de grandes choses, et que la technologie mystérieusement magique pouvait être vraiment assez simple sous le capot.

Bien sûr, je n’attendais pas du hack de Linus qu’il devienne quelque chose d’important et ceci pour deux raisons. La première, c’est qu’il ne s’agissait que de ‘A’ et de ‘B’ et que c’était vraiment trop simple pour représenter quelque chose de plus. La seconde, c’est que je connaissais Linus depuis un moment maintenant, et que bien qu’il soit intelligent, il était aussi fainéant, et parfois, quand il était saoul, il commençait à débattre de choses et d’autres et disait les choses les plus folles et stupides qu’on puisse imaginer quelqu’un dire.

Cependant, Linus continua de jouer avec le multitâche sur son i386, en lui faisant faire toujours plus. Une des choses qu’il souhaitait, c’était d’être capable d’accéder à Kreeta via un modem. Plutôt que d’utiliser un terminal existant (il y en avait des masses), il commença à ajouter une émulation de terminal simple à son programme multitâche. Il avait deux threads : l’un pour lire le clavier et écrire des caractères sur le port série, et l’autre lisait le port série et écrivait les caractères à l’écran. Après avoir ajouté une interprétation des séquences d’échappement du VT100, il avait un émulateur de terminal suffisamment bon pour la lecture de newsgroup chez lui.

Ce dont Linus rêvait, cependant, c’était d’un Unix chez lui. Il entendit parler de Minix, acheta le livre, et fit fonctionner Minix sur son i386. Ça marchait, mais ce n’était rien à côté des machines de l’université. Il continua à pousser son Minix, à améliorer son propre programme multitâche et plus généralement à hacker par-ci par-là.

À l’automne 1991, j’ai pris un petit boulot à côté, histoire de me faire un peu d’argent afin d’acheter mon propre PC. Le job consistait à programmer en C++ un logiciel pour un système d’information géographique quelconque. Je n’avais pas retenu ma leçon selon laquelle je ne devais pas me laisser imposer mes outils. Ce travail m’a plutôt occupé, je n’ai donc pas pu me tenir au courant de ce que Linus fit ce printemps et cet été-là. Cependant, à un moment donné, nous avions discuté de choses et d’autres en programmation et il m’avait expliqué quelque chose sur l’écriture de messages de logs dans son truc multitâche. Il avait des fonctions telles que ‘print_string(« error: i= »); print_int(i); print_string(« n »);’ et j’étais quelque peu horrifié. Linus connaissait bien sûr la fonction printf de la librairie standard, qui rendait les choses bien plus simples, mais comme il était, en substance, en train d’écrire le noyau d’un système d’exploitation, il ne disposait pas des outils de la librairie standard, et ne savait pas comment écrire son propre printf.

Je lui ai donc écrit un sprintf. Ce fut ma première contribution au noyau Linux. Elle est toujours là, même si elle a été transformée en snprintf maintenant (et c’est une bien meilleure interface, bien sûr). Linus, égal à lui-même, pensait qu’il pouvait améliorer le code et a optimisé certaines parties de celui-ci d’une manière qui m’a fait tiquer, mais comme il en était heureux, je n’y ai pas vraiment prêté attention.

Le programme multitâche de Linus grandissait, grandissait, et gagnait des caractéristiques telles qu’un pilote de disque dur, la gestion de la mémoire, et un système de fichiers. Son noyau était assez développé pour exécuter certains programmes en espace utilisateur, et il avait fait en sorte de pouvoir exécuter sur son propre noyau des programmes compilés sur Minix.

À cette époque, à l’été 1991, nous avons tous deux commencé à poster sur Usenet. En août, Linus a mentionné son projet de noyau sur comp.os.minix pour la première fois. Plus tard, il a décidé de rendre le code disponible, et a obtenu de l’un des admins de ftp.funet.fi de l’y mettre. Pour cela, le projet avait besoin d’un nom. Linus a voulu l’appeler Freax, mais Ari Lemmke, l’admin de ftp.funet.fi, décida de l’appeler Linux à la place. Vous pouvez trouver le nom Freax dans le Makefile des premières versions de Linux.

La première version de Linux n’était pas installable, si je me souviens bien. Linus avait besoin de développer un moyen d’installer son système d’exploitation. Son propre ordinateur avait lentement mué d’un système exécutant Minix/386 vers un ordinateur Linux. Je lui ai proposé mon ordinateur, Linus est venu et l’a hacké jusqu’à ce qu’il puisse installer Linux, via une disquette de démarrage. Le processus d’installation n’était pas vraiment simple, nécessitant l’édition hexadécimale des secteurs disque, mais c’était un pas dans la bonne direction.

Pendant les mois suivants, Linux suscita l’intérêt, et d’autres commencèrent à le hacker également. Pendant les vacances de Noël 1991, Linus a ajouté la mémoire virtuelle au noyau, et cette seule étape augmenta massivement l’utilité de Linux dans le monde réel.

En 1992, la popularité de Linux a augmenté rapidement, et beaucoup de gens qui n’étaient pas tous des hackers du noyau ont commencé à l’utiliser. Nous avons lancé notre propre groupe Usenet, alt.os.linux, qui devint comp.os.linux, et qui finalement a été divisé en un tas de sous-groupes. En 1992, j’ai aidé à lancer le Linux Documentation Project, et plus tard, quand comp.os.linux.announce a été créé, j’en suis devenu l’un de ses animateurs. Je n’ai pas, cependant, fait de hack sur le noyau, toujours par peur de la magie mystérieuse.

Toujours en 1992, Linus pensait que la release de la version 1.0 se rapprochait, donc il passa directement le numéro de version de 0.12 à 0.95 en une release. Puis vinrent les 0.96, 0.96b, 0.96c, et je pense qu’il y a même peut-être eu une 0.96c + 2. À un certain moment, à la 0.97 je pense, j’ai eu assez du manque de documentation dans le noyau et j’ai écrit le premier fichier README pour aider les gens à compiler leur propre noyau.

En 1993, Linus et moi nous avons été embauchés par le département sciences informatiques en tant qu’assistants d’enseignement : nous aidions d’autres élèves à faire leurs devoirs, et vérifiions qu’ils les avaient fait. Cela signifiait que nous avons eu à partager un bureau. Cela a été assez bon pour le développement de Linux. Linus avait un revenu, de sorte qu’il n’avait pas à s’inquiéter à ce sujet, et plus important encore, l’accès rapide à Internet, qui a un peu facilité les choses, surtout depuis que Linux gagnait en capacité de mise en réseau.

Pendant un certain temps, Linux n’était pas vraiment au point question réseau, de sorte qu’il fut banni du réseau universitaire. Cela a donné à Linus beaucoup de motivation pour le réparer, bien sûr.

Une des choses que l’accès à l’Internet rapide a rendu possible a été qu’il ne fallait que quelques secondes pour télécharger la plupart des logiciels, tels que le noyau Linux. Cela n’encouragea pas Linus à faire des sauvegardes ou du versionnage, mais il publiait tout de même fréquemment des tarball, dont de nombreux sites réalisaient des miroirs.

L’accès rapide à Internet nous a également permis de jeter un oeil sur les différentes distributions Linux qui sortaient. Pour une raison quelconque, Linus prit Red Hat. Je pensais que la force nécessitait un certain équilibre, j’ai donc choisi Debian. Nous avons tous les deux collé à nos choix depuis.

L’émergence des distributions Linux fut, bien sûr, une aubaine pour Linux. Même si les systèmes étaient beaucoup plus difficiles à utiliser que, disons, Mac ou Windows, au moins il n’était plus nécessaire de jouer avec les éditeurs hexadécimaux pour obtenir un système qui s’installe et démarre. Cela a beaucoup élargi la base d’utilisateurs, et amené un grand nombre de nouvelles personnes, dont certaines ont également participé à l’élaboration des systèmes. Et la boule de neige s’est mise à grossir plus rapidement.

Être employés par l’université nous a aussi aidés quand nous avons décidé d’organiser un événement pour le lancement de la version 1.0 de Linux, en 1994, quand c’est finalement arrivé. Nous avons obtenu l’accès à l’auditorium, et le chef du département d’informatique a prononcé un discours, et tout cela nous a donné suffisamment de crédibilité pour susciter l’intérêt des médias traditionnels. Il y avait même une équipe de télévision, dont la vidéo peut être trouvée à divers endroits sur Internet. Pendant les discours, nous avions lancé une compilation cérémonielle du noyau 1.0 en arrière-plan.

En 1997, Linus fut diplômé et a été embauché par Transmeta, a déménagé aux États-Unis, et j’ai surtout perdu le contact direct avec lui.

Pour une vue de la façon dont je voyais le monde Linux en 1998, voir Anecdotes Linux.

Alors, qu’ai-je appris pendant ces vingt ans ?

Le plus important, c’est que tout le monde peut faire la différence. Un grand et important accomplissement consiste en une très longue série de petites étapes, c’est ce que nous appelons sisu en finnois. Cela aide également si vous êtes intelligent et savez ce que vous faites ; vous vous souvenez de ce type dans la vingtaine, qui était très stupide lorsqu’il était ivre, et que l’on voit à moitié nu sur des photos de beuverie ? Il n’était pas si intelligent que ça, mais n’a pas abandonné. Cela aide d’être stupide et ignorant dans le bon sens du terme, de sorte que vous pensez : « Hé, je peux le faire » au lieu de « ça doit être très difficile à faire ».

Et, plus important, indépendamment de votre persévérance et de votre intelligence, il est utile d’avoir d’autres personnes pour vous aider. Une révolution prend une décennie au moins, mais vous ne pourrez pas la faire du tout si vous êtes seul.

La liberté est aussi la chose la plus importante.

La liberté d’utiliser, d’étudier, de partager, de modifier et de partager un logiciel modifié, et la liberté d’écrire un logiciel en premier lieu, sont essentielles. Elles sont essentielles non seulement pour Linux, mais pour le bien-être de tous les gens dans le monde moderne.

Au cours de ces vingt dernières années, nous avons assisté à une révolution. Linux en a fait partie, mais ce n’était pas la seule partie. L’Internet a été l’un des grands facilitateurs, la liberté du logiciel en fut un autre. Le cÅ“ur de la révolution a été de faire passer les gens de l’état de consommateurs passifs regardant patiemment la télévision, à la création, des acteurs de communication qui façonnent le monde. Cette révolution de la liberté est toujours en cours, bien sûr.

Espérons que Linux et le logiciel libre soient encore là pour les vingt prochaines années et contribuent à continuer de nourrir cette révolution.

Licence :

Article original : Linux at 20, some personal memories
Auteur : Lars Wirzenius
Licence : Creative Commons Attribution-Share Alike 3.0 Unported License.
Traduction : Banks_the_megalith, Couz
Relecture et correction : Paulette, TomBoss, insert_coincoin
(origine : linuxfr.org)

Texte original :

This is going to be long and rambling. If you’re going to read it, you may want to wait until you’re ill, and can’t get out of bed, and your head is filled with cotton, and you’re eating painkillers like they were candy. I don’t want you to feel pain while reading. Being unconscious and having a speech synthesizer read it to you at high speed is an even better option.

Linux is 20 years old this year. That’s a long time. Since I was there from the beginning I thought I’d share some memories of what’s happened.

In 1988 I graduated from high school, and got accepted into the University of Helsinki to study computer science. The studies started in September, and also in September I got invited to join Spektrum, the Swedish speaking club for those studying math, physics, chemistry, geography, or computer science.

Spektrum is a social club, which was good, since I was, and remain, shy and socially awkward, and the club provided me with a way to easily meet people when I’d moved into a new city. That’s also where I met the only other Swedish speaking new CS student of that year, a guy named Linus Torvalds.

That first year, we took some of the same classes, since all new students took those classes, and we met at Spektrum as well. A sort of friendship grew.

Computers were quite expensive back then, and the university provided access to classrooms full of PCs running MS-DOS, plus a few Macs, and some terminals connected to a big VAX/VMS system. I never liked MS-DOS that much, and they were often all in use. I couldn’t make heads or tails of the couple of Macs I tried, never having seen a GUI before. Thus I naturally graduated to the terminals, even though VAX/VMS was a horrible system to use, I thought.

After Christmas, things changed a bit. The CS department had a small Ultrix computer hidden away, mostly unused, and I happened to get access to that. Ultrix was DEC’s version of Unix. I had read about Unix, particularly in the K&R C book, and liked what I’d read. I had even written a few MS-DOS command line tools that worked like similar Unix tools. It was a joy to get access to a real Unix computer: pipes worked in real time, not via temporary files! Multiple processes at the same time! Filenames weren’t unnaturally constricted! It was quite liberating.

While playing around with the Ultrix box, which I think was called kreeta (Finnish for Crete, the island), one day I accidentally typoed the « rm » command. I had previously developed a habit of typoing « em », which was the local version of MicroEMACS, as « rm », so I tried very hard not to typo commands. However, that day, I typoed « rm something » as « rn something », and discovered Usenet.

After I got over the utter amazement of it, and the porters threw me out because the building was closing, I went home. There was a whole world out there, with people who talked about interesting things such as the C language, and I could listen in on their discussions. What could be better?

I told Linus about rn, and he liked it too. We both spent way too much time reading newsgroups. Neither of us posted anything that year, though. There were big warnings against wasting other people’s time, and we took them to heart.

The comp.lang.c newsgroup, which quickly became my favorite, had people from Bell Labs participating. Dennis Ritchie himself had fairly recently stopped posting to the group, but others were still there, such as Andrew Koenig, whose book « C Traps and Pitfalls » I’d just read. As a meek first year student, I wouldn’t have dared disturb such discourse. Linus wasn’t so meek, but he didn’t want to post something and be shown to be wrong.

Our studies for the first year ended in May, and in June we both started the semi-mandatory military service, but in different places. I did not see Linus for the next year. The Finnish army taught me to shut up, stop thinking, hurry up to wait, shoot people at a distance, and collect dirty dishes in a restaurant. My IQ dropped markedly during those nine months. I did not enjoy the experience.

I finished my military service in March, and a bit later got a summer job, writing a database application for the bureau for official translators in Finland. The application was written in dBASE IV, which taught me that I should not let others pick my tools for me, and that although it may be possible to write good software using bad tools, it’s something to be avoided if at all possible.

That summer, I re-connected with my fellow students from the university, including Linus. One of the students a few years older than Linus and me, Patrik, had a sauna in the building he lived, and he booked it once a week for the group of us. You perverts who think the word sauna is a synonym for brothel can stop imagining orgies: in Finland, saunas are for bathing, medication, even meditation, not sex.

There’s a semi-famous picture of Linus, looking naked, drinking beer. The picture was taken at Patrik’s, by a fellow student, Stina, and Linus is wearing trousers, but it was a hot summer day, so he didn’t have his shirt on. No orgies. Really.

When studies started again that fall, I continued to hang out with Linus at some of the same classes, and the same parties, and also especially in the terminal rooms. We both enjoyed playing with the Unix system, and one of the courses we took that fall was on C and Unix programming. I had known C since 1987, when I taught it to myself using K&R1, and I think Linus had some previous experience with it as well. Most of the course was perhaps a bit too basic for us, so we spent some time on silly things like compressing our answers to exercises into as few lines of code as possible, competing on who got the shorter answer.

We explored the Unix system and related tech in other ways as well, and had great fun. I wrote my first cron job, in order to flood Linus’s e-mail, and showed him that yes, indeed, Unix does update the access timestamps in real time (this has now been fixed in Linux, of course). He, at one point, noticed that the university had a Postscript printer, and wrote some PS code by hand to see what it was like, and enjoyed printing pages with weirdly shaped boxes on them.

We had a great time with kreeta, except for the times it crashed. Ultrix was not a high quality system. One of its flaws was that whenever a normal user would call the mknod system call, the kernel would crash within a minute. During the week when the C and Unix programming class discussed mknod, kreeta was down most of the time.

Christmas 1990 came and went, and on January 5, Linus bought a new computer. He’d been using a Sinclair QL at home, but wanted a PC with an Intel 386 CPU. He took his student loan and bought one. He intended to learn about multitasking by learning how the 386 did it. Unfortunately, he also got a copy of Prince of Persia (I think it was), a computer game.

Months later, when he finally got bored of the game, he started actualy learning 386 programming. One day, when I was visiting him, he showed me a tiny program he’d gotten to work, which had threads. It was an amazing thing, even if it didn’t look like much: one thread wrote As on the screen, and the other wrote Bs, and you could see threads switching when the As stopped and the Bs started, and a bit later back to As.

The amazing bit was, of course, that Linus had written the whole thing himself. This was not an expensive piece of commercial software written by greying wizards. This was a cool, but quick hack by a student. That was a moment where it became clear to me that even an individual programmer could achieve great things, and that mysteriously magical technology could be really rather simple under the hood.

Of course, I didn’t expect Linus’s quick hack to actually become anything important, for two reasons. First, it was just As and Bs, and that’s really too simple to amount to anything much. Second, I’d known Linus for a while now, and although he was clever, he was also lazy, and sometimes, when he was drunk, he’d start arguing about things and say some of the silliest, most stupid things one can imagine anyone saying.

However, Linus kept playing with multitasking on his 386, and making it do more, piece by piece. One of the things he wanted was to be able to access kreeta via a modem. Rather than use an existing terminal program (there were a bunch), he started adding simple terminal emulation into his multitasking program. He’d have two threads: one would read the keyboard, and write characters into the serial port, and the other would read the serial port, and write them on his screen. After he added some interpretation of VT-100 escape sequences, he had a terminal emulator sufficiently good for reading Usenet from home.

What Linus really wanted, though, was a Unix computer at home. He’d heard of Minix, and he’d bought the book, and got Minix running on his 386 PC. It worked, but nowhere near as well as the machines at the university. Thus he kept prodding Minix, and improving his own multitasking program, and generally hacking away.

That spring of 1991, I got a job on the side, in order to get some money so that I could buy my own PC. The job involved writing some GIS software in C++. I had forgotten my lesson about letting others choose my tools. This work kept me quite busy, so I didn’t keep track of much of what Linus did that spring and summer. However, at one point, we were discussing various things about programming, and he was explaining something about writing log messages in his multitasking thing. He’d have functions such as ‘print_string(« error: i= »); print_int(i); print_string(« n »);’ and I was quite appalled. Linus knew, of course, about printf in the C standard library, which made these things much easier, but since he was, in essence, writing an operating system kernel, the standard library was not available to him, and he didn’t know how to write his own printf.

So I wrote an sprintf for him. That was my first contribution to the Linux kernel. It’s still there, though it’s been transformed into snprintf now (and that’s a much better interface, of course). Linus, being himself, thought he could improve the code and hand-optimized some parts of it in ways that made me wince, but as long as he was happy, I didn’t really care.

Linus’s multitasking program grew, and grew, and gained features such as a hard disk driver, and memory management, and a filesystem. He had enough of a kernel to run some userspace programs, and he made it so that he could compiler programs on Minix, and run them on his own kernel.

By this time, summer of 1991, we had both started posting to Usenet. In August, Linus mentioned his kernel project on comp.os.minix for the first time. Later on, he decided to make the code available, and got one of the admins of ftp.funet.fi to put it there. For this, the project needed a name. Linus wanted to call it Freax, but Ari Lemmke, the ftp.funet.fi admin, decided to call it Linux instead. You can find the Freax name in the Makefile of the earliest Linux releases.

The first Linux release was not installable, as I recall. Linus needed to develop a way to install his operating system. His own computer had slowly morphed from running Minix/386 into a Linux computer. I offered my computer, and Linus came over, and hacked on it until he could install Linux on it, via a boot floppy. The installation process was not exactly easy, requiring hex editing of disk sectors, but it was a step in the right direction.

During the following months, Linux gained interest, and others started hacking on it as well. During Christmas break 1991, Linus added virtual memory to the kernel, and that single step made Linux massively more useful in the real world.

During 1992, Linux’s popularity grew quickly, and a lot of people started using it who weren’t all kernel hackers. We started a Usenet group of our own, alt.os.linux, which eventually became comp.os.linux, and that eventually split into a whole lot of subgroups. During 1992, I helped start the Linux Documentation Project, and later, when comp.os.linux.announce was created, became one of its moderators. I did not, however, hack on the kernel, still being scared of mysterious magic.

Still in 1992, Linus was thinking he was getting closer to releasing 1.0, so he bumped the version number from 0.12 to 0.95 in one release. Then came 0.96, 0.96b, 0.96c, and I think there may have been a 0.96c++2, even. At some point, I think 0.97, I got tired of the lack of documentation in the kernel and wrote the first README to help people compile their own kernels.

In 1993, both Linus and I got hired by the CS department as assistant teachers (possibly teaching assistant is the correct English term): we helped other students with their homework, and checked that they had done it. This meant that we got to share an office. This was quite good for Linux development. Linus had an income, so he didn’t have to worry about that, and more importantly, fast Internet access, which helped things quite a bit, especially since Linux was gaining networking abilities.

For a while, Linux did not quite do everything right with networking, so it was banned from the university network. That gave Linus a lot of motivation to fix it, of course.

One of the things that fast Internet access made possible was that it took only seconds to download most software, such as the Linux kernel. This de-motivated Linus from doing backups, or, indeed, version control, except by doing frequent tarball releases, which got mirrored by many sites.

Fast Interent access also allowed Linus and me to have a look at the various Linux distributions that were popping up. For whatever reason, Linus picked Red Hat. I thought that the Force needed some balance, so I picked Debian. We’ve both stuck to our choices since.

The emergence of Linux distributions was, of course, a boon for Linux. Even if the systems were much harder to use than, say, Mac or Windows ones, at least it was no longer necessary to fiddle with hex editors to get it to install and boot. This made the user base much larger, and brought in a lot of new people, some of whom also participated in the development of the systems. And the snowball grew faster.

Being employed by the university also helped us when we decided to organize a launch event for Linux version 1.0, in 1994, when it finally happened. We got access to the auditorium, and the head of the CS department gave a speech, and all this gave us enough credibility that there was a fair bit of interest from mainstream media. There was even a television crew, and the footage is occasionally found in various places on the Internet. During the speeches, we had a ceremonial compilation of the 1.0 kernel running in the background.

In 1997, Linus graduated and got hired by Transmeta, and moved to the US, and I mostly lost direct contact with him.

For a view of how I looked at the Linux world in 1998, see Linux Anecdotes.

So, what have I learned during these twenty years?

Most importantly, everyone can make a difference. A big, important accomplishment consists of a very long series of small steps, and having what we call sisu in Finnish helps. It also helps if you’re smart and know what you’re doing, but remember that 20-year-old who was very stupid when drunk, and also posed half-naked for beer photos? Not so smart, but also didn’t give up. It helps to be stupid and ignorant in the right way, so that you think « hey, I can do that » instead of « that must be very difficult to do ».

Also most importantly, regardless of how much perseverance you have, and how smart you may be, it helps to have others help you. A revolution takes a decade, at least, but you can’t do it at all if you’re alone.

Freedom is also the most important thing. The freedom to use, study, share, modify, and share modified software, and the freedom to write software in the first place, are essential. They’re essential not just for Linux, but for the well-being of all people in the modern world.

Over the past twenty years, we’ve seen a revolution. Linux has been a part of it, but not the only part. The Internet has been one of the great enablers, software freedom another one. The core of the revolution has been to turn people from passive consumers patiently watching television, into creating, communicating actors who shape the world. This revolution of freedom is still going on, of course.

Let’s hope Linux and free software are around for the next twenty years and help nurture the revolution further.