Blog

GitHub-code in een commercieel product: licenties en wat je moet controleren

Markdown

Permissieve MIT-, Apache- en BSD-licenties, copyleft GPL/AGPL, het ontbreken van een LICENSE-bestand en het controleren van de herkomst van code die door AI is toegevoegd.

Lees het volledige artikel

Je bouwt een product en vindt op GitHub iets dat al klaar is: een bibliotheek, een sjabloon of een heel project dat precies doet wat je nodig hebt. Claude stelt voor om het aan je project toe te voegen. En dan aarzel je: de code lijkt openbaar beschikbaar, maar mag je die eigenlijk wel gebruiken, laat staan een product verkopen waarin die is opgenomen? Kan de auteur later verhaal op je komen halen?

Ik bespreek het stap voor stap: waarom open code op GitHub op zichzelf geen toestemming betekent, met welke licenties je code mag gebruiken en een product mag verkopen, welke copyleftvoorwaarden overeenkomstige broncode voor een gedekt werk kunnen vereisen en hoe je een licentie in een minuut controleert voordat je de code gebruikt. Geen “dat hangt van de situatie af”.

Praktische informatie over werken met Ailoot staat in de documentatie.

Let op

Dit materiaal is bedoeld ter informatie; ik ben geen advocaat. Hieronder beschrijf ik de voorwaarden van populaire licenties en regels, met links naar primaire bronnen. Controleer je specifieke situatie echter aan de hand van de licentietekst en, als het product groot en commercieel is, met een advocaat. Je neemt de beslissing zelf.

Klopt het dat je code gratis mag gebruiken als die op GitHub staat?

Belangrijkste punt

Nee. Dat code te bekijken is, betekent niet dat je die in je eigen werk mag gebruiken. Standaard is alle code auteursrechtelijk beschermd en mag je die niet gebruiken, tenzij de auteur afzonderlijk toestemming heeft gegeven. Publicatie op GitHub geeft anderen op zichzelf alleen toestemming om de repository te bekijken en er binnen GitHub een kopie van te maken. Het recht om die code in je product op te nemen, komt voort uit de licentie die de auteur aan de repository heeft gekoppeld. GitHub verleent dat recht zelf niet.

De grootste valkuil is hier het woord ‘open’. Je kunt de broncode zien, dus het lijkt alsof je die mag gebruiken omdat hij niet verborgen is. Die redenering klopt niet. ‘Open om te lezen’ en ‘gelicentieerd voor gebruik’ zijn twee verschillende dingen.

Standaard is elk creatief werk, waaronder code, vanaf het moment van ontstaan auteursrechtelijk beschermd. Totdat de auteur uitdrukkelijk toestemming geeft, mag je het niet gebruiken. Zo beschrijft GitHub het op zijn eigen pagina met informatie over licenties.

Wanneer je een creatief werk maakt (en code is ook een creatief werk), is het standaard beschermd door exclusief auteursrecht. Tenzij je een licentie toevoegt die anders bepaalt, mag niemand anders je werk kopiëren, verspreiden of wijzigen zonder het risico te lopen op een claim of een rechtszaak.

— choosealicense.com (GitHub-referentieproject), https://choosealicense.com/no-permission/

De tweede laag is GitHub zelf. Mensen denken dat ze, omdat ze door code te publiceren akkoord zijn gegaan met de regels van GitHub, ook code van anderen daar mogen gebruiken. De regels zeggen precies het tegenovergestelde. Door een repository openbaar te maken, staat de auteur anderen alleen toe die te bekijken en te forken — dat wil zeggen, er binnen GitHub zelf een kopie van te maken. Dat geeft geen toestemming om de code in je eigen werk te gebruiken.

Door een repository openbaar te maken, verleen je andere gebruikers een niet-exclusieve, wereldwijde licentie om je materiaal via de dienst te gebruiken, weer te geven en te reproduceren (door te forken), binnen de functies van GitHub. Je kunt aanvullende rechten verlenen door een licentie toe te voegen.

— GitHub Servicevoorwaarden, sectie D, https://docs.github.com/en/site-policy/github-terms/github-terms-of-service

De belangrijkste woorden staan in de laatste zin: ‘binnen de functies van GitHub’ en ‘aanvullende rechten komen voort uit een licentie’. Een fork blijft binnen GitHub. Zodra je de code in je eigen product wilt gebruiken, laat staan het product wilt verkopen, heb je een aparte licentie van de auteur nodig. Geen licentie, geen recht — ook al staat de code daar voor iedereen zichtbaar.

Wat bepaalt of je code van iemand anders mag gebruiken?

