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

6 reacties

  1. Let wel, dat wat je in het midden laat is wel essentieel. De FSF kan wel stellen dat als je programma tegen een GPL library linkt dat de combinatie dan een afgeleid werk van de library is maar daar is van alles op af te dingen. De FSF bepaalt de definitie van afgeleid werk niet, dat doet de wet/de rechter. Als zodanig is het distribueren van de combinatie waarbij bijvoorbeeld alleen de sources voor S-Lang zouden worden geleverd iets voor een rechter en in bepaalde gevallen zou ik het wel aandurven.

  2. Mee eens, Rene. De discussie hier was echter nog een stapje verder. Stel, de combinatie van programma P en library S is zodanig dat dat een derivative work is. Mag ik dan P op zichzelf verspreiden, dus zonder S er bij? Ik zou zeggen van wel, immers het is pas de combinatie van die twee die het derivative work oplevert. P op zich is dan niet ineens ook derivative. Maar ook dit is, zoals eigenlijk alles rond open source licensing, voor discussie vatbaar.

  3. Trouwens nog zo iets, waarom sommige open source / free software ontwikkelaars er voor kiezen om 2 licenties aan hun werk te plakken is mij al helemaal onduidelijk.

    Het levert heel veel verwarring op. Zoals: this software is covered by x and y. Dan denk je, dat kan toch helemaal niet ? Zeker niet als y ook nog eens GPL is (x is dan iets van BSD of MIT).

    Maar dan blijkt dat je mag kiezen. Hoe dan ook een apart verhaal.

Geef een reactie

Handige HTML: <a href=""> voor hyperlinks, <blockquote> om te citeren, <UL>/<OL> voor lijsten, en <em> en <strong> voor italics en vet.