GNU-projektet – dets betydning og baggrund

I dette uddrag fra min kommende bog om fri software fortæller jeg, hvordan de konflikter, som jeg fortalte om i sidste uddrag førte Stallman til at grundlægge GNU-projektet, der fik stor betydning for udviklingen af alt, hvad vi forstår ved fri og open source software i dag.

GNU-projektet lanceres — og lidt forhistorie

Den 27. september 1983 satte Richard Stallman sig til tastaturet og udsendte en besked til Usenet-gruppen net.unix-wizards:

Starting this Thanksgiving I am going to write a complete Unix-compatible software system called GNU (for Gnu's Not Unix), and give it away free(1) to everyone who can use it. Contributions of time, money, programs and equipment are greatly needed.

To begin with, GNU will be a kernel plus all the utilities needed to write and run C programs: editor, shell, C compiler, linker, assembler, and a few other things. After this we will add a text formatter, a YACC, an Empire game, a spreadsheet, and hundreds of other things. We hope to supply, eventually, everything useful that normally comes with a Unix system, and anything else useful, including on-line and hardcopy documentation. [...]

Who Am I?

I am Richard Stallman, inventor of the original much-imitated EMACS editor, now at the Artificial Intelligence Lab at MIT. I have worked extensively on compilers, editors, debuggers, command interpreters, the Incompatible Timesharing System and the Lisp Machine operating system. I pioneered terminal-independent display support in ITS. In addition I have implemented one crashproof file system and two window systems for Lisp machines.

Why I Must Write GNU

I consider that the golden rule requires that if I like a program I must share it with other people who like it. I cannot in good conscience sign a nondisclosure agreement or a software license agreement.

So that I can continue to use computers without violating my principles, I have decided to put together a sufficient body of free software so that I will be able to get along without any software that is not free.

How You Can Contribute I am asking computer manufacturers for donations of machines and [...] If I get donations of money, I may be able to hire a few people full or part time. The salary won't be high, but I'm looking for people for whom knowing they are helping humanity is as important as money. I view this as a way of enabling dedicated people to devote their full energies to working on GNU by sparing them the need to make a living in another way.

GNU-projektet var født.

UNIX-systemets historie

For at forstå, hvad Stallman snakker om, er vi nødt til at spole tilbage til 1969, hvor forskerne Dennis Ritchie og Ken Thompson på AT&T Bell Labs pludselig havde fået masser af tid til rådighed. Telefonselskabet AT&T havde i samarbejde med MIT og General Electric i efterhånden mange år arbejdet på at udvikle det stort anlagte styresystem MULTICS, der var tænkt som verdens første ægte flerbrugersystem. Tiden var måske ikke inde til et sådant system, eller også var projektet for ambitiøst til, at det nogensinde kunne lykkes. MULTICS blev i alle tilfælde en fiasko, og AT&T valgte i foråret 1969 at trække sig ud af projektet. Det betød imidlertid, at Ken Thompson og Dennis Ritchie, som havde stået for AT&Ts bidrag til projektet, ikke længere havde noget at lave. Ken Thompson skrev derfor et spil ved navn “Space Travel”, så de havde noget at få tiden til at gå med, indtil der dukkede nye opgaver op. Thompson havde skrevet programmet til en mainframe, en kæmpecomputer, som det kostede 75 dollars i timen at have adgang til. De havde også en gammel PDP-7 stående i laboratoriet, og Thompson besluttede at omskrive spillet, så det kunne køre på den i stedet. Der manglede bare et ordentligt styresystem til PDP'en. Sådan et mente han nok, han kunne skrive i løbet af en uge eller to. Kort efter rejste hans kone en måned til Californien, og Thompson gik i gang.

Da Thompson og Ritchie havde omprogrammeret spillet og kunne spille det på deres PDP-7, begyndte de at interessere sig for, hvordan de kunne få det nye styresystem til at hænge fornuftigt sammen. Som en slags parodi på det fallerede flerbrugersystem MULTICS besluttede de at kalde det nye og meget simplere system for Unix. I 1972 designede Ritchie programmeringssproget C for at gøre det lettere at flytte Unix fra en slags computer til en anden. Systemet var oprindelig skrevet i maskinkode til laboratoriets PDP-7, men nu kom det også til at køre på den mere moderne PDP-11. Anvendelsen af et rigtigt programmeringssprog havde også den fordel, at systemprogrammerne blev lettere at læse og vedligeholde. I 1973 tog Ritchie og Thompson ned til Purdue University i New York og holdt et foredrag om systemet til the fourth ACM Symposium on Operating Systems Principles (SOSP). Publikum var et bredt udsnit af den akademiske sagkundskab indenfor computere og styresystemer.

Dette foredrag var en stor succes, og snart strømmede forespørgsler ind fra universiteter, der gerne ville have deres eget eksemplar af Unix. Dette satte Thompsons og Ritchies arbejdsgiver i et juridisk dilemma. På grund af den stramme amerikanske monopollovgivning måtte AT&T ikke markedsføre eller tjene penge på andet end telefoni. Ifølge firmaets advokater betød retspraksis på området, at AT&T var forpligtet til at levere systemet til alle, der ønskede det, mod et gebyr, der dækkede omkostningerne ved at levere det. Snart begyndte båndene at strømme ud til datalogiske institutter i hele landet.

Året efter omfattede Bell Labs' distributionsliste for nye versioner af Unix 40 installationer over hele verden, herunder London og Australien. Enkelte af aftagerne var private firmaer, men de fleste var universiteter med institutter for datalogi, hvor det nye system blev studeret flittigt. En bemærkelsesværdig egenskab ved det tidlige Unix-system var, at det blev distribueret sammen med hele kildekoden, så det var muligt at studere og ændre koden. Unix blev derfor hurtigt en naturlig del af undervisningen i styresystemer verden over. Systemets kildekode blev diskuteret ved konferencer og blandt forskere. Adgangen til kildekoden betød, at hvert enkelt universitet selv kunne forbedre systemet og tilføje nye funktioner. Med tiden blev Unix også porteret, det vil sige omprogrammeret, så det kunne køre på andre computere end den PDP-11, det oprindelig var beregnet til at køre på. Brugerne begyndte hurtigt at klage over den dokumentation, der fulgte med systemet. Der var faktisk slet ikke nogen, og Thompson og Ritchie plejede at henvise folk til at læse kildekoden. Det fik i 1976 australieren John Lions til at lave en annoteret udgave af hele kildekoden til sit kursus i styresystemer på universitet i New South Wales. Kildekoden omfattede på det tidspunkt knap 10.000 linjer C-kode. Lions' annotering af koden var oprindelig ment som en note til hans egne studerende, men efter AT&T ikke ønskede at levere dokumentation for et system, de ikke havde nogen mulighed for at tjene penge på, var hans bog den eneste tilgængelige analyse af systemet. Da Lions' Commentary on UNIX 6th Edition, with Source Code i 1977 blev alment tilgængelig, bredte den sig derfor hurtigt i universiteternes Unix-miljøer.

I slutningen af 1970erne ønskede forsvarsministeriets forskningsprogram DARPA at udbrede anvendelsen af deres nye kommunikationsprotokoller TCP/IP, der efterhånden blev brugt i en del universiteter og militære forskningscentre. Der var bare det ved det, at protokollerne indtil videre kun var tilgængelige på nogle ganske få computere, som allerede var på vej til at blive forældet. DARPA ville gerne have dem implementeret i et system, der var let at flytte fra én type computer til en anden. Valget faldt på Unix i den skikkelse, det havde fået på Berkeley-universitetet i Californien. De forskellige aftageres aftale med AT&T betød imidlertid, at de ikke havde lov til at beholde rettighederne til programmer, de udviklede til AT&Ts Unix-system. De udvidelser, porteringer til anden hardware og altså ikke mindst netværksprotokoller, der blev udviklet af systemets aftagere, blev flittigt udvekslet, men på betingelser, der ikke tillod kommerciel udnyttelse af deres bidrag til systemet. Da Berkeley-universitetets udgave af Unix i begyndelsen af 1980erne for alvor begyndte at brede sig, betød det også, at alle Unix-maskiner efterhånden kunne kommunikere over internettet. Eftersom Unix-systemet på det tidspunkt var den eneste helt universelle og altså også gratis implementation af internet-protokollerne, begyndte det modsatte også at gælde: En computer på Internettet var en computer, der brugte Unix. Dette var med til at gøre Unix til standardsystemet i den akademiske verden, ligesom det mindre avancerede MS-DOS på omkring samme tid blev det i den kommercielle. Det var dette system, Stallman den 27. september 1983 erklærede, at han ville erstatte med et fuldstændig frit system ved navn GNU. Det var en stor opgave, Stallman der havde påtaget sig, og det var han også godt klar over.

GNU-projektets tidlige år

Ordet styresystem eller operativsystem betegner egentlig kun de programmer, der kan få en computer til at starte og præsentere en brugergrænseflade, så man kan starte andre programmer. Men dengang var et styresystem i praksis mere end det – det var en fuldstændig samling af alle de programmer, man har brug for i sit daglige arbejde. GNU-systemet skulle derfor omfatte programmeringsværktøjer, tekstbehandling, systemværktøjer og ikke mindst underholdning. Et af de første programmer, som Stallman gik i gang med, var et skakspil. Det var, sagde han, vigtigt for et godt system at have gode spil. I februar 1984 opsagde Stallman sin stilling hos MIT og begyndte at implementere det nye system. Det betød dog ikke, at han af den grund holdt op med at færdes på MIT. AI-Labs ledelse sikrede ham en kontorplads og adgang til at bruge universitetets computere til arbejdet med det nye system.

I betragtning af projektets ambitiøse karakter er det kun naturligt, at der gik noget tid, før Stallman kunne fremvise et resultat af sit arbejde. Faktisk var hans første plan at skrive hele systemet færdigt fra ende til anden og så udgive det. Sådan kom det dog ikke til at gå.

Stallman havde via sin kontorplads stadig adgang til MITs Unix-maskiner. Han manglede imidlertid et ordentligt tekstbehandlingsværktøj. De skriveprogrammer, der var til rådighed på Unix — det ret gammeldags ed og det mere moderne, men også lidt specielle vi, som Bill Joy fra Berkeley-universitetet havde skrevet i 1976 — tiltalte ham ikke. Stallman ville have Emacs, så i 1985 begyndte han at lave sin helt egen Emacs til Unix, GNU Emacs. Hvor den gamle Emacs kunne programmeres i TECO-makroer, brugte den nye Lisp i stedet. Samtlige kommandoer var skrevet i Lisp, sådan at brugeren selv kunne ændre dem eller skrive sine egne. GNU Emacs var færdig efter nogle månedersTK intenst arbejde, og da Stallman lagde det færdige program op på MITs FTP-servere, blev det meget hurtigt populært. I 1987 udgav Stallman første udgave af sin nye compiler eller oversætter, GCC. GCC var beregnet til at oversætte C-programmer til dén maskinkode, som computerens CPU kunne forstå. GCC vakte opsigt, ikke blot, fordi den også blev lagt op på MITs FTP-server til fri afbenyttelse, men fordi der var tale om et fremragende stykke arbejde. Programmøren Michael Tiemann, der senere grundlagde Cygnus, det første firma, der specialiserede sig i GNU-software, husker den virkning, GCC havde, da den først kom frem:

During the 1980s, Tiemann had followed the GNU Project like an aspiring jazz musician following a favorite artist. It wasn't until the release of the GNU C Compiler in 1987, however, that he began to grasp the full potential of free software. Dubbing GCC a “bombshell,” Tiemann says the program's own existence underlined Stallman's determination as a programmer.

“Just as every writer dreams of writing the great American novel, every programmer back in the 1980s talked about writing the great American compiler,” Tiemman recalls. “Suddenly Stallman had done it. It was very humbling.”

Free as in Freedom, kap. 9

En anden ting, der var med at til at gøre GNU-programmer som Emacs og GCC populære, var de betingelser, de blev leveret under. Alle med Internet-adgang kunne altid hente den nyeste udgave af programmerne på MITs FTP-servere, og herefter havde man frie hænder til at installere det på alle sine maskiner. Man kunne selvfølgelig også hente kildekoden og lave sine egne ændringer. Havde man ikke adgang til nettet, tilbød Stallman at sende programmet på et bånd formedelst 150 dollars. De andre compilere, som man dengang kunne få til Unix, skulle betales pr. bruger. De blev også leveret uden kildekode, så hvis der var fejl i dem, var det bare ærgerligt for brugeren.

Den frie adgang til kildekoden indvarslede sammen med den høje kvalitet af Stallmans arbejde en helt ny æra for programmering på Unix og mange andre systemer. I et essay skrevet i anledning af tyve-årsdagen for den første udgivelse af GCC uddyber Tiemann sin første reaktion på den nye compiler:

GCC version 1.0 was a watershed event in my life. The first day I was intent on just learning how it worked—the parser, the lexical analyzer, the intermediate code generator, the optimizers, and the machine-dependent assembly output routines. I printed all the files (consuming three reams of paper) and proceeded to lay them out in piles across my extra-large dining table and any other horizontal surfaces I could see from my central position. I brought out the colored pencils I'd used when learning the art and science of integrated circuit design (red for polycilicon, green for n-diffusion, blue for metal, yellow for n-well, and black for vias and contacts) and gave the colors new meanings to track data, code, and other relationships relevant to compilers. After five days and nights, something “clicked” and I no longer needed the printouts—the data structures and basic organization suddenly became “obvious”. I put away the pencils and began to itch with the desire to hack GCC, and not lightly.

I decided to take the next step—to write a completely new port of the compiler to a microprocessor that had always fascinated me: the National Semiconductor 32032. I already had the manual from my days at the Moore School of Engineering at the University of Pennsylvania, and so I began the process of replacing templates used for the VAX and Motorola 68020 processors with templates appropriate for the National chip. I immediately ran into problems—but they were small problems and easily fixed. I had GCC generating code for the National chip within a few days, and I had it generating correct code a few days after that.

When I did this work, the typical compiler company charged millions of dollars for the service of delivering a compiler in 12-18 months, and sometimes longer. Two weeks to the day after I downloaded the compiler from the Free Software Foundation, I had it generating code that was 20% faster that the code coming from the National compiler. If I compared the $3000/month salary I earned at the time with what these companies charged, I delivered a product that was 20% better (6-9 months in Moore's Law time) for 1/1000th the cost in 1/30th the time.

GNU-værktøjerne fik, efterhånden som de kom frem, et ry for særdeles høj kvalitet. Emacs, GCC og enkelte andre værktøjer fra Stallmans værksted gik deres sejrsgang på universiteter verden over. De blev nok hjulpet på vej af den billige pris, men også af den høje kvalitet sammen med den omstændighed, at man kunne ændre og tilpasse dem, som man havde lyst. “Ændre og tilpasse” kunne nemlig også, som det fremgår af Tiemanns forklaring herover, betyde at få GNU-værktøjerne til at køre på andre maskiner end dem, som Stallman og hans medhjælpere havde adgang til. I 1990 var GNU-værktøjerne så anerkendte i den akademiske verden, at Stallman blev tilkendt den såkaldte “genipris” fra John D. and Catherine T. MacArthur Foundation. Prisen var på 240.000 dollars og betød ud over selve anerkendelsen af projektet, at Stallman for første gang kunne hellige sig GNU-projektet på fuld tid. Han havde hidtil levet af forskellige konsulent-jobs, mens han skrev GNU-programmer og holdt foredrag i sin “fritid”.

Omkring 1990 var GNU-projektet ved at være afsluttet i den forstand, at det næsten havde nået sit mål: Alle væsentlige dele af et styresystem var efterhånden på plads, så det var muligt at bruge en computer alene baseret på fri software. Det eneste, der manglede, var den meget væsentlige komponent, der kaldes en kerne. Kernen er den del af en computers styresystem, der rent faktisk er i kontakt med computerens hardware og læser fra tastaturet, skriver på skærmen, kommunikerer med printeren og så videre. GNU-projektet var begyndt at udvikle en sådan kerne tilbage i 1986. Dette projekt mislykkedes, blandt andet fordi man havde baseret sit arbejde på en eksperimentel kerne udviklet på MIT, som viste sig at være ubrugelig. I stedet håbede man at kunne bygge på BSD-systemets kerne. Det mener Thomas Bushnell, som dengang var ansvarlig for GNU-projektets kerneudvikling, stadig ville have været vejen frem:

RMS [= Richard M. Stallman] was a very strong believer — wrongly, I think — in a very greedy-algorithm approach to code reuse issues. My first choice was to take the BSD 4.4-Lite release and make a kernel. I knew the code, I knew how to do it. It is now perfectly obvious to me that this would have succeeded splendidly and the world would be a very different place today.

Groklaw (archive.org)

På grund af disse forsinkelser kunne arbejdet med en kerne til GNU-systemet først for alvor gå i gang i løbet af 1991, og da var det på en måde allerede for sent. Projektet var hjemsøgt af problemer, og her næsten tyve år senere er GNU Hurd, som GNUs kerne-projekt kom til at hedde, stadig ikke klar til brug. Dette var problematisk for Stallmans GNU-projekt, men blev i sidste ende ikke noget stort problem for fri software-bevægelsen som sådan.


Copyright 2025 Carsten Agger — CC-BY-SA

Follow me on Mastodon!.