Belangrijkste punt

Dat is het licentiebestand in de repository, meestal LICENSE of LICENSE.md genoemd. Het is de toestemming van de auteur, waarin staat wat je wel en niet met de code mag doen. De licentie beantwoordt drie vragen: mag je de code in een commercieel product gebruiken, mag je die wijzigen en mag je je eigen broncode gesloten houden? Verschillende licenties beantwoorden die vragen verschillend. Controleer daarom eerst dit bestand en open pas daarna de code zelf.

Alles draait om één bestand. Een goed onderhouden repository bevat een licentiebestand — meestal LICENSE, soms LICENSE.md, of een vermelding rechtstreeks in de README. Dit is de toestemming van de auteur, waarin staat onder welke voorwaarden je de code mag gebruiken. GitHub toont de naam van de licentie meestal in de zijbalk van de repositorypagina, voordat je het bestand zelf opent.

Om niet te verdwalen in juridisch taalgebruik, is het handig om de licentie te lezen aan de hand van drie vragen over jouw situatie:

  1. Mag je deze code gebruiken in een commercieel product waarvoor mensen betalen?
  2. Mag je de code aanpassen aan je behoeften?
  3. Moet je daarna de broncode van je product openbaar maken, of mag je die gesloten houden?

Bijna alle verschillen tussen licenties komen neer op verschillende antwoorden op de derde vraag. Op de eerste twee antwoorden populaire open licenties meestal met ‘ja’: gebruik de code, wijzig die, verkoop het product. Mensen lopen vast op de vraag of de licentie vereist dat je je eigen code openbaar maakt. Hierna bespreken we de belangrijkste soorten aan de hand van deze drie vragen.

Met welke licenties mag je code gebruiken en een product verkopen?

Belangrijkste punt

Het handigst voor een commercieel product zijn permissieve licenties: MIT, Apache 2.0 en BSD. Ze staan bijna alles toe: de code gebruiken, wijzigen, het product verkopen en je eigen broncode gesloten houden. Er is één verplichting: de licentietekst en de naamsvermelding behouden. Apache 2.0 beschermt ook tegen patentclaims en vereist dat je gewijzigde bestanden markeert. Als de code van iemand anders een van deze licenties heeft, kun je die veilig in een commercieel product gebruiken.

We beginnen met goed nieuws. Voor iemand die een product bouwt om het te verkopen, is de beste keuze een groep licenties die permissieve licenties wordt genoemd. Er zijn er verschillende, maar drie komen het meest voor: MIT, Apache 2.0 en BSD. Alle drie beantwoorden de eerste twee vragen met ‘ja’ en staan toe dat je je eigen broncode gesloten houdt.

De meest voorkomende en eenvoudigste is MIT. De tekst past in één alinea.

Hierbij wordt kosteloos toestemming verleend aan iedereen die een kopie van deze software verkrijgt om de software onbeperkt te gebruiken, waaronder de rechten om kopieën te gebruiken, te maken, te wijzigen, samen te voegen, te publiceren, te verspreiden, in sublicentie te geven en te verkopen, mits de bovenstaande auteursrechtvermelding en deze toestemmingsvermelding in alle kopieën worden opgenomen.

— MIT-licentie, opensource.org, https://opensource.org/license/mit

Eenvoudiger gezegd: MIT staat je toe bijna alles met de code te doen, waaronder het product verkopen en je eigen broncode gesloten houden. De enige verplichting is om de licentietekst en de regel met de naamsvermelding op te nemen. Zo zijn Babel, .NET en Rails bijvoorbeeld uitgebracht onder MIT, dus je hebt vrijwel zeker al code onder deze licentie gebruikt.

Apache 2.0 werkt op vergelijkbare wijze, maar voegt twee belangrijke punten toe. Ten eerste expliciete bescherming tegen patentclaims: de auteurs van de code beloven je niet aan te klagen vanwege patenten op deze code. Ten tweede zijn er enkele aanvullende formele vereisten voor het gebruik.

Je mag kopieën van het werk of afgeleide werken in elk medium reproduceren en verspreiden, met of zonder wijzigingen, mits je ontvangers een kopie van deze licentie geeft, gewijzigde bestanden markeert, auteursrecht- en patentvermeldingen behoudt en een leesbare kopie van het NOTICE-bestand toevoegt, als dat er is.

— Apache-licentie 2.0, sectie 4, https://www.apache.org/licenses/LICENSE-2.0

BSD (in de versies met 2 en 3 clausules) is in wezen vergelijkbaar met MIT: gebruik de code, wijzig die, verkoop het product en behoud de auteursrechtvermelding. Ik heb ze alle drie in een tabel gezet, zodat je het verschil in één oogopslag ziet.

