Linux en het GNU Systeem
door Richard
Stallman
Veel computergebruikers gebruiken dagelijks onbewust een aangepaste versie
van het GNU
systeem. Door een bizarre wending in het verleden is de huidige,
meestgebruikte versie van GNU bekend onder de naam “Linux”, en
veel gebruikers zijn zich er niet van bewust dat dit
het GNU systeem is, ontwikkeld door het GNU
Project.
Linux bestaat echt en men gebruikt het, maar het is slechts een deel van het
besturingssysteem. Linux is de kernel (de “kern“ van het
besturingssysteem): het programma dat de toegang regelt tot de diverse
onderdelen van het systeem zodat ander programma's behoorlijk kunnen
draaien. De kernel is een onmisbaar onderdeel van het besturingssysteem,
maar op zichzelf niet bruikbaar; het kan alleen functioneren in een compleet
besturingssysteem. Linux wordt meestal gebruikt in combinatie met het GNU
besturingssysteem: het hele systeem is eigenlijk GNU met Linux toegevoegd,
GNU/Linux dus. Al die zogeheten “Linux” distributies zijn dus
eigenlijk GNU/Linux distributies.
Veel gebruikers kennen het verschil niet tussen de kernel, Linux, en het
systeem als geheel, wat ze óók “Linux” noemen. Dit
dubbele gebruik van de naam geeft geen duidelijkheid. Deze gebruikers denken
vaak dat Linus Torvalds het hele systeem heeft ontwikkeld in 1991, met wat
hulp van buitenaf.
Programmeurs weten meestal wel dat Linux een kernel is. Maar omdat ze vaak
aan Linux horen refereren als aan het hele systeem nemen ze aan dat de
manier waarop het in ontwikkeld de benaming Linux rechtvaardigt. Zij geloven
bijvoorbeeld dat, nadat Linus klaar was met de Linux kernel, de gebruikers
op zoek gingen naar andere vrije software om het te completeren en de meeste
andere onderdelen zomaar vonden, klaar voor gebruik.
Wat ze vonden was niet toevallig en lag er niet zo maar—het was het
GNU systeem dat bijna af was. De beschikbare vrije software maakte het geheel
compleet doordat het GNU project al sinds 1984 aan de weg timmerde om een
compleet besturingssysteem van de grond te krijgen. In het GNU Manifest schetsten we het doel voor het
maken van een op Unix gelijkend systeem met de naam GNU. De Eerste Aankondiging van het GNU
Project bevat ook een aantal doelen voor het GNU systeem. Tegen de tijd dat
Linus aan Linux begon was GNU al bijna af.
De meeste projecten voor vrije software hebben als doel het ontwikkelen van
één programma voor een bepaald doel. Linus Torvalds
bijvoorbeeld had als doel een kernel die op Unix lijkt (Linux); Donald Knuth
had als doel een tekstzetter (TeX); Bob Scheifler had als doel een window
systeem (X Window systeem). Het is normaal om de bijdrage van een dergelijk
project af te meten aan de specifieke programma's die uit dat project
kwamen.
Wanneer we zo de bijdrage van het GNU project zouden bekijken, wat zou dan
de conclusie zijn? Een verkoper van CD-ROM's kwam erachter dat in hun
“Linux distributie”, GNU software de grootste
bijdrage leverde met 28% van de totale broncode inclusief een aantal grote
onderdelen, onmisbaar voor het systeem. Linux zelf was zo'n 3%. (De
verhouding in 2008 zijn ongeveer dezelfde: in het versiebeheer van gNewSense
maakt Linux 1,5% en de GNU pakketten 15% uit van de distibutie.) Wanneer je
dus een naam zou bedenken voor het systeem op basis wie de programma's
ervoor had geschreven dan zou je eerder uitkomen op “GNU”.
Maar we vinden niet dat dit de juiste benadering is. Het GNU project was en
is geen project voor het ontwikkelen van een specifiek programma. Het was
geen project om een C compiler te
ontwikkelen, hoewel we dit wel gedaan hebben. Het was geen project om
een tekstbewerkingsprogramma te maken, hoewel we die ontwikkeld hebben. Doel
was om een compleet vrij systeem te ontwikkelen, gebaseerd op Unix:
GNU.
Velen hebben enorm bijgedragen aan de vrije software in het systeem en
allemaal verdienen ze het om genoemd te worden. Maar de reden waarom het
een integraal systeem is—en niet alleen maar een verzameling
bruikbare programma's—is omdat dit het doel was van het GNU
project. We hebben een lijst opgesteld met benodigde programma's zodat het
een compleet vrij systeem zou worden en zijn daar systematisch naar
op zoek gegaan, hebben delen zelf ontwikkeld, of laten ontwikkelen. We
schreven belangrijke maar saaie (1) onderdelen
omdat je nu eenmaal niet zonder kunt. Sommige gereedschappen werden vanzelf
populair onder programmeurs maar we schreven ook vele onderdelen die geen
gereedschap waren (2) . We schreven zelfs een
schaakspel, GNU Chess, omdat een compleet systeem ook spelletjes nodig
heeft.
Begin 90 hadden we een compleet systeem klaar, op de kernel na (waar we ook
aan werkten, GNU Hurd, die bovenop
Mach liep). Ontwikkeling van de kernel was een stuk moeilijker dan verwacht;
GNU Hurd
begon in 2001 stabiel te draaien. We hebben echter nog een lange weg te
gaan voordat het klaar is voor algemeen gebruik.
Gelukkig hoefden we door toedoen van Linux niet te wachten op de Hurd. Nadat
Torvalds Linux in 1992 had bevrijd vormde dit het laatste stukje van de
puzzel die het GNU systeem is. Men kon daarna Linux
combineren met GNU om zo een compleet vrij systeem te verwezenlijken:
een op Linux-gebaseerde versie van het GNU systeem; oftewel het GNU/Linux
systeem.
De twee combineren klinkt eenvoudig genoeg maar was niet zo
makkelijk. Sommige onderdelen(3) van GNU
moesten behoorlijk op de schop om met Linux te kunnen samenwerken. Het
geheel zo integreren dat een distributie zo “uit de verpakking”
zou werken was ook zo'n moeilijke klus. Dit moest problemen oplossen als hoe
het systeem te installeren en op te starten—iets waar we nog niet naar
hadden gekeken omdat we nog niet zover waren. De mensen die de diverse
distributies ontwikkeld hebben droegen hun steentje bij maar dat zou toch
wel opgepakt zijn.
Het GNU project steunt GNU/Linux systemen en ook het GNU systeem,
met financiele steun van de FSF. We
financierden het herschrijven van uitbreidingen op de C bibliotheek die met
Linux te maken hadden, zodat deze nu naadloos samenwerken en de huidige
GNU/Linux systemen gebruiken nu de bibliotheek zonder aparte wijzigingen. De
FSF financierde ook de start van de ontwikkeling van Debian GNU/Linux.
Tegenwoordig zijn er veel varianten van het GNU/Linux systeem
(“distros” genoemd) in omloop. De meesten daarvan bevatten ook
niet-vrije software—hun ontwikkelaars volgen een andere filosofie die
meer verwant is aan Linux dan aan GNU. Maar er zijn ook compleet vrije GNU/Linux distros. De FSF steunt gNewSense met computerapparatuur.
Het maken van een vrije GNU/Linux distributie is niet alleen een kwestie van
het uitsluiten van niet-vrije software. Tegenwoordig bevat de gangbare
versie van Linux ook niet-vrije programma's. Het is de bedoeling dat dit
soort programma's in in- en uitvoerapparaten wordt geladen wanneer het
systeem opstart en worden alleen in binaire vorm uitgeleverd als onderdeel
van de "broncode" in de vorm van eindeloze nummerreeksen. En dus houdt dat
in dat we ook een vrije
versie van Linux moeten onderhouden.
Of je nu GNU/Linux gebruikt of niet, verwar mensen alsjeblieft niet door de
naam “Linux” slordig te gebruiken. Linux is de kernel, een
hoofdbestanddeel van het systeem. Het systeem als geheel is min of meer het
GNU systeem met daaraan Linux toegevoegd. Wanneer je het over deze
combinatie hebt, noem het dan alsjeblieft “GNU/Linux”.
Wanneer je een link naar “GNU/Linux” aan wilt maken ter
referentie, dan zijn dit artikel en
http://www.gnu.org/gnu/the-gnu-project.html een goede keuze. Als je ter
referentie een link naar Linux, de kernel, wilt aanmaken dan is http://foldoc.org/linux een goeie URL om
te gebruiken.
Addendum: Behalve GNU is er nog één ander project dat
onafhankelijk een vrij besturingssysteem heeft gemaakt dat op Unix is
gebaseerd. Dit systeem kent men als BSD, ontwikkeld aan de universiteit van
Berkeley. In de tachtiger jaren is dit begonnen als niet-vrij systeem maar
werd vrij gemaakt in de jaren 90. Een vrij en bestaand besturingssysteem(4) is tegenwoordig altijd een variant op het GNU
systeem of op BSD.
Mensen vragen weleens of BSD ook een versie van GNU is, net als
GNU/Linux. De ontwikkelaars van BSD werden geïnspireerd door het
voorbeeld van het GNU project om hun code vrij te geven, daarbij geholpen
door aanmoedigingen van GNU activisten, maar de code heeft weinig
overeenkomsten met GNU. Huidige BSD systemen gebruiken wel wat code van GNU,
net als GNU wel het een en ander gebruikt van BSD maar over het geheel
bezien zijn het toch twee verschillende systemen die apart van elkaar zich
ontwikkeld hebben. De ontwikkelaars van BSD hebben geen kernel gemaakt en
dit toegevoegd aan het GNU systeem en dus is een benaming als GNU/BSD hier
niet op zijn plaats.(5)
Voetnoten:
-
Deze saaie maar belangrijke componenten zijn onder
andere de GNU assembler (GAS) en de linker (GLD) beide nu onderdeel van het
GNU Binutils pakket, GNU tar, en meer.
-
Bijvoorbeeld de Bourne Again SHell (BASH), de
PostScript lezer Ghostscript, en de GNU C bibliotheek zijn geen
programmeergereedschappen. Ook GNUCash, GNOME, en GNU Chess niet.
-
Bijvoorbeeld de GNU C bibliotheek.
-
Nadat dit was geschreven is er een bijna geheel
vrij Windows-achtig systeem ontwikkeld, hoewel dit technisch gezien
verschilt van GNU of Linux, dus het is hier niet van toepassing. Het
merendeel van de kernel van Solaris is inmiddels vrijgegeven maar wanneer je
daar een vrij systeem van wilt maken zul je nog delen van de kernel moeten
vervangen en het vervolgens in GNU of BSD moeten hangen.
-
Hoewel, in de jaren na het verschijnen van dit artikel is
de GNU C bibliotheek overgezet op diverse versies van de BSD kernel, die het
mogelijk maakt het GNU systeem met deze kernel te distribueren. Net als
GNU/Linux zijn dit inderdaad varianten op GNU en heten dus bijvoorbeeld
GNU/kFreeBSD en GNU/kNetBSD, afhankelijk van de gebruikte kernel. Doorsnee
gebruikers van normale bureaucomputers zullen echter al nauwelijks het
verschil kennen tussen GNU/Linux e GNU/*BSD.