Op donderdag 12 juli 2001 19:33 schreef Lecram het volgende:
Dus met andere woorden:
grote bedrijven als Oracle en IBM die Linux als OS gebruiken lopen een risico met hun applicaties?
Nee. Tenzij ze de license verkeerd interpreteren.
De GPL houdt (onder andere) in dat als een deel van de source code van een GPLd programma in een ander programma wordt gebruikt, dat dan dat 2e programma ook geGPLd moet worden. Bijvoorbeeld, jij maakt een browser, en je leent source code uit bijvoorbeeld konqueror (een GPL prog) en gebruikt dat in je eigen browser. Dat mag, maar nu moet je jou browser ook onder de GPL uitbrengen. Dit is het virale van de GPL waar die ene gast van MS het over had.
Maar de oplossing (als je je programma niet onder de GPL wilt uitbrengen) is eenvoudig: gebruik geen source code van GPLd programma's in jouw programma.
Verder is er geen reden dat een GPLd programma en een commercieel programma niet naast elkaar kunnen draaien, dus het is zeker mogelijk om commerciele applicaties voor GNU/Linux te schrijven.
Het kan voor bedrijven overigens handig zijn als alles open source is (jaja, ik weet het verschil tussen open source en de GPL, maar dat doet er hier niet toe), want zo kunnen bedrijven iets aanpassen/verbeteren zoals zij wensen. En er zijn best bedrijven die er geen problemen mee hebben om dan ook iets terug te doen voor de open source community.
IBM bijvoorbeeld ontwikkeld JFS, een veelbelovend filesystem in samenwerking met de GNU/Linux hackers (en nee, hackers zijn geen mensen die in computers inbreken).
Ook zijn er best bedrijven die gewoon opensource Linux drivers leveren (HP en Matrox zijn voorbeelden).
Als je commerciele software maakt ligt het iets anders, dan is de opensource-heid van GNU/Linux minder nuttig, want je mag er immers niks (of iig maar vrij weinig) van in je commerciele programma gebruiken. Maar die commerciele applicaties mogen prima draaien in GNU/Linux.
Er is overigens wel nog iets dat de moeite van het opmerken waard is: linken.
Als een programma bepaalde functies aanbiedt, kun je een programma compilen om hier gebruik van te maken. Dit heet linken. Als je programma bijvoorbeeld van libc gebruik wil maken, moet je je programma tegen libc linken (dat is in 99.9999% van de gevallen zo). Als je programma gtk wil gebruiken, moet je het tegen gde gtk libs linken.
Maar de GPL staat het niet toe dat een niet-GPLd programma tegen een GPLd programma wordt gelinked. Met andere woorden: als je een commercieel programma maakt, mag dit programma geen gebruik maken van GPLd libraries.
Het zou natuurlijk niet bemoedigend zijn als makers van commerciele programma's hun programma's niet tegen libc of gtk of qt of de X libs enz mochten linken, dus om die reden zijn de meeste libraries niet gelicensed onder de GPL, maar onder de LGPL.
De LGPL (Lesser GPL, soms ook foutief Library GPL genoemd) is hetzelfde als de GPL, maar laat het linken van niet-GPLd programma's tegen zichzelf
wel toe. Dus je mag een commercieel programma gewoon tegen libc (libc is LGPL) linken. En ook tegen gtk. En ook tegen Qt.
Voorbeeldje was de kritiek op nvidia die de drivers alleen in binaire vorm uitbracht.
Mijn kritiek op de closedsourceheid van de nvidia drivers is dat het voor nvidia geen nut heeft om ze closed te houden, maar dat ze zo wel moeilijker te integreren zijn in Linux. Matrox leverde bijvoorbeeld gewoon open source drivers. De XFree86 programmeurs hebben deze drivers vervolgens in X ingebouwd, zodat XFree86 4.1.0 automatisch volledige support voor de g450 heeft. De nvidia drivers daarentegen schijnen af en toe knap lastig te installeren te zijn. Verder kan iedereen die dat wil iets aan de open source verbeteren, dus dat zou een betere performance tot gevolg kunnen hebben (hoewel de nvidia drivers niet slecht zijn op dit gebied [sic]). Maar er is qua license ook iets niet lekker:
De scheidslijn is af en toe echter vaag: er woedt al een hele tijd een discussie of binary-only modules voor in je kernel nu eigenlijk mogen volgens de GPL of niet
Het punt is, alle applicaties en ook drivers (drivers zijn geen applicaties) moeten tegen de kernel gelinkt zijn om te kunnen werken.
Maar de kernel is niet LGPL, maar GPL.
marcelm@something marcelm$ head -11 /usr/src/linux/COPYING | tail
NOTE! This copyright does *not* cover user programs that use kernel
services by normal system calls - this is merely considered normal use
of the kernel, and does *not* fall under the heading of "derived work".
Also note that the GPL below is copyrighted by the Free Software
Foundation, but the instance of code that it refers to (the Linux
kernel) is copyrighted by me and others who actually wrote it.
Also note that the only valid version of the GPL as far as the kernel
is concerned is _this_ license (ie v2), unless explicitly otherwise
stated.
Zoals je ziet, is de kernel GPL, maar laat specifiek toe dat applicaties ertegen gelinkt mogen worden. Geen probleem hier.
Maar drivers zijn dus geen applicaties (er staat 'user programs'. Drivers zijn zelden userspace, bijna altijd kernelspace).
Dus dit is inderdaad een vraag die dan bij je opkomt: Mogen die nvidia drivers van de GPL of niet?
Ik heb niet zo'n problemen met die drivers, hoewel ik opensource prefereer. Maar dat beantwoordt de vraag niet.
De GPL is trouwens te vinden op [url="ttp://www.gnu.org/copyleft/gpl.html"]ttp://www.gnu.org/copyleft/gpl.html[/url].
Als je serieus dit soort dingen wilt weten, moet je hem eens lezen.