LicentieProduct verkopenBroncode gesloten houdenWat je moet doenPatentbescherming
MITjajaauteursrechtvermelding en licentietekst behoudengeen clausule
Apache 2.0jajaauteursrechtvermelding, NOTICE-bestand, wijzigingen markerenja
BSD (2 en 3 clausules)jajaauteursrechtvermelding behoudennee

Zo kun je dit op je eigen situatie toepassen: zie je MIT, Apache 2.0 of BSD bij code van iemand anders, dan kun je gerust zijn: je mag die in een commercieel product gebruiken, wijzigen en je eigen broncode gesloten houden. Je moet alleen voorkomen dat je het licentiebestand en de naamsvermelding verwijdert uit het deel dat je hebt overgenomen.

Hoe gelden broncodeverplichtingen van GPL en AGPL?

Belangrijkste punt

GPL en AGPL staan commercieel gebruik toe. GPL-broncodeverplichtingen ontstaan wanneer je een gedekt werk overdraagt; gewoon servergebruik zonder een kopie over te dragen is niet die trigger. AGPLv3 voegt een broncodeaanbod toe voor gebruikers die op afstand met een gewijzigde versie werken. Bepaal welk gecombineerd werk is gedekt: aparte onafhankelijke componenten horen daar niet automatisch allemaal bij.

Copyleft houdt een gedekt werk en afgeleiden onder dezelfde licentie wanneer de relevante voorwaarden gelden. Bij GPLv3 vereist verspreiding van bron- of objectcodekopieën van een gedekt of gecombineerd afgeleid werk naleving van de licentie en verplichtingen voor overeenkomstige broncode. Dat geldt niet automatisch voor elk onafhankelijk programma in hetzelfde product of op dezelfde server.

Neem het webdienstvoorbeeld. Een GPL-bibliotheek op je eigen server hosten zonder gebruikers kopieën te geven vereist op zichzelf niet publicatie van de hele dienst. Een gedekte gecombineerde applicatie aan klanten verspreiden kan GPL-plichten activeren; controleer integratie en licentie voordat je bepaalt welke broncode moet worden meegeleverd. Een browserclient die gebruikers ontvangen is een aparte verspreidingsvraag.

AGPLv3 voegt een netwerkvoorwaarde toe: wijzig je het programma en gebruiken mensen die versie op afstand, dan moet het hun duidelijk de overeenkomstige broncode aanbieden. Dat is preciezer dan stellen dat elk gehost AGPL-onderdeel alle onafhankelijke delen van een dienst openbaar maakt.

Onderzoek voor een gesloten product het gedekte werk, hoe componenten combineren, of kopieën worden verspreid en of AGPL-netwerkinteractie geldt. Kies een passende permissieve vervanger of verkrijg aparte toestemming als je niet aan verplichtingen kunt voldoen. Commercieel gebruik zelf is toegestaan; het gaat om naleving van de echte licentie en integratie.

Wat moet je doen als de repository helemaal geen licentiebestand heeft?

Belangrijkste punt

Zonder licentiebestand mag je de code niet gebruiken. Dat betekent niet ‘het is gratis’: integendeel, zonder licentie blijft de code volledig beschermd door het auteursrecht van de auteur en heb je geen recht om die te gebruiken, kopiëren of wijzigen. Toestemming om de code binnen GitHub te bekijken en te forken helpt hier niet — ze geeft je niet het recht om de code in je product op te nemen. Als je de code echt nodig hebt, is de enige nette weg om de auteur te schrijven en toestemming te vragen, of te wachten tot die een licentie toevoegt.

Een veelgemaakte fout is aannemen dat er geen beperkingen zijn als er geen licentie is en dat je de code dus vrij mag gebruiken. Het tegenovergestelde is waar. Geen licentie betekent geen toestemming; standaard is er dus geen toestemming. Code zonder licentie blijft volledig beschermd door het auteursrecht van de auteur en je mag die niet aanraken.

De regel waarmee we begonnen, geldt opnieuw: standaard is code auteursrechtelijk beschermd en zonder uitdrukkelijke toestemming mag je die niet kopiëren, wijzigen of verspreiden. De mogelijkheid om de code binnen GitHub te bekijken en te forken doorbreekt die barrière niet — ze geeft je niet het recht om de code in je eigen product te gebruiken.

