Maakt linken met GPL code mijn code open source?

Een open source ontwikkelaar mailde me:

Ik wil voor mijn programma gebruik maken van de s-lang library. Nu zag ik dat deze onder de GPL valt, maar mijn programma is tot nu toe altijd onder de BSD licentie uitgebracht. Moet ik mijn programma nu GPL maken?

Inderdaad heeft de GNU General Public License (GPL) als eis dat je “afgeleide werken” alleen onder de GPL mag verspreiden. Dit mechanisme zorgt er voor dat mensen die voortbouwen op GPL code, hun bijdragen niet voor zichzelf mogen houden. Nare mensen zien dat als een “viraal effect“, ik zie het als een belangrijke voorwaarde voor open innovatie.

De combinatie van eigen code en GPL code kan dus alleen onder de GPL worden uitgebracht. De vraag wanneer iets nu een afgeleid werk is, laat ik even in het midden. De vraag is hier tenslotte of dat eigen programma op zichzelf ook onder de GPL moet worden geplaatst, of onder de huidige licentie kan blijven.

De GPL zegt daar het volgende over:

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.

Vrije vertaling: jouw code blijft jouw code, en als je daar een BSD licentie onder plakt, dan mag dat. Het is alleen de combinatie van jouw code en de s-lang library die onder GPL verspreid mag/moet worden. Knipt iemand s-lang weg, dan blijft jouw code over en die is onder BSD. Bouwt die iemand de code dan om naar bijvoorbeeld ncurses ipv s-lang, dan kan hij het resultaat onder zijn eigen gesloten licentie aanbieden als hij dat wil (want ncurses is MIT-licensed).

Kortom, laat de BSD license op je eigen werk staan en leg in de README uit dat je s-lang nodig hebt. Met eventueel een tekstje als “Since s-lang is GPL, when you distribute the combination of this software and s-lang, you must comply with the GNU GPLv2 for the combination.”

Arnoud

‘OpenBSD steelt code’, aldus Linux-ontwikkelaar (via Tweakers)

Vandaag op Tweakers.net:

Michael Buesch, ontwikkelaar van de Linux-driver voor de aansturing van draadloze netwerkchips van Broadcom, beschuldigt OpenBSD-ontwikkelaars van het stelen van programmacode. Hoewel beide besturingssystemen open source zijn, gebruiken ze verschillende licenties.

OpenBSD is een open source besturingssysteem dat wordt aangeboden onder de zeer liberale BSD licentie. Software onder deze licentie mag voor zo ongeveer alles worden gebruikt, zolang maar wordt vermeld wie de maker is. Linux daarentegen wordt aangeboden onder versie 2 van de GPL, en die legt meer restricties op. De belangrijkste eis uit de GPL is dat elke verspreiding van de software inclusief broncode moet gebeuren. Ook verdere verbeteringen aan de software mogen alleen inclusief broncode worden verspreid.

Michael Buesch is de auteur van een wireless LAN driver voor Broadcom chips. Hij ontdekte dat OpenBSD een driver had met exact dezelfde broncode. Hij stuurde dan ook een boze mail naar het OpenBSD team. Dat was aanleiding voor een stevige discussie; het OpenBSD team en helemaal hun leider Theo de Raadt staat niet bekend om hun softe, subtiele aanpak.

In het algemeen is het lastig om te bepalen of er sprake is van inbreuk op auteursrecht bij software. Alleen code met “het stempel van de maker”, eigen creatief werk dus, wordt beschermd door auteursrecht. Puur functionele code is niet beschermd.

Nu heeft een programmeur normaal veel ruimte voor creativiteit bij het schrijven van de code. Maar bij drivers is dat anders. Die moeten op een bepaalde manier werken om de hardware aan te kunnen sturen. Vaak ligt het communicatie-protocol met de hardware helemaal vast, en ook de manier waarop de gegevens doorgegeven moeten worden aan andere software. Het is dan lastig om te bepalen of een implementatie nu creatief is of puur functioneel. Kort gezegd, op hoe veel manieren kun je “als het apparaat aan moet, stuur dan code 0x3F” implementeren?

Dat wil alleen niet zeggen dat drivers dus niet beschermd zijn, of dat zomaar alle code van een driver mag worden overgenomen. In dit geval bleken er grote stukken code letterlijk gecopy&paste te zijn, inclusief variabelenamen, commentaar en dergelijke. En dat wijst er meestal op dat er meer is overgenomen dan puur het functionele aspect van het origineel.

Arnoud