De Discussiepagina’s van Computable hebben de afgelopen weken een platform geboden aan voor- en tegenstanders van de ‘open source’-beweging. Naar aanleiding van de ‘openingszet’ van Sito Dekker op 15 juni zijn er tientallen reacties op de redactie binnengekomen. Na zo’n vijf à zes brieven heeft de redactie Sito Dekker verzocht deze repliek te schrijven. Vandaar dat de later ter redactie ontvangen reacties niet in dit weerwoord konden worden verwerkt.
Om maar met de deur in huis te vallen. ‘Open source’ (http://www.opensource.org) stelt dat als programmeurs de bronnen van een programma kunnen lezen, verbeteren en herdistribueren; er sneller betere software ontstaat. Een simpele methodologie met een helder doel.
Met enige regelmaat hebben Microsoft en ‘open source’-ontwikkelaars het met elkaar aan de stok over de zakelijke grondslag van softwareontwikkeling en -distributie. In die zin bevat het verhaal ‘Eerlijk zullen we alles delen‘ van Craig Mundie, senior vice president van Microsoft, in Computable weinig nieuws. ‘Shared source’, Mundie’s alternatief voor ‘open source’, deelt de broncode met klanten en partners, maar verder gaat Microsoft niet. Niets nieuws onder de zon, maar de getergde reacties uit de ‘open source’ wereld zijn er niet minder om. Een kleine bloemlezing: Eric S. Raymond: "Het is bedrog, oplichterij, zwendel … Microsoft probeert gewoon mensen gratis voor zich te laten werken!"; Alan Cox: "In de visie van Microsoft draait ‘shared source’ nog steeds om het controleren en bezitten van code."; en Linus Torvalds: "Het gaat niet om zoiets kleinzieligs als intellectuele eigendomsrechten.". Lees ook het antwoord van Craig Mundie, GPL devalueert waarde van ideeën, op deze reacties. Al deze artikelen zijn vertaald door Peter Wesselink. Natuurlijk bleven de reacties van lezers niet uit: ‘Free software’ prima te combineren met andere business-modellen; ‘Open source’ en het communistisch gedachtegoed; ‘Kruis OSS met MS’, Kapitalistische jacht op Linux is open, Linux is ‘free’ software, Het nobele doel van ‘open source’, ‘De strijd gaat om geld versus vrijheid’, ‘Opkomst Open Source symptoom van volwassenheid’, ‘De beweging’ en de beroepseer, Bron van verwarring, Een miskend softwarebakker en Kritiek deert ‘open source’-criticaster niet. |
Zoals we straks zullen zien precies het tegengestelde van het componentenmodel (bezwaar 1 in mijn oorspronkelijke stukje), waardoor ook bezwaar 2 blijft staan (inefficiënt en weinig innovatief). Voor de rest kan ik er echter wel sympathie voor opbrengen, en wellicht is het een redelijke methode in de academische wereld en/of voor niet-commerciële software.
De ‘free software’-site (http://www.gnu.org) is behoorlijk schrikken. Het gaat om een aantal ‘vrijheden’, met name de vrijheid om software te verbeteren en te verspreiden aan de gemeenschap. Waarom deze vrijheid zo belangrijk is blijft onduidelijk. De vergelijking met vrijheid van meningsuiting wordt getrokken, wat natuurlijk van een volstrekt andere orde is. ‘Free software’ presenteert zich als een ideologie die wil overwinnen: er is een expliciete vijand, namelijk ‘proprietary’-software, die vernietigd moet worden. De GPL (general public license) is bewust opgezet om zichzelf zo breed mogelijk te verspreiden, inclusief tips hoe het commerciële software zo vervelend mogelijk gemaakt kan worden. Schendingen van de GPL kunnen gemeld worden via een klik-URL, zodat intimiderende acties ondernomen kunnen worden. Zelfs tegen oss zet men zich af, hoewel uiteindelijk precies dezelfde software-ontwikkelmethodiek wordt gehanteerd. Al met al komt ‘free software’ over als een inconsistente mengeling van anti-commercieel denken en ‘open source’. De rechtvaardiging is miserabel: software is niet te lokaliseren (gratis te kopiëren), d�s is het ook maar het beste dat software ‘vrij’ zou zijn. Een kokervisie die de kracht van het marktmechanisme totaal negeert.
Inkapseling
Goed, de stoom is afgeblazen, we gaan nu wat rustiger verder met de bezwaren tegen mijn eerste punt: oss gaat – reeds op definitieniveau – in tegen het principe van inkapseling. Het verborgen blijven van implementatie-kennis vormt de kern van het componentenmodel. Niet om de vrijheid van de gebruiker te beknotten, maar juist om hem een dienst te bewijzen. De component heeft een bepaald probleem voor hem opgelost zonder dat hij zich om de oplossingswijze hoeft te bekommeren. Des te minder interne details de gebruiker van een component hoeft te kennen, des te geslaagder de component is.
Alvorens hier wat verder op in te gaan, en om het IQ van lezer Brakenhoff niet al te zeer op de proef te stellen, wil ik eerst mijn uit de praktijk geboren voorbeeld uit het oorspronkelijke artikel wat verder uitwerken. Mijn kleine bedrijfje (niet Microsoft dus, nooit bij gewerkt ook, niet door gesponsord en zelfs geen prediker van Microsoft-oplossingen) stelt industriële pc’s samen voor een niet ter zake doende niche-markt. Bij een aantal standaardcomponenten (cve, moederbord, harde schijf, enzovoort) wordt een eigen specifieke hardwarecomponent en een eigen specifieke softwarecomponent gevoegd. Het besturingssysteem is een ingekochte component als alle andere, het heeft zelfs vrijwel de gemiddelde prijs van alle ingekochte componenten (wellicht geen toeval). Dat het besturingssysteem in software is geïmplementeerd is in feite oninteressant: in een chip was ook prima geweest. Vanuit professionele optiek interesseert de interne werking van de componenten me niet. Ik voel me absoluut niet in mijn vrijheid beknot dat bijvoorbeeld de harde schijf niet met mechanische tekeningen van de lees/schrijfkop, elektronica-schema’s en bronnen van ingebedde software wordt geleverd.
Dan het commentaar. Kees Bouman maakt het het bontst door te stellen dat volgens de GNU (~ is Not Unix)-regels ervoor gekozen kan worden broncode niet mee te leveren. Dit is eenvoudig te weerleggen: het is namelijk volledig in tegenspraak met de definitie van ‘vrije software’ op de GNU-website.
Dennis Leeuw interpreteert mijn eerste punt verkeerd, door te suggereren dat het mijn overtuiging zou zijn dat oss voort zou moeten bouwen op andermans componenten maar dat niet doet. Ik ontken niet dat er bij oss niet voortgebouwd wordt, het punt is juist dat dit voortbouwen op een inferieure wijze geschiedt, namelijk zonder gebruik te maken van het principe van inkapseling.
Ook Jeroen van Disseldorp begrijpt het componentenmodel niet echt, of weigert de consequenties ervan te aanvaarden door te stellen dat voor een goed eindresultaat kennis van de ‘andere kant’ van een interface nodig is. Hij verwart dan het ‘Wat’ met het ‘Hoe’. Kennis van het gedrag op de interfaces (het ‘Wat’) is inderdaad noodzakelijk, maar het afschermen van ‘Hoe’ dat gedaan wordt is juist de essentie van het componentenmodel.
Lezer Emile Heyns begrijpt het bijna: hij piekert er niet over om de database of het besturingssysteem aan te passen. Echter, als het ‘moet’ wil hij wel de vrijheid hebben. Ik vraag Emile: "Waarom zou dit wel moeten gelden voor de database en niet voor bijvoorbeeld de harddisk?" Voor gebruikers is de vrijheid overbodig: dit soort componenten is zodanig complex, dat het een aanzienlijke investering van tijd en kennis vergt van een gebruiker iets zinnigs te verbeteren, laat staan toe te voegen. Professioneel nooit te verantwoorden. Merk ook op dat het vermijden van perfectionisme een belangrijk kenmerk van professionalisme is. Voor een gebruiker is de oss-vrijheid op zijn hoogst ‘leuk’, maar macroscopisch gezien kleeft er een belangrijk nadeel aan. De markt wordt verstoord: het wordt minder interessant in nieuwe ontwikkelingen te investeren.
Inefficiëntie
De reacties op mijn tweede punt zijn divers, er is zelfs enige onverwachte bijval van lezer Brakenhoff die oss inderdaad nogal inefficiënt vindt. Dennis Leeuw en Kees Bouman missen de crux van mijn kritiek door ook onder andere internetprotocollen als oss-verdienste aan te merken (Boumans overschatting van oss is pathetisch door ook C, C++, of kennis delen als oss-innovaties te zien). We hebben het hier echter over modellen voor het ontwikkelen van software. Ontwikkeling van interface-standaards is van een geheel andere orde. De inhoud van een interface-beschrijving is per definitie open voor de partijen die er gebruik van maken. Het gezamenlijk ontwikkelen van interfaces in standaardisatiecomités en dergelijke is dan ook van alle tijden. Het is echter tevens een uiterst moeizaam proces, zelfs het comité Ietf is traag en levert niet meer dan een kwalitatief matig patchwork van in elkaar grijpende vragen om commentaar (rfc’s). Dit is geen kritiek op de Ietf, andere standaardisatie-instellingen leiden aan hetzelfde euvel. Gezamenlijk ontwikkelen is nu eenmaal lastig, maar in het geval van interfaces is er geen alternatief. De argumentatie kan dus omgedraaid worden: internetprotocollen zijn geen verdienste van oss, maar oss past het gedwongen, ongelukkige standaardisatiemodel toe op een domein waar veel betere methoden voorhanden zijn.
Dennis Leeuw vindt een stabiel besturingssysteem met een C compiler al een revolutie. Het is maar wat je revolutie noemt, twintig jaar geleden schreef ik al programma’s op zo’n soort systeem, een PDP-11 met vi, cc en make. Tegenwoordig wordt dit als woestijn-platform beschouwd (Don Box), dat het toch echt in alle opzichten aflegt tegen moderne visuele programmeer- en debug-omgevingen.
Emile geeft de enige consequente reden voor het gebrek aan efficiëntie van ‘free software’: efficiëntie is niet het eerste belang (merk op dat dit argument voor oss niet opgaat, oss heeft het waanbeeld dat het relatief wel efficiënt is). Het gaat Emile meer om plezier in het werk. Okay, prima, hoewel ik geen evidente relatie zie tussen ‘plezier’ en een bepaald software-ontwikkelmodel. Maar waarom het plezier van anderen vergallen? Heb plezier met elkaar als in een hobby, maar laat het vijanddenken achterwege (dit is niet tegen Emile gericht, maar tegen ‘free software’ als ideologie).
Communisme
Bij het derde punt komt de vergelijking met het communisme kennelijk hard aan, hoewel deze vergelijking meer als constatering dan als kritiek bedoeld was. Het ‘Duck Principle’ is van toepassing: If it looks like a duck, walks like a duck and quacks like a duck, it probably is a duck. Communisme streeft gemeenschappelijk eigendom van productiemiddelen na. Het uitbannen van eigendom is precies wat ‘free software’ binnen een beperkt deelgebied poogt te bereiken. Neem de bepaling in de GPL dat iedere modificatie/toevoeging aan een ‘vrij’ programma weer aan de gemeenschap ter beschikking moet worden gesteld. Ik zie Lenin glimmen van trots in zijn mausoleum.
Jeroen van Disseldorp geeft een link naar Linux Today, waarin op verwrongen wijze beargumenteerd wordt dat ‘free software’ toch eigenlijk kapitalistisch van aard is. De schrijver hiervan voelt zelf ook nattigheid, want hij eindigt de slotalinea met ‘There are many who will not be convinced by the reasoning above.’ Ik kan me inderdaad niet voorstellen dat überhaupt iemand door dit artikel overtuigd wordt.
Emile Heyns legt mij in de mond dat vrijwilligerswerk in welke vorm dan ook een economisch delict zou zijn. Hij geeft als (tegen-) voorbeeld dat thuis een feestje organiseren geen schade doet aan de lokale horeca. Akkoord, maar hij moet maar eens proberen met enige regelmaat een voor iedereen toegankelijk kraampje met vrij drinken te bemannen en kijken wat de lokale horeca daar van vindt. Met andere woorden, het gaat ook om schaalgrootte en of er een op zich goed functionerende markt aanwezig is.
Dubieuze motivatie
Er is ook nog wat onbedoelde bijval. Kees Bouman vindt dat ik in de doctrine van het kapitalistische gedachtegoed leef, kennelijk als verwijt. Ik neem aan dat hij zichzelf daar geen slachtoffer van vindt, m.a.w. dat ‘free software’ niet kapitalistisch van aard is.
Aan mijn laatste twee kritiekpunten wil ik niet al te veel woorden vuil maken. Dat het motief achter oss dubieus is, en dat oss-ers vaak onprofessioneel reageren, neem ik terug. De ongenuanceerde geluiden lijken vooral uit de ‘free software’ hoek te komen. Zoals gezegd kan ik bij ‘free software’ überhaupt geen duidelijk motief ontdekken, zodat mijn Provo-achtige beeld van deze club blijft staan. Dit wordt nog verder versterkt door de reacties op punt vijf, waarin sommigen (gelukkig niet allemaal) de Bill-bashing stukjes proberen te vergoelijken door ze te vergelijken met opmerkingen van Ballmer. Het gevoel voor verhoudingen is kennelijk totaal zoek.
Dan nog een aantal los-vaste opmerkingen. Dat ik de site http://www.codeproject.com fantastisch vind is geen knieval voor oss of ‘free software’. De site biedt ‘open source’ op een geheel andere wijze dan oss en ‘free software’. Het is peer-to-peer hulp met tutorials, kleinschalige code-voorbeelden en dergelijke, waar programmeurs zoals ondergetekende werkelijk iets aan hebben bij het bouwen van commerciële applicaties. De GPL is hier vloeken in de kerk. De pretenties van betere software zoals bij oss zijn prettig afwezig.
Jeroen vindt nog dat ik de ‘oss/free software’-beweging en individuele aanhangers verwar. Ik hoop dat het duidelijk is dat ik me tegen de ‘beweging’ afzet en niet tegen individuen. Ik ken een aantal heel aardige sympathisanten van deze beweging. Dat mensen zich in een groepsproces irrationeel kunnen gaan gedragen, is helaas een bekend psychologisch gegeven.
Geen componentenmodel
Samenvattend heeft deze discussie me gesterkt in de stelling dat met betrekking tot professionalisering van de informatietechnologie ‘Open Source Software’ een stap in de verkeerde richting is, omdat het precies het tegenovergestelde van het componentenmodel nastreeft. De ‘free software’-beweging voegt daar nog een agressief anti-commercieel element aan toe. De informatietechnologie gooit haar eigen glazen dubbel in: een slechte methodologie en het verzieken van een levensvatbare markt. Het zou beter zijn voor de hele it-sector als ‘Free Software’ zich zou terugtrekken op de plek waar het thuis hoort: gewoon als leuke hobby.
Sito Dekker Hilversum