Dit kun je in de praktijk doen als de code geen licentie heeft maar je die echt nodig hebt:

  1. Schrijf de auteur. Vraag rechtstreeks in de discussiesectie van de repository of per e-mail of je de code mag gebruiken en onder welke voorwaarden. Soms is de auteur gewoon vergeten een licentie toe te voegen en doet die dat alsnog als je erom vraagt.
  2. Zoek een vervanging. Voor bijna elke taak zijn er een tweede, derde en tiende vergelijkbare repository — daartussen vind je er een met een passende MIT- of Apache-licentie.
  3. Gebruik de code niet. Zonder toestemming en zonder vervanging is de code niet van jou en mag je die niet opnemen in een product dat je wilt verkopen. De verleiding om te denken ‘wie komt daar nou achter?’ loopt slecht af zodra het product geld begint op te leveren en aandacht trekt.

Wat als Claude zelf code van iemand anders aan het project heeft toegevoegd?

Belangrijkste punt

Dit is een apart geval en het is belangrijk dit niet te verwarren met het rechtstreeks kopiëren van een repository. Wanneer je zelf code uit een specifieke repository overneemt, moet je de licentie naleven. Wanneer Claude of een andere AI code genereert als antwoord op je verzoek, produceert die meestal eigen tekst, samengesteld voor de taak, in plaats van een kopie van het bestand van iemand anders; de vraag verschuift dan naar de rechten op de gegenereerde code. Maar als de AI duidelijk een herkenbaar deel van gelicentieerde code van iemand anders heeft gereproduceerd, gelden de licentievoorwaarden nog steeds. In beide gevallen is het verstandig de bron te controleren.

Hier is nog een laag die makkelijk met de eerste wordt verward. Het is één ding om naar een repository te gaan en er een bestand uit te kopiëren: dan ben je rechtstreeks verplicht je aan alles hierboven over de licentie te houden. Het is iets anders wanneer Claude code voor je schrijft als antwoord op een verzoek.

In gewone gevallen produceert AI eigen tekst, samengesteld voor jouw taak, in plaats van een kopie van het bestand van iemand anders. De vraag verschuift dan naar een ander onderwerp: van wie is de gegenereerde code en mag je die verkopen? Dat is een groot onderwerp op zich, dat ik heb behandeld in een artikel over wie eigenaar is van code die door AI is geschreven.

Er is wel een uitzondering om in gedachten te houden. Soms produceert AI een herkenbaar deel van iemands code bijna woord voor woord — een complete functie uit een bekende bibliotheek. In dat geval geldt de licentie van de bibliotheek nog steeds, ongeacht wie de toetsen fysiek heeft ingedrukt. Grote kant-en-klare codeblokken die Claude in hun geheel heeft toegevoegd, moet je daarom controleren alsof je ze zelf had gekopieerd.

Een licentie controleren voordat je code gebruikt: stappen om te volgen

Belangrijkste punt

De werkwijze is: open de repositorypagina en controleer de licentienaam in de zijbalk, open het LICENSE-bestand zelf, bepaal het type — permissief (MIT, Apache, BSD) of copyleft (GPL, AGPL) — vergelijk het met jouw situatie en beslis of je de code gebruikt of een vervanging zoekt. Gebruik de code niet als er helemaal geen licentie is. De hele controle kost een paar minuten en moet plaatsvinden voordat de code in je project terechtkomt, niet erna.

Laten we alles samenvatten in een korte checklist om code van derden te controleren voordat je die aan je project toevoegt. Werk de stappen van boven naar beneden af.

  1. Zoek de licentienaam op de repositorypagina

    Open de repository op GitHub. De licentienaam is meestal zichtbaar in de rechterkolom of onder de lijst met bestanden — bijvoorbeeld ‘MIT License’, ‘Apache-2.0’ of ‘GPL-3.0’. Als daar niets staat en er geen licentiebestand is, is dat al een waarschuwingssignaal; kom er in de laatste stap op terug.

  2. Open het licentiebestand zelf

    Zoek LICENSE, LICENSE.md of COPYING in de bestandenlijst en open het. Controleer of de naam overeenkomt met wat in de zijbalk staat en of de licentie geldt voor de code die je gebruikt, en niet alleen voor een afzonderlijk deel van de repository.

  3. Bepaal het type: permissief of copyleft

    MIT, Apache 2.0 en BSD zijn permissief; je mag de code gebruiken in een gesloten commercieel product. GPL en AGPL zijn copyleft; controleer gedekt werk, verspreiding en eventuele AGPL-netwerkvoorwaarden voordat je broncodeverplichtingen bepaalt. Alleen de naam stelt niet vast welke onafhankelijke onderdelen zijn gedekt.

  4. Vergelijk de licentie met jouw situatie

    Beantwoord drie vragen: verkoop je het product, wijzig je de code en wil je de broncode gesloten houden? MIT, Apache en BSD zijn geschikt voor een gesloten product dat je verkoopt. Bepaal bij GPL en AGPL voor welk gedekt of gecombineerd werk overeenkomstige broncode nodig is en wanneer die plicht ontstaat; beoordeel of je eraan kunt voldoen.

  5. Geen licentie betekent: niet gebruiken

    Als er geen licentiebestand is en de README niets over toestemming vermeldt, mag je de code niet gebruiken. Schrijf de auteur en vraag toestemming, of zoek een gelijkwaardig alternatief met een passende licentie. ‘Het is openbaar beschikbaar’ betekent niet dat je toestemming hebt.

