Martin Herrman en Gertjan Zwartjes
De Pingu¨ın en de GNU De geschiedenis van Open Source en Linux 22 mei 2003
ii
Het Begin van een Revolutie 25 Aug 91 20:57:08 GMT
Hello everybody out there using minix I’m doing a (free) operating system (just a hobby, won’t be big and professional like GNU) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things). I’ve currently ported bash (1.08) and gcc (1.40), and things seem to work. This implies that I’ll get something practical within a few months, and I’d like to know what features most people would want. Any suggestions are welcome, but I won’t promise I’ll implement them :-)
Linus (
[email protected])
PS. Yes - it’s free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-hard disks, as that’s all I have :-(.
iii
iv
Inhoudsopgave Het Begin van een Revolutie
iii
1 Inleiding
1
2 Hackers
3
3 De Gnoe 3.1 Een stukje geschiedenis . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 7
3.2 Free vs. Open Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.3 De eerste GNU programma’s . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4 Eindresultaat in zicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.5 Toekomst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4 De Pingu¨ın
13
4.1 UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2 Voor de fun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.3 Van hobby tot eindproduct . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.4 Van alle markten thuis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5 In de Maatschappij
19
5.1 Vrije software, een noodzaak? . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.2 GNU/Linux voor iedereen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.3 Het bedrijfsleven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.4 De overheid, Free Software en open standaarden . . . . . . . . . . . . . . . 21 5.5 Het onderwijs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.6 Monopolie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 6 Conclusie
25
Bibliografie
27
A General Public License
29
B Minix vs. Linux
35
v
vi
Hoofdstuk 1
Inleiding Wat houden Open Source, GNU en Linux precies in? Waar ligt de oorsprong van Open Source? Welke maatschappelijke omstandigheden droegen bij tot de ontwikkeling van Open Source? Hoe zijn Linux, GNU en Open Source met elkaar verbonden? Wat zijn de meningen en argumenten van tegenstanders van Open Source en Free Software? Kortom, wat is de geschiedenis van Open Source, GNU en Linux? Deze, en nog meer vragen, proberen we in deze scriptie te beantwoorden door terug te gaan naar de Hacker cultuur van de jaren ’60 en te onderzoeken welke invloeden, ideeen en omstandigheden ervoor gezorgd hebben dat we tegenwoordig kunnen spreken van een gevestigde “Open Source Community” die vooral gebruikt maakt van zogenaamde “Free software”. In het volgende hoofdstuk belichen we kort de geschiedenis van de hacker cultuur en hoe hackers gekarakteriseerd kunnen worden. Daarna gaan we in hoofdstuk 3 in op de geschiedenis van Open Source en Free Software. Hoofdstuk 4 vertelt het onstaan van Linux en de samenhang van Linux en de in hoofdstuk 3 beschreven Free Software. Wat de invloed van dit alles is op de maatschappij beschrijven we in hoofdstuk 5 en onze conclusies presenteren we in het laatste hoofdstuk.
1
2
Hoofdstuk 2
Hackers De hacker cultuur zoals we die nu kennen stamt uit de zestiger jaren. De term ‘hacker’ blijkt voor het eerst te zijn ontstaan in de computer cultuur van Massachusetts Institute of Technology (MIT). Deze eerste hackers waren werkzaam in het Artificial Intelligence Laboratorium (AI Lab) van MIT. De invloed van deze hackers werd een stuk groter na het jaar 1969, het eerste jaar van het ARPAnet. Het ARPAnet was het eerste transcontinentale, hoge snelheids computer netwerk. Het was origineel gebouwd door het Amerikaanse Ministerie van Defensie als expiriment in digitale communicatie, maar het groeide uit tot een groots netwerk tussen universiteiten, leveranciers aan het ministerie van defensie en onderzoekslaboratoria. Door dit netwerk konden onderzoekers overal met een hoge snelheid en flexibiliteit informatie uitwisselen. Technologische vooruitgang door onderlinge samenwerking raakte hierdoor in een stroomversnelling. Maar niet alleen onderzoeksinstituten raakten onderling verbonden. Ook hackers verspreid over de Verenigde Staten vormden door het ARPAnet een verenigde sociale groep. In plaats van geisoleerde kleine groepjes elk hun eigen cultuur ontwikkelend, vormden ze samen een stam over het netwerk. De eerste opzettelijke vormen van kunstuiting van de hacker cultuur – de eerste lijsten van vaktaal, de eerste discussies over ethische kwesties over het hacken – allemaal werden ze gepropageerd via het ARPAnet. Een van de eerst gepubliceerde en beste resources over de hacker cultuur is het boek “The New Hacker’s Dictionary”, zie [8]. Wat deze cultuur opleverde was software. De hackers produceerden in deze tijd zogenaamde ‘Free Software’. De source werd verspreid over het netwerk; samenwerken was de drijvende kracht achter deze cultuur. Twee belangrijke ontwikkelingen vonden plaats: de programmeertaal C ontstond en het besturingssysteem UNIX werd ontwikkeld in die taal. Maar helaas, langzaamaan sloeg de commercialisatie ook toe in de computer wereld. De tijd van MS-DOS trad aan; vanwege de onverbondenheid van MS-DOS aan een of ander netwerk vormden de MS-DOS gebruikers geen samenhangende cultuur. Vanaf het begin van de jaren ’80, ontstonden er vele lokale MS-DOS gebaseerde bulletin boards (BBS’s), compleet gescheiden van het internet en van de internet hackercultuur. Die BBS cultuur bevatte een groep van “pirate boards”, bewoond door zogenaamde crackers. Deze mensen (meestal tieners met goedkope PC’s) hebben ook een cultuur met bijbehorend jargon ontwikkeld, zwaar be¨ınvloed door skateboard taal en rockmuziek-dialect. Hoewel crackers zichzelf vaak hackers noemen, ze zijn het niet (typische crackers hebben geen uitgesproken programmeerkwaliteiten, noch internet expertise, noch ervaring met UNIX of andere ware multi-user systemen). Om het verschil tussen hacker en cracker duidelijk 3
te maken, volgen hieronder deze termen zoals ze zijn opgenomen in “The New Hacker’s Dictionary”: hacker: n. [originally, someone who makes furniture with an axe] 1. A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary. 2. One who programs enthusiastically (even obsessively) or who enjoys programming rather than just theorizing about programming. 3. A person capable of appreciating hack value. 4. A person who is good at programming quickly. 5. An expert at a particular program, or one who frequently does work using it or on it; as in ‘a Unix hacker’. (Definitions 1 through 5 are correlated, and people who fit them congregate.) 6. An expert or enthusiast of any kind. One might be an astronomy hacker, for example. 7. One who enjoys the intellectual challenge of creatively overcoming or circumventing limitations. 8. [deprecated] A malicious meddler who tries to discover sensitive information by poking around. Hence password hacker, network hacker. The correct term for this sense is cracker. cracker: n. One who breaks security on a system. Coined ca. 1985 by hackers in defense against journalistic misuse of hacker (q.v., sense 8). An earlier attempt to establish worm in this sense around 1981–82 on Usenet was largely a failure. Use of both these neologisms reflects a strong revulsion against the theft and vandalism perpetrated by cracking rings. The neologism ‘cracker’ in this sense may have been influenced not so much by the term ‘safe-cracker’ as by the non-jargon term ‘cracker’, which in Middle English meant an obnoxious person (e.g., ‘What cracker is this same that deafs our ears / With this abundance of superfluous breath’ – Shakespeare’s King John, Act II, Scene I) and in modern colloquial American English survives as a barely gentler synonym for ‘white trash’. While it is expected that any real hacker will have done some playful cracking and knows many of the basic techniques, anyone past larval stage is expected to have outgrown the desire to do so except for immediate, benign, practical reasons (for example, if it’s necessary to get around some security in order to get some work done). Thus, there is far less overlap between hackerdom and crackerdom than the mundane reader misled by sensationalistic journalism might expect. Crackers tend to gather in small, tight-knit, very secretive groups that have little overlap with the huge, open poly-culture of hackers; though crackers often like to describe themselves as hackers, most true hackers consider them a separate and lower form of life. An easy way for outsiders to spot the difference is that crackers use grandiose screen names that conceal their identities. Hackers never do this; they only 4
rarely use noms de guerre at all, and when they do it is for display rather than concealment. Ethical considerations aside, hackers figure that anyone who can’t imagine a more interesting way to play with their computers than breaking into someone else’s has to be pretty losing. Een erg aangename manier om kennis te maken met de daadwerkelijke cultuur van de hackers is het lezen van appendix B van “The New Hacker’s Dictionary”: “A Portrait Of J. Random Hacker”. De mainstream hackers, verspreid over het tot internet uitgegroeide ARPAnet, lieten deze commercie koud. Zij hadden ‘hun’ UNIX. Maar niet voor de (goedkope) 32-bit PCklasse machines. Dus hun software kon niet uitblijven, ook niet voor dit nieuwe platform. Hiervoor gaan we terug naar het AI Lab van MIT. Tijdens de commercialisatie van dit lab stond er een man op: Richard Stallman. Hij vormde de Free Software Foundation en besloot zijn leven te wijden aan het ontwikkelen van Free Software. In het volgende hoofdstuk gaan we hiermee verder en gaan we in op de geschiedenis van Open Source en Free Software.
5
6
Hoofdstuk 3
De Gnoe 3.1
Een stukje geschiedenis
In het vorige hoofdstuk hebben we de belangrijkste ontwikkelingen gezien sinds de ’hacker cultuur’ in de jaren ’60 begon. Groepjes mensen hielden zich als hobby bezig met het ontdekken van de mogelijkheden van de technologie¨en die op dat moment aanwezig waren. In de jaren ’60 en ’70, toen computers nog geen gemeengoed waren, werkten de onderzoekers ook al op deze manier; iedereen bracht zijn ontwikkelingen openbaar en de onderzoekers werkten samen om het beste resultaat te behalen. Wanneer een bedrijf een stuk software wilde gebruiken kon het de broncode gratis krijgen. In de jaren ’80 veranderde deze gedachte. Er kwam nieuwe hardware met eigen besturingssystemen, waarvan de broncode niet beschikbaar was, met restricties op het gebruik en de verspreiding van deze besturingssystemen. Deze restricties werden vastgelegd in licenties1 en werden ook bij applicaties toegepast. Voor mensen als Richard Stallman, die deel uitmaakten van de hacker cultuur en gewend waren code uit te wisselen met anderen, klonk het als volgt (uit: [11]): If you share with your neighbour, you are a pirate. If you want any changes, beg us to make them. Richard Stallman besloot door deze verandering een project genaamd GNU, zie http:// www.gnu.org te starten. Het project moest ervoor zorgen dat computergebruikers gebruik konden maken van hun machine zonder enige restrictie op de gebruikte software. Om dit te bereiken stelde hij een document op dat hij de ’General Public Licence’ (GPL)[3] noemde, zie ook bijlage A. Deze licentie kan door iedereen gebruikt worden voor elk stuk geschreven software en is het antwoord op het Copyright, de GPL wordt daarom ook wel ’Copyleft’ genoemd. van bedrijven die allerlei restricties stellen aan het gebruik en de verspreiding van de software. RMS deed zijn eerste offici¨ele aankondiging, zie http://http://www.gnu.org/initial-announcement.html, van het GNU project op usenet. Uit het bericht blijkt dat hij nog niet precies wist wat er onder “free” verstaan moest worden: “. . . and give it away free to everyone who can use it.” 1
Het gebruik van licenties en de rechtsgeldigheid is vastgelegd in de octrooi wetgeving. Bij software speelt ook de auteur wetgeving een belangrijke rol. We gaan hier niet verder op in; wetgeving en software is een verhaal apart.
7
Wel geeft hij duidelijk aan waarom hij het project wil starten: “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.” De GPL zorgt ervoor dat software ’Free’ is en blijft. ’Free’, niet in de zin van ’gratis bier’, maar als in ’vrij om te spreken’. Vrij om met de software te doen wat je ermee wilt doen, mits je ervoor zorgt dat de software vrij blijft. Je mag de software vrij wijzigen en verspreiden (eventueel tegen betaling), zolang je de broncode van de gewijzigde software beschikbaar stelt (eventueel tegen productie- en verspreidingskosten) en de gewijzigde software ook verspreidt onder GPL. Op deze manier zal software die als Free Software geschreven en beschikbaar gesteld is ook altijd vrij blijven. Nu is het niet zo dat bij onder GPL uitgegeven software er geen eigenaar is. Via het copyright is er wel degelijk een eigenaar (dit copyright kan overgedragen worden naar een nieuwe eigenaar en is in beginsel eigendom van de maker van de software). Wanneer iemand inbreuk maakt op de licentie moet de eigenaar daar actie tegen ondernemen. De ’Free Software Foundation’ (zie paragraaf 3.2) kan daar hulp bij bieden. Richard Stallman (RMS) is in 1984 het GNU project gestart om het ’Free’ besturingssysteem GNU (GNU’s not Unix) te ontwikkelen om computergebruikers over de gehele wereld terug te geven wat verloren was gegaan. GNU is Free Software die vrijelijk gekopieerd, gewijzigd en verspreidt mag worden. RMS studeerde in 1974 af in Harvard op het gebied van de natuurkunde. Tijdens zijn studie werkte hij als medewerker op het kunstmatige intelligentie laboratorium van het Massachusets Institute of Technology (MIT), waar hij al doende leerde hoe een besturingssysteem ontwikkeld werd. In 1975 schreef hij de eerste versie van zijn Emacs, een uitbreidbare text editor. In januari 1984 nam hij afscheid van MIT om aan het GNU project te gaan werken. Figuur 3.1: Richard Stallman
RMS ontving in 1991 de ‘Grace Hopper’ award voor zijn Emacs editor. In 1990 ontving hij een ’MacArthur Foundation Fellowship’ en in 1996 een eredoctoraat van het ’Royal Institute of Technology’ in Zweden. In 1998 ontving hij samen met Linus Torvalds de ’Electronic Frontier Foundation’s Pioneer Award’. In 1999 de ’Yuri Rubinski Award’ en in 2001 een tweede eredoctoraat van de universiteit van Glasgow en deelde hij de ’Takeda Award for social/economic betterment’ samen met Linus Torvalds en Ken Sakamura.
8
3.2
Free vs. Open Source
Tot nu toe hebben we het gehad over Free Software en Open Source. Zijn deze twee termen gelijk aan elkaar? Nee, deze twee termen zijn niet synoniem 2 . Volgens de Free Software Foundation (FSF) (de door Richard Stallman opgerichte stichting die ondersteuning biedt aan het ontwikkelen van Free software en tegen een kleine vergoeding de software verspreidt. Ook helpt de stichting mee aan de ontwikkeling van het GNU project, zie http://www.fsf.org ) is het uitgangspunt van beide idee¨ en verschillend. De volgende uitspraak (uit: [12]) verwoordt het verschil: Open Source is a development methodology; Free software is a social movement. De keuze om software Open Source te maken is ontstaan uit praktische overwegingen. ’Propriate’ (non-free ofwel software met restricties) software is echter een sociaal probleem en Free software is de oplossing daarvoor; de keuze hiervoor is ontstaan uit een ethisch uitgangspunt. De FSF merkt op dat mensen (en bedrijven) al snel angstig worden van deze ethische benadering. Het dwingt ze namelijk na te denken over een gewetensvol onderwerp. De term Open Source mist de ethische lading. Het is dan ook niet raar dat de Open Source Initiative (OSI), zie http://www.opensource.org , in februari 1998 ontstond toen Netscape de broncode openbaar wilde maken. De Open Source Initiative heeft een standaard uitgebracht waar licenties aan moeten voldoen om Open Source genoemd te mogen worden. Deze standaard heet de ’Open Source Definition’ (OSD), zie [4], en is afgeleid van de ’Debian Free Software Guidelines’ (DFSG), zie [7]. De Open Source Initiative geeft aan software die aan deze standaard voldoet een OSI certificaat af. Met nadruk moet opgemerkt worden dat de GPL een licentie is; software uitgebracht onder GPL noemen we Free Software. De OSD is een document dat voorwaarden stelt aan licenties voordat de software die onder de betreffende licentie uitgebracht wordt Open Source Software (OSS) genoemd mag worden. In de GPL staat dat je software uitgebracht onder GPL vrijelijk mag kopi¨eren, aanpassen, gebruiken en verspreiden, zolang je de gewijzigde broncode gratis (eventueel tegen productie- en verspreidingskosten) beschikbaar stelt en anderen over de aangepaste software dezelfde rechten geeft als de rechten die je zelf hebt. Zo blijft software die eenmaal onder GPL uitgebracht is altijd onder GPL beschikbaar. In de OSD van de OSI staat: The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software. Maar ook: The license may restrict source code from being distributed in modified form only if the license allows the distribution of patch files with the source code for the purpose of modifying the program at build time. Kortom: de maker van de betreffende software kan ervoor kiezen om te verbieden dat zijn door anderen gewijzigde software vrijelijk verspreidt mag worden. Het moet dan wel 2
Alhoewel met de term Open Source Software (OSS) vaak Free software bedoelt wordt. Er dreigt eenzelfde misverstand te ontstaan als bij de woorden ’hacker’ en ’cracker’
9
mogelijk zijn om patches uit te brengen die de originele broncode aanpassen voordat het programma gecompileerd wordt. In de praktijk kan dat een belangrijk gevolg hebben voor software die uitgebracht is onder een licentie die aan de OSD voldoet. Wanneer de licentie het vrij verspreiden van gewijzigde software niet toestaat zullen gebruikers zelf de patches uit moeten voeren en het programma moeten compileren. Beginnende computergebruikers zullen hierdoor snel geneigd zijn om alleen de ongewijzigde software te gebruiken zonder de verbeteringen van anderen. Dit komt de ontwikkeling van de software niet ten goede. Een punt dat genoemd moet worden is de definitie van Open Source software. Hierboven hebben we die software die uitgebracht wordt onder een licentie die voldoet aan de voorwaarden die in het OSD genoemd staan Open Source Software genoemd. Aan deze Open Source Software mag iedereen wijzigingen aanbrengen, ook al kan de wijze waarop deze wijzigingen verspreid mogen worden beperkt zijn. Veel mensen vergeten echter dat bedrijven hun software al snel Open Source Software noemen wanneer de broncode ingezien kan worden; dit is een wezenlijk verschil met de voorwaarden die het OSD stelt!
3.3
De eerste GNU programma’s
De eerste software die een gebruiker nodig heeft om gebruik te kunnen maken van een computer is het besturingssysteem; dus begon Richard Stallman met het ontwikkelen van een besturingssysteem onder GPL. Het besturingssysteem werd ’GNU’ genoemd. In die tijd was ’Unix’, zie http://www.bell-labs.com/history/unix/ en http://www. levenez.com/unix/, een veel gebruikt besturingssysteem dat zichzelf al bewezen had en dat eenvoudig portable was. Richard Stallman besloot daarom een Unix compatible besturingssysteem te maken. Ook zou het dan voor Unix gebruikers eenvoudig zijn om de overstap te maken. Zowel qua gebruik, als qua beschikbare software. Dit verklaart ook de naam GNU: Gnu is Not Unix. Een besturingssysteem bestaat uit een kernel, compilers, editors, mail software, libraries en nog veel meer. Het zou een grote klus worden die een aantal jaren in beslag zou nemen. Omdat het zo’n groot project zou worden besloot Richard om zoveel mogelijk bestaande Free Software te gebruiken. Allereerst moest er een compiler worden ontwikkeld. Er was een compiler beschikbaar met de naam ’VUCK’ (Free University Compiler Kit; Free in het Nederlands is Vrij), maar na navraag bleek dat de compiler geen Free Software was. Richard ging verder op zoek en vond de ’Pastel’ compiler van het ’Lawrence Livermore Lab’ die geschreven was in een uitbreiding op Pascal en bedoeld was voor systemprogramming. Hij schreef een C front-end en portte de compiler naar de Motorola 680000 processor. Er bleek echter dat de compiler veel geheugen in gebruik nam doordat het inefficient ontworpen was. Daarom besloot Richard uiteindelijk om een eigen compiler te schrijven: ’GCC’, zie http://gcc.gnu.org . GCC staat voor ’GNU C Compiler’ en kwam in april 1999 onder beheer van de FSF uit. Later werd GCC hernoemd naar GNU Compiler Collection. Tijdens het zoeken naar een geschikte compiler begon Richard ook aan het schrijven van een editor genaamd Emacs, zie http://www.gnu.org/software/emacs/. Toen de eerste versie klaar was ontstond er een probleem. De editor stond op een FTP server, maar in die tijd hadden veel mensen geen internetverbinding. Hoe moest de software gedistribueerd worden? Richard besloot om 150 dollar te vragen voor een kopie (hij was 10
immers werkloos), terwijl mensen het programma ook gratis konden downloaden via FTP. Hij begon zelf een Free Software distributie bedrijf waar nu de grote Linux distributies als RedHat hun geld mee verdienen. Op dit moment realiseerde Stallman dat er iets gerealiseerd moest worden om ervoor te zorgen dat Free Software ook vrij bleef. Er kon namelijk niet voorkomen worden dat een bedrijf een programma als Emacs kopieerde, wijzigde en onder een eigen copyright licentie distribueerde. Later bleek een bekend voorbeeld het X11 Windowing System te zijn, dat in principe Free Software was, maar door Unix fabrikanten werd aangepast en onder het Unix copyright werd gesteld. De makers van X11 waren hier overigens op voorbereid en hadden als doel zoveel mogelijk gebruikers aan te trekken, ook al zouden niet alle gebruikers de software vrij kunnen gebruiken. Richard besloot om ook gebruik te maken van een licentie om de rechten en plichten van de gebruiker vast te leggen. Ditmaal echter niet om het gebruik van de software en de vrijheid van de gebruikers te beperken zoals de bedoeling van het copyright is, maar om de vrijheid te blijven garanderen. Dit wordt ook wel copyleft genoemd. Het copyleft werd vastgelegd in de GNU General Public Licence (GNU GPL) waar je meer over hebt gelezen in paragraaf 3.1 en 3.2. Voor andere onderdelen (bijv. bibliotheken en documentatie) werden andere licenties geschreven omdat daar andere rechten en plichten aan worden gesteld. Het GNU project bleef groeien en er raakten steeds meer mensen betrokken bij het project. In 1985 werd er daarom besloten om de ‘Free Software Foundation’, zie http: //www.fsf.org op te richten. Deze stichting zet zich in voor het ondersteunen van de ontwikkeling van Free Software door voor een vergoeding de software te verspreiden. Ook helpen werknemers van de FSF mee aan het ontwikkelen van het GNU besturingssysteem.
3.4
Eindresultaat in zicht
In 1990 was het dan zover: alle onderdelen die voor een volledig besturingssysteem vereist zijn waren afgerond, behalve de kernel. Er werd besloten om gebruik te maken van de ’Mach kernel’ ontwikkeld aan de Carnegie Mellon University en later aan de Universiteit van Utah. Mach is een microkernel waarvan beloofd was dat deze na verloop van tijd uitgebracht zou worden als Free Software. Op dat moment zou de kernel gebruikt kunnen worden. Gebruikersapplicaties zouden dan geimplementeerd worden als servers op de Mach kernel. Er zouden dan ook servers geschreven worden waarmee de taken van een Unix kernel geimplementeerd konden worden. Het Mach kernel project bleek echter moeilijker dan verwacht en het zou nog enkele jaren duren voordat deze nieuwe kernel bruikbaar zou zijn3 . In 1992 kwam kwam er echter een andere kernel in zicht van het GNU project die zowel Unix-compatible was, alsmede uitgebracht werd als Free Software. Linus Torvalds, een Finse student, was de maker van de Linux kernel, zie http://www.kernel.org . De kernel werd gebruikt in het besturingssysteem GNU en het geheel werd GNU/Linux genoemd. 3
Ondertussen is de naam gewijzigd in The Hurd en zijn de eerste bruikbare versies gerealiseerd. Voor meer informatie, zie http://www.gnu.org/software/hurd/hurd.html
11
3.5
Toekomst
Volgens het GNU project is er een goede basis gelegd voor de toekomst van Free Software. Het is echter niet vanzelfsprekend dat Free Software altijd zal blijven bestaan. Er zijn enkele obstakels die in de toekomst overwonnen moeten worden. Allereerst is er het probleem van hardware fabrikanten die geen specificaties vrijgeven voor de door hen op de markt gebrachte hardware. Hierdoor moeten programmeurs van Free Software de techniek van ’reverse engineering’ toepassen die veel tijd in beslag neemt. Daarnaast is er het gevaar van niet vrije libraries. Voorbeelden hiervan zijn Motif (welke later een onder GPL uitgebracht equivalent genaamd LessTif kreeg) en de Qt library (die in september 2002 werd uitgebracht onder de GPL). Programmeurs van Free Software maken min of meer onbewust gebruik van deze niet vrije libraries en beperken zo de vrijheid van de gebruikers. De kans is aanwezig dat deze geschiedenis die gelukkig positief is afgelopen voor Free Software gebruikers, zich zal herhalen, misschien met een andere afloop. Vervolgens is er nog de moeilijkheid met patenten. Zo is er in 1983 een patent afgegeven voor de techniek van gif plaatjes. Dat is de reden dat er geen Free Software beschikbaar is die gebruik maakt van deze techniek. Patenten kunnen er dus voor zorgen dat gebruikers die Free Software gebruiken vanwege de praktische voordelen van software ontwikkelingen volgens dit model teleurgesteld raken door missende functionaliteit. Gebruikers die zich bewust zijn van de noodzaak van Free Software zullen op zoek gaan naar alternatieven om toch hun werk te kunnen doen. Tenslotte moet er volgens het GNU project voor gezorgd worden dat ook de documentatie die bij de software geleverd wordt volledig en vrij is. Is dat niet het geval dan kan een programmeur die de Free Software wijzigt deze wijzigingen niet in de documentatie vastleggen en is het gewijzigde programma onbruikbaar. Dat de verspreiding van vrije documentatie belangrijk is voor de ontwikkeling van Free Software zal duidelijk zijn. Toch past het laatste punt dat het GNU project aanvoert niet geheel in het rijtje. Immers, het is ook belangrijk dat er uberhaupt Free Software wordt geschreven. Samen met het schrijven van vrije documentatie zijn dat twee triviale obstakels die altijd genomen zullen moeten worden. Wel geeft het GNU project aan dat er nog een ander probleem ontstaat door het grote aantal ontstane gebruikers van Free Software. In de jaren ’90 zijn veel gebruikers Free Software niet gaan gebruiken om het feit dat de software vrij is (het ethische uitgangspunt), maar omdat de kwaliteit van de software zelf hen aansprak. Om ervoor te zorgen dat er in de toekomst Free Software zal blijven bestaan moeten de gebruikers inzien waarom er Free Software moet bestaan. Dit inzicht is immers de drijfveer die Free Software mogelijk maakt.
12
Hoofdstuk 4
De Pingu¨ın 4.1
UNIX
Om de geschiedenis van Linux te kunnen begrijpen moeten we terug naar het jaar 1969. In dat jaar startte Ken Thompson met de ontwikkeling van een eerste Unix systeem bij Bell Labs; hij wilde van de restricties van de populaire systemen van toen af. De eerste versie was geschreven in assembler code voor het toenmalige DEC PDP-7 systeem. Om de code meer machine onafhankelijk te maken ontwikkelde Thompson de taal B. Later werd deze taal opnieuw gedefinieerd door Dennis Ritchie en kreeg zij de naam C. De tweede versie van Unix, geschreven voor de PDP-11, kwam uit in 1971 en was bijna compleet geschreven in C. Een Unix systeem wordt niet alleen gedefinieerd door de kernel van het besturingssysteem dat de communicatie met de hardware regelt, en taken zoals processen schedulen en geheugen alloceren vervult, maar ook door een aantal zogenaamde utility programma’s. Met deze programma’s kan een gebruiker bestanden aanmaken, verwijderen, door zijn bestandssysteem bladeren, enzovoorts. Utility programma’s zijn meestal kleine en zeer gespecialiseerde programmaatjes die met zo weinig mogelijk code ge¨ımplementeerd kunnen worden. Dit reduceert het aantal bugs in de code en is een van de redenen waarom een Unix systeem zo stabiel en makkelijk te gebruiken is. Deze programmaatjes kunnen als een pijpleiding gebruikt worden, zo dat de output van het ene programma de input is voor het andere. Zo kun je dus complexere taken uitvoeren met dezelfde kleine, makkelijk te gebruiken programma’s. Bijna alle commerci¨ele Unix systemen zijn varianten van Unix I Version 7, verschenen in 1979. Vanaf dat moment splitste de ontwikkeling van Unix in verschillende takken, met als een van de belangrijkste System V (of Unix V) en BSD (ontwikkeld op de universiteit van Berkely, Californi¨e). Er is zelfs een versie van Unix gestart door Microsoft, onder de naam XENIX. Maar Microsoft is daar nu niet meer bij betrokken. Op dit moment zijn er vele commerci¨ele Unix systemen, onder andere IBM’s AIX, SunOS, Sun Solaris, HP-UX en SGI Irix. Ook zijn er een aantal vrij verkrijgbare BSD varianten op de markt. Een ander Unix-achtig besturingssysteem wat een belangrijke rol zal spelen in de ontwikkeling van Linux, werd ge¨ıntroduceerd door Andrew S. Tanenbaum in januari 1987. Omdat er zoveel verschillende versies van Unix op de markt kwamen, ontstond er de behoefte voor een standaard. Er zijn drie belangrijke pogingen tot standaardisering gedaan: System V Interface Definition (SVID), POSIX en X/Open. Zo’n standaard bevat de
13
regels voor elk van de honderden system calls van een Unix systeem. Jammer genoeg, ondanks al deze pogingen, zijn er nog steeds verschillen tussen de verschillende implementaties. Tussen 1980 en 1990 was er dan de opkomst van computers met Intel hardware en het Windows besturingssysteem. Deze nieuwe generatie hardware en dit nieuwe besturingssysteem nam de desktop markt over en een klein deel van de servermarkt, oorspronkelijk het terrein van Unix systemen. Tegenwoordig zijn de systemen gebaseerd op Intel en Intel compatible hardware even snel als de gespecialiseerde Unix systemen met speciale hardware. Toch zijn de meeste Unix versies nog steeds niet beschikbaar voor het Intel platform. We zullen zien dat de beschikbaarheid voor bijna elk platform en dus ook het Intel platform een belangrijke rol zal spelen in de populariteit van Linux.
4.2
Voor de fun
Het is 1991. Het jaar waarin Linus Torvalds zijn eerste IBM compatible PC kocht. Een 386, 33 Mhz, met 4 megabytes aan RAM geheugen. Linus studeerde aan de universiteit van Helsinki, waar hij kennis had kunnen maken met Unix. Hij werd verliefd. Bij de computer die hij kocht zat echter een versie van MS-DOS. Maar al lang voordat hij de computer had aangeschaft, had hij besloten dat hij een versie van Unix op zijn PC wilde runnen. Het werd Minix, de Unix clone voor 386 PC’s, ontworpen en geschreven door Andrew S. Tanenbaum. Linus had in de zomer van ’91 het boek “Operating Systems: Design and Implementation”, van Tanenbaum gelezen. Be¨ınvloed door dit boek besloot hij Minix te bestellen, kosten: $169. Wanneer Minix arriveerde (na een maand wachten) op een vrijdagavond, installeerde Linus het meteen die nacht. Hij besteedde al zijn tijd van dat weekend om zichzelf eigen te maken met het nieuwe systeem. Na een maand voelde het systeem als zijn eigen. Omdat Tanenbaum Minix als leersysteem wilde houden (het was onderdeel van zijn boek en colleges), zaten er een aantal haken en ogen aan het gebruik. Er waren een aantal onderdelen van Minix waar Linus niet tevreden mee was. Nummer een, de terminal emulator, een belangrijk programma voor hem om te verbinden met de Unix computer op de universiteit en om online te gaan. Hij besloot een nieuw project te beginnen: het schrijven van zijn eigen terminal emulator. Om zijn nieuw aangeschafte computer goed te leren kennen wilde hij dit project op hardware niveau doen en niet in Minix. Linus voegt hier aan toe in zijn autobiografie [5]: “. . . it was winter in Helsinki. I had a studly computer. The most important part was just to figure out what this machine did and have fun with it.” En zo ging Linus aan de slag en kwam erachter hoe de CPU werkte, hoe hij het toetsenbord uit kon lezen, hoe hij karakters op het scherm kon printen en hoe hij het van en naar het modem kon lezen en schrijven. Een van zijn eerste test programma’s was een programma dat bestond uit twee threads. De ene thread schreef A’s naar het scherm, de andere B’s. Met behulp van de timer interrupt liet hij dit programma AAAAA’s en BBBBB’s naar het scherm printen. Behoorlijk nutteloos, maar het toonde aan dat zijn task switching werkte. Het enige wat nu nog restte was de ene thread het toetsenbord laten uitlezen en de toetsaanslagen naar het modem te schrijven en de andere het modem te laten uitlezen en de karakters naar het scherm te laten printen. Linus had zijn eigen terminal emulatie programma geschreven.
14
Linus gebruikte regelmatig zijn terminal emulator om op de Unix computer van de universiteit in te loggen en zijn email te lezen en gebruik te maken van internet nieuwsgroepen. Er dook weer een feature op welke Linus nodig had: het downloaden en uploaden van bestanden. Om dit te implementeren had zijn terminal emulator een disk driver en natuurlijk ook een file system driver nodig om bestanden van en naar disk te lezen en schrijven. Hij besloot een disk driver en een driver voor het (goed gedocumenteerde) Minix file system te schrijven. Tijdens het programmeerwerk van deze drivers realiseerde Linus zich dat hij eigenlijk bezig was een besturingssystem te schrijven. Hij postte een bericht op de Minix nieuwsgroep of iemand hem aan de POSIX standaard kon helpen. Nu was het ‘officieel’; Linus was bezig een besturingssysteem te ontwikkelen. Een assistent docent aan de technische universiteit van Helsinki, Ari Lemke, bood Linus FTP ruimte wanneer hij wat publiekelijk wilde maken. Hij begon met het implementeren van system calls uit de handleiding van Sun OS en verscheidene boeken. Kleine test programmaatjes toonden aan of het geprogrammeerde werkte. Op een gegeven moment (na implementatie van vele system calls) verkoos Linus om een programma te proberen. Het eerste programma dat Linus wilde runnen was een shell, niet een die hij zelf maakte, maar de Bourne-Again Shell, ook wel bash genoemd. Hij koos als werktitel ‘Linux’ voor zijn nieuw geboren OS. Hij programmeerde dagen en nachten lang en Figuur 4.1: Linus Torvalds het lukte hem de shell werkende te krijgen. Daarna compileerde hij programma’s als cp (kopieren van bestanden) en ls (het opvragen van een directory listing) welke meteen werkten. Omdat er buiten cp en ls nog vele andere programma’s simpeler dan een shell bestaan, boekte Linus ineens veel zichtbare vooruitgang. Hij postte het bericht in het hoofdstuk “Het Begin van een Revolutie”, te lezen aan het begin van dit essay. Daarop ontving hij een handjevol reacties en besloot zijn creatie publiekelijk te distribueren. Linus koos de naam FREAX! voor zijn product, maar Ari Lemke vond dit verschrikkelijk en drong erop aan de werktitel Linux te behouden. Hij gaf de FTP ruimte van Linus de volgende naam: /pub/OS/Linux. Vooral erg technisch aangelegde gebruikers (en zelfs een speciaal groepje binnen die gebruikers) downloadden Linux 0.01 en probeerden het. Linus ontving verschillende veelal positieve reacties. Precies wat hij nodig had. Hij nam de grote stap om GCC (De GNU C Compiler, nu de GNU Compiler Collection) te porten naar zijn eigen OS. Twee versies zagen het licht: 0.02 en 0.03. Daarna begon Linus interesse te verliezen. Hij vertelt in zijn biografie: “I would have probably stopped by the end of 1991. I had done a lot of things I thought were interesting. Everything didn’t really work perfectly, but in a software kind of world I find that once you solve the fundamental problems of a project, it’s easy to lose interest.Trying to debug software is not very engaging. Then two things happened to me. Frist, I destroyed my Minix partition by mistake. Second, people kept sending me feedback.” Omdat hij zijn Minix partitie per ongeluk vernietigde 1 moest hij de volgende keuze maken: Minix opnieuw installeren of erkennen dat Linux goed genoeg was en hij Minix niet meer 1 Hij belde in op zijn harde schijf in plaats van modem, door /dev/hda1 te gebruiken in plaats van /dev/tty1.
15
nodig had. Deze grote stap leidde tot twee nieuwe releases 0.10 en 0.11. Op dat moment begonnen meerdere mensen Linux te gebruiken en stuurden Linus zelfs nieuwe features die zij zelf hadden geprogrammeerd. Tijdens de kerst van 1991 programmeerde Linus de eerste feature die door iemand anders was aangevraagd: het naar disk swappen van geheugen. De versie van Linux met deze feature was 0.12, uitgebracht in de eerste week van januari 1992. Het toevoegen van page-to-disk leidde ertoe dat Linux boven competitie uit begon te stijgen. Het aantal gebruikers steeg van 5 naar 10, naar 20, tot aan honderden mensen. Linus voegt hier aan toe in zijn biografie: “I didn’t know everybody using Linux, and that was fun.” Linus besloot gebruikers van Linux te vragen om een ansichtkaart in plaats van geld. Hij wilde graag weten waar alle gebruikers vandaan kwamen en kreeg honderden kaarten uit plaatsen verspreid over heel de wereld. Hij vond niet dat hij geld kon vragen voor Linux, omdat zijn werk voortborduurde op het werk van andere mensen wat weer was gebaseerd op werk van andere mensen enz. Ook vroeg hij mensen om feedback en het leek onlogisch om geld te vragen aan mensen die hem hielpen om het product te verbeteren. Linus geeft toe dat het misschien anders was geweest als hij niet was grootgebracht door een die-hard academische opa en die-hard communistische vader. Linux was niet te koop. Ook de controle over Linux wilde Linus zeker niet verliezen, wat betekende dat ook niemand anders Linux mocht verkopen. Dit stond ook duidelijk in de copyright vermelding van de eerste te downloaden versie. Linus stelde de volgende regels op, uit RELNOTES-0.01: This kernel is (C) 1991 Linus Torvalds, but all or part of it may be redistributed provided you do the following: • Full source must be available (and free), if not with the distribution then at least on asking for it. • Copyright notices must be intact. (In fact, if you distribute only parts of it you may have to add copyrights, as there aren’t (C)’s in all files.) Small partial excerpts may be copied without bothering with copyrights. • You may not distibute this for a fee, not even “handling” costs. Toch begonnen kwamen er steeds meer mensen met de vraag om Linux te verkopen op disk met de onkosten als prijs. Het probleem was dat dit het copyright schendde wat Linus had opgesteld. Omdat Linus meer en meer het idee kreeg dat niemand er zo maar met zijn Linux van door zou gaan, besloot hij om zijn copyright te herzien. Dagelijks stuurden vele hackers over heel de wereld hem aanpassingen en verbeteringen. Er werd collectief gewerkt aan het beste besturingssysteem ooit en niemand kon daar een stokje voor steken. Er was dus ook veel online discussie over Linux, dus mocht iemand er mee van door gaan, dan zouden er in ieder geval genoeg negatieve reacties komen. Opnieuw maakte Linus een beslissing gebaseerd op het feit dat hij voortbouwde op schouders van reuzen. Een van de belangrijkste programma’s nodig voor Linux, was de GCC compiler. Deze had de General Public License (GPL) als copyright, het zielenkind van Richard Stallman, beschreven in hoofdstuk 3. Linus dumpte zijn oude copyright en adopteerde de GPL. Maar niet alle aandacht was positief. Linus gebruikte Minix als uitgangspunt niet alleen de code van Minix, maar ook de nieuwsgroepen van Minix. Natuurlijk vond de maker van Minix, Tanenbaum, dit alles niet erg amusant. Een of andere nerd uit Finland 16
liet zijn Minix vervagen en meer en meer ontwikkelaars over heel de wereld hielpen hem. Tanenbaum was een van de vele informatici die pleitten voor een microkernel architectuur voor besturingssystemen. Amoeba, het systeem waar hij toen mee bezig was, was zo’n microkernel systeem. En Linux was de bedreiging. Hij bleef maar onvriendelijke pesterijen posten op de Minix nieuwsgroepen. Een van de discussies is opgenomen in bijlage B.
4.3
Van hobby tot eindproduct
Het vrijelijk beschikbaar maken van de code van Linux bleek een cruciaal punt in de verdere ontwikkeling. Zoals verteld, sloten vele mensen zich aan bij het team van ontwikkelaars van de nieuwe kernel. Dit gebeurde allemaal via het internet en speelde zich af in 1991 en 1992. Het internet was toen nog lang niet zo wijd verbreid als nu, de meeste medeontwikkelaars waren dus technisch aangelegde gebruikers. Het kostte uiteindelijk meer dan twee jaar voordat Linux als versie 1.0 het licht zag op 16 april 1994. Niet dat het nog niet bruikbaar was daarvoor, veel mensen gebruikten het al op universiteiten bijvoorbeeld. In 1993 kocht Linus een nieuwe PC, een 486 DX2 66, welke hij jaren zou blijven gebruiken. Hij beschrijft zijn leven rond die tijd als volgt: “I ate. I slept. Maybe I went to the university. I coded. I read a lot of email. I was kind of aware of friends getting laid more, but that was okay.” Vanaf versie 1.0 werd de ontwikkeling van de kernel gesplitst. Even versie nummers (1.0, 1.2, . . . ) geven stabiele kernels aan. Kernels in ontwikkeling worden aangegeven met oneven versienummers (2.1, 2.3, . . . ). Wanneer alle nieuwe features zijn ge¨ımplementeerd in een kernel in ontwikkeling, ondergaat deze een code freeze (dan worden er geen nieuwe features meer toegevoegd, alleen nog maar bugs opgelost) en uiteindelijk wordt dat dan de eerste versie van een nieuwe stabiele serie. Normaliter worden er alleen maar bugs opgelost in de stabiele serie, maar zo heel af en toe worden erg belangrijke features in de ontwikkel serie ook geport naar de stabiele serie. De kernel versie 1.2, uitgekomen op 6 maart 1995, bestond uit 250.000 regels code en bevatte code voor Intel, Digital en SUN Sparc processoren. Een belangrijke stap in de ontwikkeling van de kernel waren mede de drivers die meer en meer beschikbaar kwamen. Opnieuw waren het de vrijwillige ontwikkelaars verspreid over het internet, maar ook de openheid van bedrijven die de specificaties van hun hardware vrijgaven, die deze ontwikkelingen mogelijk maakten. Dit was de kernel die in het plaatje paste van Richard Stallman. Samen met de programma’s van GNU begon Linux een alternatief te worden voor niet alleen Unix, maar ook Windows. Niet alleen de GNU programma’s, maar vele andere programma’s werden geport naar Linux. Een grote stap was de grafische schil X, zie http://www.xfree86.org , welke Linux rijp maakte voor de desktop markt. Vele andere programma’s zagen het licht. Een voorbeeld van een succesvol open source applicatie is ‘The Gimp’ (GNU Image Manipulation Program), zie http://www.gimp.org . Twee desktop environments zijn ontstaan: GNOME, zie http://www.gnome.org , en KDE, zie http://www.kde.org . De kernel, GNU programma’s en de vele andere beschikbare applicaties werden gebundeld tot een zogenaamde Linux distributie. Een Linux distributie is simpelweg een manier om in niet al te veel tijd en zonder al te veel moeite een werkend GNU/Linux systeem te verkrijgen. Het was indertijd een heel 17
karwei om Linux op je systeem werkende te krijgen en de distributie was het antwoord hierop. De Linux distributie is tevens de manier waarop we GNU/Linux tegenwoordig nog steeds kennen. Alom bekende voorbeelden zijn Red Hat, zie http://www.redhat.com, SuSE, zie http://www.suse.de en Debian, http://www.debian.org .
4.4
Van alle markten thuis
Momenteel heeft Linux zijn plek in de informatica goed gevonden. Linux kan niet alleen gebruikt worden als server of desktop, maar we zien Linux ook meer en meer in embedded systemen. Linux is ‘scalable’; het is mogelijk om Linux te gebruiken voor een robuust server systeem, maar je kan de kernel ook zo strippen dat hij in een handheld PC gebruikt kan worden. Kortom, van alle markten thuis dus. Als server systeem werd Linux al snel gevonden. Het was stabiel en Apache, een van de beste webservers werd al snel geport naar Linux. De voorvader van Linux, Unix had een groot marktaandeel als server systeem. Vele programma’s die aan dit marktaandeel bijdroegen werkten ook met Linux als besturingssysteem. Omdat Linux het gratis alternatief is van Unix, werd en wordt nog steeds vaker Linux als alternatief voor een stabiel server systeem gekozen. Bedrijven als IBM en HP adverteren ook meer en meer voor het gebruikt van Linux als goedkoper alternatief. Als desktop vervanger is Linux nog grote verliezer. Het grootste deel van gebruikers van desktop PC’s werkt nog steeds met een versie van Windows. Het zijn de alternatievelingen, vaak technisch aangelegd, die kiezen voor Linux als desktop. De mogelijkheden zijn er in overvloed. Het is de eenvoudigheid van installatie van Windows en natuurlijk de monopoliepositie van Microsoft wat Linux belet van het vergroten van haar aandeel op de desktop markt. Verschillende handheld PC’s werken met een speciale versie van Linux helemaal aangepast aan de behoeftes van zo’n handheld. Ook MP3 spelers en andere audio apparaten werken vaak met de Linux kernel als besturingssysteem. Vele informatici geloven dat de makers van deze zogenaamde embedded devices meer en meer Linux zullen gaan gebruiken. Natuurlijk had Linus dat alles nooit voorzien toen hij de eerste hand legde aan zijn terminal emulator die uitgroeide tot Linux. Wat vind Linus van het succes van Linux? In zijn biografie verteld hij: “. . . some day, twenty years from now, somebody will come along, say that enough is enough, and start his own operating system called “Fredix” 2 . Without all the historical baggage. And that’s exactly as it should be. But what makes me inordinately proud is that even when “Fredix” comes along, things won’t be the same anymore. If nothing else, what Linux has down is to make people aware of a new way of doing things of how Open Source actually enables people to build upon the work done by others. Open Source has been around for a long time, but what Linux did was to move it into the general consciousness. So when Fredix comes along, it won’t have to start from scratch. And thus, the world have become a slightly better place.”
2 Or “Diannix” as the case may be. In another twenty years, hopefully computer science will have progressed past the current male-dominated scene it is now...
18
Hoofdstuk 5
In de Maatschappij 5.1
Vrije software, een noodzaak?
Het doel van Richard Stallman was ervoor te zorgen dat computergebruikers gebruik konden maken van hun machine zonder daar software met allerlei restricties voor te hoeven aanschaffen. Maar waarom zou men dat willen? Wat is er mis met niet-Free Software? Toen er in de jaren ’80 commerci¨ele bedrijven software verkochten met restricties, vastgelegd in licenties, was Richard Stallman’s eerste bezwaar dat hij in de toekomst alle programmeurs over de gehele wereld niet meer als collega’s zou kunnen zien. De licenties zouden hem als programmeur namelijk ook tegenhouden om kennis over programmeren te delen met programmeurs van andere commerci¨ele bedrijven. Het idee van niet-Free Software is volgens Richard Stallman asociaal, on-ethisch en eenvoudig verkeerd. Maar waarom? Een commercieel bedrijf verkoopt software waarin zij restricties stelt aan het gebruik. Wanneer er toch gebruikers zijn die zich niet houden aan deze licentie, spreekt het bedrijf direct over ”stopping piracy”, waarbij zij volgens eigen zeggen volledig in haar recht staat. Eigenlijk zegt het bedrijf hiermee iets heel anders: onze klanten zullen zich, wat wij ook besluiten, aan onze niet uitgesproken aannames moeten houden. Volgens Richard Stallman zijn er een aantal van deze niet uitgesproken aannames van deze commerci¨ele bedrijven. Allereerst vinden de bedrijven dat ze het natuurlijke recht hebben om de software te bezitten en daarmee de macht te hebben over alle gebruikers. In de Amerikaanse grondwet staat echter dat copyright niet een natuurlijk recht is, maar een door de overheid toegestane monopoly op het kopi¨eren en verkopen van een bepaald product. Een tweede niet uitgesproken aanname is dat de bedrijven beslissen wat de gebruikers wel en niet voor mogelijkheden hebben met hun computer; de bedrijven bepalen immers welke applicaties er geschreven worden en wat de mogelijkheden van deze applicaties zullen zijn. Een derde aanname is dat gebruikers nooit bruikbare software zouden hebben wanneer ze een bedrijf niet alle macht zouden geven. Wanneer we deze drie aannames nu eens verwerpen en opnieuw een besluit nemen waarbij we als uitgangspunt stellen dat de gebruikers op de eerste plaats komen dan is er slechts e´e´n conclusie mogelijk: computergebruikers moeten vrij zijn om programma’s te wijzigen en te delen, omdat het helpen van andere mensen de basis is van de maatschappij. Volgens ons blijkt uit deze argumentatie van Richard Stallman dat hij de betreffende bedrijven ziet als arrogante ondernemingen die slechts door middel van machtsmisbruik veel winst willen maken. In de jaren ’80 waren er waarschijnlijk maar weinig computergebruikers die deze visie met Richard deelden. Met de huidige monopoly positie van 19
Microsoft wordt deze visie 20 jaar later echter steeds realistischer. Wanneer er echter geen sprake is van een monopoly positie op een bepaald type programma gaat Richard’s argumentatie volgens ons in theorie niet helemaal op. Marktwerking zal ervoor zorgen dat alleen die software verkocht wordt die voldoet aan de eisen van de gebruikers. Ondernemingen zullen de functies toevoegen die de consument graag wil gebruiken. In de praktijk blijkt ook dit niet de waarheid te zijn. Behalve de voorwaarde van marktwerking moet er ook nog rekening gehouden worden met het uitwisselen van data tussen consumenten onderling. Hiervoor zijn open standaarden, voornamelijk gestandaardiseerde bestandsformaten waarvan een ieder de standaard kent en vrij mag gebruiken, nodig en moet het effect van marketing en verkooptechnieken verdwijnen. Daarnaast is het slechts voor sterk gespecialiseerde (op maat gemaakte) software mogelijk om precies aan de wensen van de consument te voldoen. Wanneer er software geschreven moet worden voor een grote groep consumenten waarbij aan alle mogelijke wensen voldaan zou worden ontstaan er enkele problemen. De software zou veel functies bevatten die slechts door een gering aantal consumenten gebruikt zou worden; de software wordt hierdoor zowel voor de gebruiker, als voor de programmeur onoverzichtelijk. Door de grote hoeveelheid mogelijkheden is de kans dat er fouten in de programmacode ontstaan vele malen groter. Ook zal de prijs van de applicatie erg hoog zijn. Een goede oplossing voor deze problemen is Free Software. Gebruikers kunnen zelf de code compileren, maar ook zelf de software aanpassen voor hun specifieke situatie. Gebruikers die zelf de benodigde kennis niet hebben kunnen dit uitbesteden aan een onderneming. Naast de hierboven argumenten van de Free Software Foundation is er nog een belangrijk ander argument waarom software vrij zou moeten zijn. De huidige samenleving is gericht op informatie-verwerking, welke grotendeels geautomatiseerd wordt met behulp van software. Hoe kunnen we er volledig zeker van zijn dat onze gegevens juist worden behandeld met software waarvan we de interne werking niet kunnen bekijken? Worden er belangrijke (persoonlijke) gegevens naar derden gestuurd, zonder dat wij daarvan op de hoogte zijn? Zijn onze gegevens goed beschermd? Verderop in dit hoofdstuk zullen we hier nog op terug komen.
5.2
GNU/Linux voor iedereen
GNU/Linux is h`et voorbeeld van een succesvol Free Software product. Maar hoe succesvol is GNU/Linux? Het systeem is immers ontworpen en geimplementeerd door duizenden programmeurs over de gehele wereld. Kan een besturingssysteem dat niet door een centraal en goed georganiseerde groep ervaren specialisten is ontworpen en geimplementeerd van eenzelfde kwaliteit zijn? De laatste 10 jaar, de periode waarin de Linux kernel werd ontwikkeld, hebben uitgewezen dat dit wel degelijk mogelijk is. Op dit moment gebruiken miljoenen mensen over de wereld zowel op server- als desktopsystemen GNU/Linux. Sinds een paar jaar wordt GNU/Linux steeds meer gebruikt op systemen waar voorheen Unix, Novell of Windows NT werd gebruikt. Reden hiervoor zijn de lage licentie- en onderhoudskosten van GNU/Linux. Ook de beschikbare software, performance en stabiliteit spelen een grote rol. Mensen gebruiken GNU/Linux om dagelijks hun e-mail te lezen en te beantwoorden, om te surfen over internet en om MP3 bestanden af te spelen. Bedrijven als Caldera, Suse, Mandrake en RedHat hebben een belangrijke bijdrage geleverd aan deze ontwikkeling. In het warenhuis vindt je tegenwoordig voor weinig geld 20
de verschillende distributies terug en de installatie en het gebruik is door de toepassing van Graphical User Interfaces (GUI’s) zelfs voor de onervaren computergebruikers mogelijk. We kunnen concluderen dat op dit moment, maar ook in de toekomst GNU/Linux beschikbaar is voor iedereen.
5.3
Het bedrijfsleven
Zoals we in de vorige paragraaf hebben kunnen zien heeft ook het bedrijfsleven steeds meer interesse in het gebruik van Free Software. GNU/Linux wordt door zijn modulaire opbouw en door het gebrek aan licenties die het gebruik beperken bijvoorbeeld veel gebruikt in embedded systemen, zie bijvoorbeeld de website http://www.linuxdevices. com. Grote bedrijven als IBM, zie http://www-1.ibm.com/linux , en Hewlet Packard, zie http://www.hp.com/wwsolutions/linux , investeren veel geld in de ontwikkeling van Linux op server-systemen. In het midden- en klein-bedrijf wordt Linux ook steeds meer gebruikt, zowel op server-systemen als op de desktop. In Nederland is een van de pioniers op dit gebied het bedrijf OpenOffice (http://www.openoffice.nl). Veel commerci¨ele ondernemingen verkopen alleen software in gecompileerde vorm. Daarnaast wordt het via licenties niet toegestaan om de software vrij te kopieren en te verspreiden. Op het eerste gezicht is er niets mis met deze wijze van het verkopen van software. De ondernemingen moeten immers hun gemaakte kosten terugverdienen. Wanneer toekomstige gebruikers de software niet hoeven te kopen, maar gratis van een gebruiker kunnen kopi¨eren, zal de onderneming de gemaakte kosten nooit terug kunnen verdienen. Linus legt in zijn biografie [5] uit hoe er winstgevende ondernemingen kunnen bestaan, terwijl ze slechts Free Software ontwikkelen. Belangrijk in zijn uitleg is dat het Open Source principe (Linus zelf maakt slecht onderscheid tussen Open Source software en Free Software) niet overal klakkeloos toegepast kan worden. Ondernemingen kunnen op verschillende manieren met door hun ontwikkelde Free Software toch winst maken. De belangrijkste manier is het geven van ondersteuning bij de installatie, configuratie en het onderhoud van de systemen. Ook kan de onderneming cursussen geven aan gebruikers van de Free Software. Tenslotte is er nog de mogelijkheid om extra functionaliteit tegen betaling te implementeren, uiteraard onder de vrije licentie. Belangrijk bij deze verschillende manieren is dat de onderneming alle expertise over de ontwikkelde Free Software in huis heeft. In de praktijk blijken al enkele ondernemingen hun software onder een Free Software licentie te verspreiden. Zo heeft SUN de broncode van haar StarOffice pakket vrijgegeven, waarna de OpenSource community het project OpenOffice is gestart. SUN heeft in de licentie echter wel opgenomen dat het bedrijf zelf de code die ontwikkeld wordt in OpenOffice door de OpenSource community gebruikt mag worden in het niet-Free Software pakket StarOffice.
5.4
De overheid, Free Software en open standaarden
De overheid is een speciale ”onderneming”; de overheid is een non-profit organisatie die de belangen van alle burgers moet behartigen. De overheid heeft zelf geen macht, deze wordt door de burgers aan de overheid gegeven. Overheden zullen informatie dus voor elke burger beschikbaar moeten stellen, maar ook voorzichtig moeten omgaan met
21
informatie. In de huidige samenleving is geautomatiseerde informatie-verwerking erg belangrijk. Allereerst zou de overheid open standaarden moeten gebruiken. Op die manier kan elke burger de informatie die de overheid beschikbaar stelt bekijken. Denk hierbij aan de HTML standaard op websites in plaats van Flash of javascript functies die niet in de standaard beschreven staan. Denk ook aan het gebruik van PDF bestanden in plaats van het gebruik van het gesloten Microsoft Word bestandsformaat. Daarnaast moet de overheid de burgers kunnen garanderen dat de informatie verwerking veilig en juist verloopt. Niet alleen bij de dagelijkse informatie verwerking, maar zeker ook tijdens verkiezingen is dit van cruciaal belang voor de besturing van het land. De oplossing van deze problemen laat zich al raden: zeker de overheid zou Free Software moeten gebruiken. Naast de informatie verwerking zelf moet de overheid ook de uitgaven van deze informatie verwerking kunnen verantwoorden. Daarbij moet niet enkel gekeken worden naar de aanschaf- en licentiekosten, maar naar de Total Cost of Ownership, waarbij ook o.a. omscholing van het personeel, installatie- en configuratie kosten en onderhoud meegenomen worden. Het is belangrijk dat de overheid Free Software ziet als een serieuze optie.
5.5
Het onderwijs
In Nederland heeft de overheid veel invloed op de ontwikkeling van ICT in het onderwijs. In 1999 was de minister van onderwijs, Loek Hermans, in gesprek met Microsoft voor een meerjarig contract voor ICT in het onderwijs. Op dat moment gingen er stemmen op dat het niet juist is om als overheid een contract af te sluiten met een bedrijf dat wellicht een monopolypositie in handen heeft. Behalve dat het hier om een bedrijf met een waarschijnlijke monopolypositie ging moet het onderwijs leerlingen ook een goede, onafhankelijke basis geven. Leerlingen moeten niet slechts bekend zijn met 1 specifieke leverancier, maar hun horizon verbreden. Daarnaast spelen in het onderwijs de kosten een grote rol. Door de Open Source Community in Nederland werden de politieke partijen gewezen op de mogelijkheid om het onderwijs gebruik te laten maken van Linux, het besturingssysteem dat goedkoop, snel en stabiel is, maar vooral onafhankelijk en vrij. Op dit moment wordt er ook hard gewerkt aan het ontwikkelen van software voor het onderwijs onder Linux. Op internet zijn zelfs Linux distributies beschikbaar die speciaal ontwikkeld zijn voor gebruik in het onderwijs. Ze bevatten veel kant-en-klare educatieve software. We moeten hierbij zeker twee websites noemen, allereerst http://www.seul. org/educ waar veel vrije educatieve software overzichtelijk is weergegeven, daarnaast http://www.nl.linux.org/school/ waar veel Nederlandstalige informatie te vinden is. Ook moeten we de Rosa Boekdrukker School (http://www.rosaboekdrukker.nl in Amsterdam-West noemen; deze basisschool is het voorbeeld hoe Free Software met succes gebruikt kan worden in het basisonderwijs. De school helpt actief mee aan de ontwikkeling van Free Software voor het basisonderwijs en hoopt binnen enkele jaren volledig overgestapt te zijn naar Free Software.
22
5.6
Monopolie
Over het bedrijf Microsoft, de rechtzaken, marketing, licentie-politiek etc. is al heel veel geschreven. We zullen in deze paragraaf niet op alle details in kunnen gaan. Via het internet en voornamelijk de Nederlandstalige nieuwsgroepen nl.comp.os.linux.* zijn veel nieuwsberichten en discussies te vinden. Eigenlijk willen we het niet over Microsoft hebben omdat Microsoft weinig te doen heeft met Free Software en open standaarden. Echter: Microsoft speelt een steeds grotere rol in de ontwikkeling van Free Software door de eigen licentie-politiek en de kosten van het Windows besturingssysteem. Microsoft is het bedrijf dat in de jaren dat de eerste IBM PC’s ontwikkeld werden opgericht is door Bill Gates. Sindsdien heeft het bedrijf een grote invloed op de ontwikkeling van hard- en software. De invloed is zelfs zo groot geworden dat er nu al enkele jaren in verschillende landen rechtzaken tegen de monopoly-positie van Microsoft lopen. Al sinds 1995, toen Microsoft het besturingssysteem Windows 95 introduceerde, gaan er stemmen op dat Microsoft oneerlijke concurrentie voert door samen met het besturingssysteem de WWW-browser “Internet Explorer” te installeren. Deze browser is voor de gewone thuisgebruiker namelijk niet te verwijderen zonder het besturingssysteem onbruikbaar te maken. Daarnaast heeft Microsoft zijn eigen toevoegingen ontwikkeld aan standaarden als het POP3 protocol (Hotmail), het SMB protocol (Windows netwerk), Javascript en HTML. Ook laat de stabiliteit van het besturingssysteem te wensen over. Dit wordt voornamelijk veroorzaakt doordat processen het besturingssysteem instabiel kunnen maken. Een ander punt van irritatie is dat wanneer er een nieuwe versie van Windows wordt geintroduceerd deze te zwaar voor de hardware is en er nieuwe hardware moet worden aangeschaft. Op dat moment is GNU/Linux nog niet zover ontwikkeld dat het een serieuze concurrent kan zijn voor het Windows 95 besturingssysteem. De installatie, configuratie en het gebruik zijn voor de beginnende thuisgebruiker te ingewikkeld; alhoewel dat voornamelijk veroorzaakt wordt doordat het ”anders” is; de meeste thuisgebruikers zijn overigens ook niet in staat om het Windows besturingssysteem te begrijpen. Op de server-markt heeft Microsoft met het Windows NT besturingssysteem als server-OS een groot marktaandeel in handen. GNU/Linux is een multi-user systeem en al vanaf de eerste ontwikkelingen geschikt voor gebruik als server. Hier wint GNU/Linux dan ook eerder een bescheiden marktaandeel. Tussen 1995 en 2000 groeit het marktaandeel van GNU/Linux explosief, zowel op de server- als op de desktop-markt. Er ontstaan grote bedrijven die winst maken door een eigen Linux distributie samen te stellen. Ook bedrijven als IBM en HP interesseren zich voor Linux en doen grote investeringen. Deze ontwikkeling wordt volgens ons positief beinvloed door Microsoft. Al sinds de eerste versies draait de marketing afdeling van Microft op volle toeren. Bij elke vernieuwde versie wordt een sneller en stabieler besturingssysteem aangekondigd, alhoewel achteraf blijkt dat de beloften nooit helemaal waargemaakt kunnen worden. Microsoft heeft ondertussen de Windows 9x en NT besturingssystemen samengevoegd in ´ee´n besturingssysteem Windows 2000. Dit besturingssysteem is stabiel, maar samen met deze nieuwe Windows versie verschijnt er een nieuw licentie-model waardoor de kosten voor bedrijven flink oplopen. Deze ontwikkelingen bij Microsoft hebben ertoe geleid dat steeds meer mensen op zoek gaan naar een alternatief voor het besturingssysteem en de software van Microsoft. Op de desktop markt zijn er dan slechts twee belangrijke concurrenten: Apple’s MacOS en Linux. Volgens ons zullen zowel MacOS als Linux verder in marktaandeel blijven groeien, mede doordat steeds meer mensen af willen van het Windows besturingssysteem en 23
steeds meer mensen bekend raken met alternatieven. Toch blijft de monopolypositie van Microsoft constant ter discussie. Hans Paaijmans, docent aan de Katholieke Universiteit Brabant (KUB), is een voorvechter van Free Software. Hij ziet in de monopolypositie van Microsoft een groot gevaar en heeft dit in het artikel ”Fiat Lux” (http://d80143.ktwaalre.nl/Paai/Artikelen/ ptitdoux ) op een ludieke manier beschreven door Microsoft te vergelijken met een potloden fabrikant. Een ander artikel (http://d80134.ktwaalre.nl/Paai/Artikelen/ consum.html) gaat over de consumentenbond, die de belangen van de consument zou moeten behartigen. Wanneer het echter om besturingssystemen gaat vergelijkt de consumentenbond alleen producten van Microsoft. Linux en Apple’s MacOS worden buiten de testen gehouden. De belangrijkste sectie van dit artikel, sectie 5, gaat over het gevaar van de monopoly positie van Microsoft.
24
Hoofdstuk 6
Conclusie Op het juiste moment het juiste product uitbrengen. In principe geldt deze regel altijd om een product tot een succes te brengen. Zo ook voor Linux en Open Source. Natuurlijk zijn het altijd vele toevalligheden die samen zorgen voor een ‘revolutie’. Een van de toevalligheden die volgens ons het meeste heeft bijgedragen aan het succes van Open Source, Vrije Software, GNU, Linux en alles wat ermee te maken heeft: het internet. Sterker nog, we zijn van mening dat zonder internet er nooit een Open Source beweging zoals we die nu kennen ontstaan was. Zonder internet geen hackers. Zonder internet niet zo’n wijde verspreiding van GNU software. Zonder internet geen verspreiding van Linux. Maar nog het meest belangrijke van alles: zonder internet geen community. De Open Source community is de drijvende kracht achter alle Open Source programma’s en dus ook Linux en de GNU programma’s. Zonder deze community waren deze programma’s nooit zo uitgebreid en nooit zo door ontwikkeld als ze nu zijn. Zonder het samenwerkingsverband waren er nooit de 3 miljoen regels code ontstaan die Linux 2.4 omvat. Zonder internet geen GNU en zonder internet ook geen pegu¨ın.
Gertjan Zwartjes & Martin Herrman 22 mei 2003
25
26
Bibliografie [1] Ruediger Berlich. Re: Distribution. http://www.linuxuser.co.uk/articles/issue9/, 2001. [2] Ruediger Berlich. Roots of a Revolution. http://www.linuxuser.co.uk/articles/issue8/, 2001. [3] Free Software Foundation. GNU General Public Licence. http://www.gnu.org/copyleft/gpl.html, 1991. [4] Open Source Initiative. Open Source Definition. http://opensource.org/docs/def print.php, 2003. [5] David Diamond i.s.m. Linus Torvalds. Just For Fun: The Story of an Accidental Revolutionary. HarperBusiness, 2001. [6] Glyn Moody. Rebel Code, The Inside Story of Linux and the Open Source Revolution. Perseus, 2001. [7] Debian Project. Debian Free Software Guidelines. http://www.debian.org/social contract#guidelines, 1997. [8] Eric Steven Raymond. The New Hacker’s Dictionary. MIT Press, 1996. [9] Eric Steven Raymond. A Brief History of Hackerdom. http://www.catb.org/∼esr/writings/hacker-history/, 1999. [10] Eric Steven Raymond. The Cathedral and the Bazaar. http://www.catb.org/∼esr/writings/cathedral-bazaar/, 1999. [11] Richard Stallman. The GNU Project. http://www.gnu.org/gnu/thegnuproject.html, 2001. [12] Richard Stallman. Why Free Software is better than Open Source. http://www.gnu.org/philosophy/free-software-for-freedom.html, 2001.
27
28
Bijlage A
General Public License GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
02111-1307
Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation’s software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author’s protection and ours, we want to make certain that everyone understands that there is no warranty for this free
29
USA
software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors’ reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone’s free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that whole or in part contains or is part thereof, to be licensed as parties under the terms of this
you distribute or publish, that in derived from the Program or any a whole at no charge to all third License.
c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a
30
notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as
31
distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the
32
original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the to attach them to the start of each source file convey the exclusion of warranty; and each file the "copyright" line and a pointer to where the
33
program. It is safest to most effectively should have at least full notice is found.
Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type ‘show w’. This is free software, and you are welcome to redistribute it under certain conditions; type ‘show c’ for details. The hypothetical commands ‘show w’ and ‘show c’ should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than ‘show w’ and ‘show c’; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program ‘Gnomovision’ (which makes passes at compilers) written by James Hacker. <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
34
Bijlage B
Minix vs. Linux From: [email protected] (Andy Tanenbaum) Newsgroups: comp.os.minix Subject: LINUX is obsolete Date: 29 Jan 92 12:12:50 GMT Organization: Fac. Wiskunde & Informatica, Vrije Universiteit, Amsterdam
I was in the U.S. for a couple of weeks, so I haven’t commented much on LINUX (not that I would have said much had I been around), but for what it is worth, I have a couple of comments now. As most of you know, for me MINIX is a hobby, something that I do in the evening when I get bored writing books and there are no major wars, revolutions, or senate hearings being televised live on CNN. My real job is a professor and researcher in the area of operating systems. As a result of my occupation, I think I know a bit about where operating are going in the next decade or so. Two aspects stand out: 1. MICROKERNEL VS MONOLITHIC SYSTEM Most older operating systems are monolithic, that is, the whole operating system is a single a.out file that runs in ’kernel mode.’ This binary contains the process management, memory management, file system and the rest. Examples of such systems are UNIX, MS-DOS, VMS, MVS, OS/360, MULTICS, and many more. The alternative is a microkernel-based system, in which most of the OS runs as separate processes, mostly outside the kernel. They communicate by message passing. The kernel’s job is to handle the message passing, interrupt handling, low-level process management, and possibly the I/O. Examples of this design are the RC4000, Amoeba, Chorus, Mach, and the not-yet-released Windows/NT. While I could go into a long story here about the relative merits of the two designs, suffice it to say that among the people who actually design operating systems, the debate is essentially over. Microkernels have won. The only real argument for monolithic systems was performance, and there is now enough evidence showing that microkernel systems can be just as fast as monolithic systems (e.g., Rick Rashid has published papers comparing Mach 3.0 to monolithic systems) that it is now all over but the shoutin‘. MINIX is a microkernel-based system. The file system and memory management are separate processes, running outside the kernel. The I/O drivers are also separate processes (in the kernel, but only because the brain-dead
35
nature of the Intel CPUs makes that difficult to do otherwise). LINUX is a monolithic style system. This is a giant step back into the 1970s. That is like taking an existing, working C program and rewriting it in BASIC. To me, writing a monolithic system in 1991 is a truly poor idea.
2. PORTABILITY Once upon a time there was the 4004 CPU. When it grew up it became an 8008. Then it underwent plastic surgery and became the 8080. It begat the 8086, which begat the 8088, which begat the 80286, which begat the 80386, which begat the 80486, and so on unto the N-th generation. In the meantime, RISC chips happened, and some of them are running at over 100 MIPS. Speeds of 200 MIPS and more are likely in the coming years. These things are not going to suddenly vanish. What is going to happen is that they will gradually take over from the 80x86 line. They will run old MS-DOS programs by interpreting the 80386 in software. (I even wrote my own IBM PC simulator in C, which you can get by FTP from ftp.cs.vu.nl = 192.31.231.42 in dir minix/simulator.) I think it is a gross error to design an OS for any specific architecture, since that is not going to be around all that long. MINIX was designed to be reasonably portable, and has been ported from the Intel line to the 680x0 (Atari, Amiga, Macintosh), SPARC, and NS32016. LINUX is tied fairly closely to the 80x86. Not the way to go. Don‘t get me wrong, I am not unhappy with LINUX. It will get all the people who want to turn MINIX in BSD UNIX off my back. But in all honesty, I would suggest that people who want a **MODERN** "free" OS look around for a microkernel-based, portable OS, like maybe GNU or something like that.
Andy Tanenbaum ([email protected])
P.S. Just as a random aside, Amoeba has a UNIX emulator (running in user space), but it is far from complete. If there are any people who would like to work on that, please let me know. To run Amoeba you need a few 386s, one of which needs 16M, and all of which need the WD Ethernet card.
--
From: [email protected] (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: Re: LINUX is obsolete Date: 29 Jan 92 23:14:26 GMT Organization: University of Helsinki Well, with a subject like this, I’m afraid I’ll have to reply. Apologies to minix-users who have heard enough about linux anyway. like to be able to just "ignore the bait", but ... Time for some serious flamefesting!
I’d
In article <[email protected]> [email protected] (Andy Tanenbaum) writes: > >I was in the U.S. for a couple of weeks, so I haven’t commented much on >LINUX (not that I would have said much had I been around), but for what >it is worth, I have a couple of comments now. > >As most of you know, for me MINIX is a hobby, something that I do in the >evening when I get bored writing books and there are no major wars,
36
>revolutions, or senate hearings being televised live on CNN. My real >job is a professor and researcher in the area of operating systems. You use this as an excuse for the limitations of minix? Sorry, but you loose: I’ve got more excuses than you have, and linux still beats the pants of minix in almost all areas. Not to mention the fact that most of the good code for PC minix seems to have been written by Bruce Evans. Re 1: you doing minix as a hobby - look and who gives linux out for free. Then freely available, and one of my biggest Linux has very much been a hobby (but a me: I get no money for it, and it’s not in the university. I’ve done it all on machine.
at who makes money off minix, talk about hobbies. Make minix gripes with it will disappear. serious one: the best type) for even part of any of my studies my own time, and on my own
Re 2: your job is being a professor and researcher: That’s one hell of a good excuse for some of the brain-damages of minix. I can only hope (and assume) that Amoeba doesn’t suck like minix does. >1. MICROKERNEL VS MONOLITHIC SYSTEM True, linux is monolithic, and I agree that microkernels are nicer. With a less argumentative subject, I’d probably have agreed with most of what you said. From a theoretical (and aesthetical) standpoint linux looses. If the GNU kernel had been ready last spring, I’d not have bothered to even start my project: the fact is that it wasn’t and still isn’t. Linux wins heavily on points of being available now. > MINIX is a microkernel-based system. [deleted, but not so that you > miss the point ] LINUX is a monolithic style system. If this was the only criterion for the "goodness" of a kernel, you’d be right. What you don’t mention is that minix doesn’t do the micro-kernel thing very well, and has problems with real multitasking (in the kernel). If I had made an OS that had problems with a multithreading filesystem, I wouldn’t be so fast to condemn others: in fact, I’d do my damndest to make others forget about the fiasco. [ yes, I know there are multithreading hacks for minix, but they are hacks, and bruce evans tells me there are lots of race conditions ] >2. PORTABILITY "Portability is for people who cannot write new programs" -me, right now (with tongue in cheek) The fact is that linux is more portable than minix. What? I hear you say. It’s true - but not in the sense that ast means: I made linux as conformant to standards as I knew how (without having any POSIX standard in front of me). Porting things to linux is generally /much/ easier than porting them to minix. I agree that portability is a good thing: but only where it actually has some meaning. There is no idea in trying to make an operating system overly portable: adhering to a portable API is good enough. The very /idea/ of an operating system is to use the hardware features, and hide them behind a layer of high-level calls. That is exactly what linux does: it just uses a bigger subset of the 386 features than other kernels seem to do. Of course this makes the kernel proper unportable, but it also makes for a /much/ simpler design. An acceptable trade-off, and one that made linux possible in the first place.
37
I also agree that linux takes the non-portability to an extreme: I got my 386 last January, and linux was partly a project to teach me about it. Many things should have been done more portably if it would have been a real project. I’m not making overly many excuses about it though: it was a design decision, and last april when I started the thing, I didn’t think anybody would actually want to use it. I’m happy to report I was wrong, and as my source is freely available, anybody is free to try to port it, even though it won’t be easy. Linus PS. I apologise for sometimes sounding too harsh: minix is nice enough if you have nothing else. Amoeba might be nice if you have 5-10 spare 386’s lying around, but I certainly don’t. I don’t usually get into flames, but I’m touchy when it comes to linux :)
38