Via-via kwam ik op het Alientrap forum waar een interessante discussie liep over het mixen van GPL code met anders gelicentieerde code. Meer specifiek: kun je plaatjes die onder Creative Commons zijn, eigenlijk wel laten verschijnen in een programma dat onder GPL uitgebracht is?
Hoofdregel van de GPL open source licentie is dat “verveelvoudigingen in gewijzigde vorm” of ook wel “afgeleide werken” alleen mogen worden verspreid onder diezelfde GPL voorwaarden. Hoe je precies een “afgeleid werk” herkent, is al jaren een lastige vraag voor juristen. Er zijn allerlei theorieën, variërend van “alleen gewijzigde bestanden” tot “alles dat je meelinkt” tot zelfs “alles waarbij de intentie is dat het nauw samenwerkt”. Ik besprak dit een tijd geleden in de context van plugins (Joomla of phpBB).
Het bijzondere in deze discussie is dat het nu eens niet gaat over combinaties van software met software, maar over combinaties van software met data zoals plaatjes of muziek. Kun je bijvoorbeeld een icoon laten verschijnen in de interface van een GPL programma dat zelf onder Creative Commons uitgebracht is? Of een helptekst uit Wikipedia halen?
De discussie werd kernachtig samengevat als:
Whether it is allowed to mix licenses in such a way has not been decided in any court yet, so both views may be possible. However, think about this: if it WERE allowed to mix GPL code with non-GPL data, why wouldn’t it be allowed to link GPL code against non-GPL libraries (and vice versa)? The library is just as dynamically loaded as the content. Yet still it is the common legal opinion that GPL code can NOT be linked against non-GPL libraries. The engine loads the data just like it loads its libraries (DLLs). Why should these be considered different, legally?
Het verschil zit hem niet zozeer in het laden, maar in het gebruik van de materialen nadat deze geladen zijn. Code wordt uitgevoerd, en mixt daar met de code die al geladen is. Een plaatje wordt geladen en doorgegeven, dat blijft in principe geïsoleerd van de code die aan het draaien is. Het lijkt me moeilijk om te betogen dat het plaatje op welk moment dan ook onderdeel van de applicatie is.
De enige mogelijkheid die ik zie is dat alles dat in de context van die applicatie op het scherm verschijnt, daar onderdeel van is. Een icoontje verschijnt als onderdeel van de knoppenbalk, en een kaart voor een spel verschijnt in het gebied waar je met je avatar rondloopt. Maar dan is de tekst die ik nu in dit editvenster typ, ook een afgeleid werk van mijn blogsoftware WordPress. En de webpagina’s die in mijn Firefox verschijnen zijn afgeleide werken van die browser. Nee, dat wil er bij mij niet in.
Het zou misschien anders worden als de plaatjes echt als onderdeel van de applicatie worden geïntegreerd, bv. zoals Windows-applicaties het icoontje voor op de desktop met zich meedragen. Dat icoon zit echt fysiek in de applicatie zelf, en zou dus als onderdeel daarvan kunnen worden gezien. Maar een icoon dat los in een map op de harde schijf staat? Nee.
Arnoud
Een eerste reactie: Yet still it is the common legal opinion that GPL code can NOT be linked against non-GPL libraries. Als je de moeite neemt om de GPL door te lezen: GPL code kan met niet-GPL libraries gelinkt worden, maar de resulterende binary moet onder de GPL verspreid worden. Als de licentie van de niet-GPL code dat niet toestaat mag je dus niet verspreiden. Er is een uitzondering in de GPL voor systeembibliotheken.
Een tweede observatie is dat de GPL de gebruiker van de software niet wil beperken[*] de licentie betreft reproductie en verspreiding. Als een distributeur de applicatie als (GPL) “codepack” en (CC) “mediapack” verspreidt wordt een juridisch argument dat de GPL ook van toepassing is op de “media” heel lastig. Ik verwacht ook niet dat GPL auteursrechthebbenden een rechtszaak aan zullen spannen tegen iemand die een “bijna vrije” applicatie verspreidt. Die afweging kan anders uitpakken wanneer iemand GPL code probeert te commercialiseren met een gesloten “mediapack”.
[*] behalve in geval van een octrooiconflict (GPLv3)
Het lijkt mij wel belangrijk om hier onderscheid te maken tussen de data die een gebruiker in een applicatie laadt tijdens het normale gebruik van de applicatie en de interface elementen die standaard onderdeel zijn van de applicatie.
Ik zou verwachten dat een applicatie als geheel als zou worden gezien. De code is slechts 1 aspect van een applicatie, er komt bij een goed ontworpen applicatie ook een interactie of usability designer aan te pas die de bepaald hoe en waar grafische elementen nodig zijn. De look en feel van verschillende interface elementen en de achterliggende code moet op elkaar afgestemd zijn, het zijn allemaal verschillende aspecten van 1 creatief geheel. Daarom zou ik verwachten dat de licenties van de code en data die gebruikt worden om dit werk (de applicatie) te maken met elkaar compatible moeten zijn.
Het is natuurlijk een andere situatie als deze grafische elementen onderdeel zijn van een theme, en een theme makkelijk vervangen kan worden door een ander theme. Maar dit is niet zondermeer op elke applicatie van toepassing.
Dit is net iets te kort door de bocht. Een GPL spelletje kan gebruik maken van CC plaatjes als textures voor de diverse objecten die door het scherm vliegen. Of zelfs als eenvoudige sprites die heen en weer en op en neer gaan. Het kan zelfs zijn dat een CC plaatje een onderdeel wordt van een nieuw plaatje doordat de programmeur er nog een kleine tekst over het plaatje zet. Of eenvoudiger: een CC plaatje wordt als icon gebruikt in een programma en een snapshot van het scherm inclusief plaatje wordt op een website gep[laatst ter promotie. Die screenshot is dan al meteen een afgeleid werk waarop de CC licentie dus van toepassing is. En de applicatie valt weer onder de GPL. En als het plaatje in b.v. een rapport wordt gebruikt en zelfs op een afdruk van de printer voorkomt dan kan het zijn dat ik een plaatje afdruk met een applicatie volgens de GPL licentie maar waarbij de afdruk zelf dus onder de CC licentie valt.
Het icoontje in Windows is meegecompileerd met een van de executables en de andere applicaties laden het plaatje uit deze executable. Maar het opstartscherm van oudere Windows versies is altijd een losse bitmap geweest die je als gebruiker kon aanpassen, mits je het truukje wist. De standaard achtergronden van Windows zijn ook losse bestanden die worden meegeleverd en ook hier is niet precies duidelijk wat ik er verder mee mag doen. Ik mag ze als desktop gebruiken, maar zou ik ze ook voor andere doeleinden mogen gebruiken? Wat nog interessanter is, plaatjes zitten misschien wel in executables meegebakken maar vaak zijn ze eenvoudig er weer uit te halen. De executable is voor plaatjes meestal niets meer dan een archief, zeker als het gaat om de standaard Windows icoontjes.
En wat betreft de Windows Noise Song? Dit zijn de standaard geluiden van Windows, bewerkt tot een muziekje. Maar had de auteur ervan wel de rechten om dit werkje samen te stellen? Valt het misschien onder “Fair Use”? Of is dit comische deuntje eigenlijk een grove copyright schending?
Het moge duidelijk zijn dat de situatie betreffende licenties voorlopig nog erg onduidelijk blijft.
Als je de GPL v2 doorleest, dan kom je erachter dat het woord linken niet in de tekst voorkomt. En ik zie niet in hoe een icoon een derived work van source code kan zijn.
Dus, als je (zoals Arnoud correct zegt), de iconen gewoon in een losse directory laat staan, dan mag er geen probleem zijn. Als je echter de iconen opneemt in de binary… Tsja.
Dit is incorrect. GPL mag wel gemixt worden met licenties die minder restrictief zijn dan GPL zelf, ??n programma kan zowel code onder een BSD licentie als onder een GPL licentie bevatten omdat de BSD licentie eigenlijk alles toestaat. Een CC licentie kan dus best GPL compatibel zijn als die maar minder restrictief is dan de GPL een CC-NC licentie kan dus een probleem zijn omdat GPL wel commercieel gebruik toestaat maar ik zie niet in hoe een CC-BY in conflict met GPL kan zijn.