Linux en het GNU Project
door Richard Stallman
Voor nog meer informatie hierover, lees ook de GNU/Linux Veelgestelde Vragen, ons artikel Waarom GNU/Linux? en GNU Gebruikers Die Nog Nooit Van GNU Gehoord Hebben.
Veel computergebruikers gebruiken dagelijks een aangepaste versie van het GNU systeem zonder zich ervan bewust te zijn. Door een bizarre wending in het verleden is de versie van GNU die de meeste mensen heden ten dage gebruiken, beter bekend onder de naam “Linux”, en veel gebruikers zijn zich niet bewust van de hechte band tussen Linux en het GNU Project.
Er bestaat echt een Linux en men gebruikt het maar dat is niet 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 binnen een volledig besturingssysteem. Linux wordt meestal gebruikt in combinatie met het GNU besturingssysteem: het hele systeem is eigenlijk GNU waarbinnen Linux draait als kernel.
Veel gebruikers kennen het onderscheid niet tussen de kernel, te weten Linux, en het systeem als geheel, wat ze óók “Linux” noemen. Dit dubbele gebruik van de naam schept 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%. Wanneer je dus een naam zou bedenken voor het systeem op basis wie de programma's ervoor had geschreven dan zou je zonder meer 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 van het GNU project 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 goeie 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). Het ontwikkelen van de kernel was een stuk moeilijker dan we verwacht hadden; 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 niet op Hurd te wachten doordat Linux voorhanden was. Toen Linus Torvalds Linux schreef vulde hij daarmee het laatste gat in het systeem. Mensen konden toen Linux met het GNU systeem samenvoegen om zo een compleet vrij besturingssysteem te verkrijgen: een versie van het GNU systeem, gebaseerd op Linux; oftewel het GNU/Linux systeem. De eerste release notes van Linux gaven aan dat het een kernel was die gebruik maakte van onderdelen van GNU: “De meeste gereedschappen die met Linux worden gebruikt zijn GNU software en vallen onder de GNU auteursplicht. Deze gereedschappen zitten niet in de distributie - neem contact met me op (of met GNU) voor meer informatie.”
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.
We gebruiken op Linux gebaseerde GNU systemen nu voor al ons werk en we hopen dat jij dat ook doet. Vandaag de dag 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 twee van deze distributies met computerapparatuur, Ututo en gNewSense.
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 het ook in dat we 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.doc.ic.ac.uk/foldoc/foldoc.cgi?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 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.(4)
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.
- Hoewel, in de jaren na het verschijnen van dit artikel is de GNU C bibliotheek overgezet op de FreeBSD 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 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.