Deze controle lijkt omslachtig, totdat je product groeit, geld begint op te leveren en iemand voor het eerst vraagt naar de code van derden die erin zit. Twee minuten aan het begin kosten minder dan een geschil later afhandelen. Ik bespreek afzonderlijk wat je daarna met je product kunt doen, zodat het na de lancering niet stilvalt: Ik heb met AI een product gebouwd; wat nu.

Veelgestelde vragen

Mag je een product verkopen waarin code van iemand anders van GitHub zit?

Ja, als de code een permissieve licentie heeft — MIT, Apache 2.0 of BSD. Daarmee mag je code in een commercieel product gebruiken, het product verkopen en je eigen broncode gesloten houden. Je hoeft alleen de licentietekst en de naamsvermelding te behouden. GPL en AGPL staan ook commercieel gebruik toe, maar broncodeplichten hangen af van het gedekte werk en verspreiding of een toepasselijke AGPL-netwerktrigger. Zonder licentiebestand mag je de code helemaal niet gebruiken.

Wat betekent het als een GitHub-repository geen licentie heeft?

Dat je de code niet mag gebruiken. Geen licentie betekent standaard geen toestemming; het betekent niet ‘gratis’. De code blijft volledig beschermd door het auteursrecht van de auteur. Dat je de repository binnen GitHub kunt bekijken en forken, geeft je niet het recht de code in je product te gebruiken. Heb je de code nodig, schrijf dan de auteur en vraag toestemming, of zoek een gelijkwaardig alternatief met een open licentie.

Wat is voor mijn product het verschil tussen MIT en GPL?

Met MIT mag je de code gebruiken en wijzigen, het product verkopen en je eigen broncode gesloten houden — je hoeft alleen de licentietekst te behouden. GPL staat ook commercieel gebruik toe, maar overdracht van een gedekt gecombineerd of afgeleid werk vereist naleving van de plichten voor overeenkomstige broncode en dezelfde licentie. Alleen hosten zonder een kopie over te dragen is anders en aparte onafhankelijke onderdelen zijn niet automatisch gedekt.

Moet ik iets doen als ik code onder de MIT-licentie gebruik?

Ja, één kleine zaak: behoud de MIT-licentietekst en de regel met de naamsvermelding van de code die je in je project hebt gebruikt. Meestal is dat hetzelfde LICENSE-bestand dat bij het origineel hoort. MIT vereist verder niets — je mag de code wijzigen, het product verkopen en je broncode gesloten houden.

Wat als Claude zelf code van iemand anders heeft toegevoegd in plaats van ik?

Controleer nog steeds de bron. AI maakt meestal eigen tekst voor je taak; dan verschuift de vraag naar de rechten op de gegenereerde code — dat is een apart onderwerp. Maar als AI een herkenbaar stuk code van iemand anders uit een bekende bibliotheek bijna woord voor woord heeft gereproduceerd, geldt de licentie van die bibliotheek nog steeds. Controleer grote kant-en-klare blokken die in hun geheel zijn toegevoegd, net zoals je je eigen kopieer-en-plakwerk zou controleren.

Ailoot openen.

Meer details

Vragen en antwoorden

Verplicht een gehoste GPL-bibliotheek mij mijn hele webdienst te publiceren?

Alleen hosten zonder kopieën over te dragen is geen GPL-verspreidingstrigger. Verspreid je een gedekte gecombineerde of afgeleide applicatie, dan kunnen broncodeplichten voor dat werk gelden; onafhankelijke onderdelen zijn niet automatisch gedekt.

Welke extra voorwaarde voegt AGPLv3 toe voor een webdienst?

Een gewijzigd AGPL-programma met interactie op afstand moet die gebruikers de overeenkomstige broncode aanbieden. Controleer gedekt programma en integratie in plaats van aan te nemen dat geen broncode nodig is of elke onafhankelijke dienst open moet.

Alle artikelen