Een lezer vroeg me:
Overal zie je opeens AI code generators verschijnen, die op basis van door gebruikers gegeven input of een omschrijving code genereren. Deze generators zijn getraind met allerlei code die op internet is te vinden, waarop weer allerlei verschillende licenties van toepassing zijn. Maar geldt op de uitvoer dan niet gewoon de opensourcelicentie van die bronwerken, zodat je resultaat (bij GPL) dan toch ook open source moet worden?Het simpele geval is wanneer deze codegenerator simpelweg een lap tekst oplevert die uit een specifieke bron afkomstig is. Dergelijk letterlijk reproduceren (“regurgitation” in het jargon) gebeurt bij gewone genAI niet zo vaak, maar bij softwaregeneratoren wel omdat de context daar specifieker is en de vrije ruimte dus navenant minder.
De enige vraag is dan of dat overgenomen stuk code auteursrechtelijk beschermd is. In gevallen die ik zie, gaan bijvoorbeeld ook de comments mee en worden namen van variabelen niet gewijzigd. Dat is eigenlijk al genoeg. Bij niet-triviale codestructuren is ook wel sprake van auteursrechtelijk relevante inbreng. Bij een technisch bepaald stukje code (zoals een aanroep van een API met standaardstappen er voor en na) wordt dit twijfelachtig.
Dat de code door een AI-generator is aangedragen, is dan niet relevant. Het zit in je werk, en onder het auteursrecht ben je er dan aansprakelijk voor jegens de rechthebbende. (Bij de grote betaalde generatoren krijg je contractueel een vrijwaring of indemnification, dat is een garantie dat de leverancier je schadeloos stelt bij zo’n claim. Maar het betekent niet dat je vrij blijft van claims.)
Het is een hardnekkig misverstand dat je door het verwerken van opensourcecode in je werk je automatisch vast zit aan de licentie. Een licentie is een contractueel aanbod, en dat kun je aanvaarden maar dat hoeft niet. Echter, wijs je het af dan erken je dat je inbreuk gepleegd hebt. En dat kan leiden tot schadeclaims, plus een bevel je werk van de markt te halen (op straffe van een dwangsom). Dus het is vaak handig om het licentieaanbod te accepteren. Maar als jij liever je producten terugroept en de code vervangt, is dat juridisch aanvaardbaar.
Het lastige geval is wanneer de generator weliswaar geen lappen tekst oplevert, maar wel getraind is op al die open source code. Het is juridisch nog een open vraag of je auteursrecht schendt door een AI-model te trainen op beschermde bronwerken. Dat is namelijk wat anders dan dat de uitvoer beschermde tekst bevat.
De meningen zijn sterk verdeeld. Het ene kamp zegt “nietes, want AI-training is alleen patronen zoeken, data mining” en het andere kamp zegt “welles, want je AI was niets waard zonder het beschermde werk en dus behoort dit inbreuk te zijn”. Er lopen nu zo’n dertig rechtszaken wereldwijd waarin dit met alle mogelijke argumenten bevochten wordt. Op dit punt zou ik me gesterkt voelen door de vrijwaring van de leverancier.
Arnoud

Als een mens leert van stukken open source code, die ter inspiratie of als voorbeeld gebruikt, maar niet letterlijk overneemt, dan is er toch geen sprake van inbreuk?
Bij het “gebruik ter lering of inspiratie”, wanneer de gelezen code niet in de door jou geproduceerde code te herkennen is, is er (auteursrechtelijk) niets aan de hand. Wanneer je echter code als voorbeeld gebruikt en de oorspronkelijke code is te herkennen in jouw code dan zal dat waarschijnlijk auteursrechtinbreuk zijn. (Tenzij het code is die je eigenlijk niet op een andere manier kunt schrijven.)
Nee. Inspiratie en voorbeelden resulteren in creativiteit. Dat ontbreekt in de regel bij letterlijk overnemen.
Een beetje auteur leert van en krijgt inspiratie uit andere werken. Benoemt andere auteurs zelfs als grote voorbeelden. Dat maakt nog geen inbreuk.
Letterlijk overnemen van brokken code mogelijk wel.
Dit is dus waarom ik stel dat in beginsel wat een LLM uitspuugt géén inbreuk is. Het is een patroon herkend/afgeleid uit de brondata, dit is hoe dit soort teksten loopt. Ik maak eigenlijk nooit mee dat ik uit een LLM tekst krijg die ik letterlijk ergens terug kan halen, tenzij ik er specifieke brondata in stop en instrueer daar dicht bij te blijven.
Bij software vrees ik dat dit risico groter is. Als je eenmaal een oplossingsrichting hebt, dan heb je daarna snel steeds minder vrijheidsgraden. Een quicksort gáát nou eenmaal op die manier, en als je iets start met een for-lus dan ga je niet halverwege alsnog een switch/case er van maken. En dan is de kans groter dat je één bron volgt, net zoals mensen gewoon Stackoverflow copypastten.
Ik weet niet hoeveel onderzoek er naar de software-output van LLM’s gedaan is, maar hoeveel kans er op auteursrechtinbreuk is, is afhankelijk van het aantal gebruikte bronnen op het specifieke topic. Ik verwacht dat de code voor quicksort een mix van verschillende bronnen zal zijn, maar dat je wanneer je gaat vragen naar “leftist trees” de kans groter is dat je code krijgt die minder bronnen heeft.
(BTW, ik heb gezien dat LLM gegenereerde code aardig wat bugs kan bevatten. De eerste onderzoeken laten zien dat het gebruik door programmeurs van een LLM voor code generatie over het algemeen tijd kost.)
Dit sluit aan bij mijn ervaring.
Ik heb ChatGPT code zien reproduceren van StackExchange op prompts (zonder actieve internet search functionaliteit. Maar toen ik verder keek was dit een heel populaire post die je ook op Git veelvuldig kon terugvinden. Dus veel mensen die de code overnemen en dus overtrained.
Als je internet search aanzet dan kan ChatGPT zoekresultaten in het antwoord gebruiken, dus dan is je risico op kopieren nog groter.
Maar zodra ik meer dan triviale code vraag ben ik langer bezig met debuggen dan wanneer ik het zelf zou hebben geschreven…
Omdat editten niet meer werkt:
Waar ChatGPT wel heel erg goed in is, is code vertalen naar een andere programmeertaal. Ik heb al een paar keer BSD licensed code omgezet van Fortran en Matlab naar Python (en zelfs naar C, maar je moet dan wel goed het vrijgevben van je geheugen checken). Sneller dan ik het met de hand zou kunnen en nagenoeg foutloos!
Wil je als bedrijf dat risico lopen? Hoe controleer je je programmeurs? Nu goed dat was vroeger ook al zo met het “knippen en plakken”.
Het aantal rechtszaken over auteursrechtinbreuk op broncode tussen bedrijven onderling en/of met Open Source ontwikkelaars is klein. Buiten rechte worden bedrijven wel eens aan hun Open Source verplichtingen herinnerd, maar dat gaat om hele duidelijke gevallen (Linux kernel).
De geschillen tussen bedrijven hebben veelal te maken met verbroken samenwerkingscontracten en/of licenties. Incidenteel een programmeur die de directe concurrent aan functionaliteit helpt met behulp van code van zijn oude werkgever. De combinatie van verbieden om code “naar builen” te nemen en verbieden om code van derden over te nemen voorkomt veel inbreuk.
Is een licentie altijd een contract, of is dat enkel een gewoonte (omdat er meestal een tegenprestatie tegenover staat)? Kan ik iemand niet simpelweg toestemming verlenen om gratis mijn auteursrechtelijk beschermde werk te gebruiken zonder dat daardoor een overeenkomst tot stand komt? En welke wet ligt daaraan ten grondslag?
Maar puur zeggen “Jij mag mijn auteursrechtelijk beschermde werk gratis gebruiken” gevolgd door “Dankjewel”, geeft toch een (mondelinge) overeenkomst? Hoe wil je aangeven dat iemand je werk mag gebruiken als je dat niet wilt zeggen?
Ik denk daarbij in de richting van een eenzijdige rechtshandeling. Maar of een licentie die vorm kan aannemen is mij niet duidelijk.
Onder het Amerikaanse recht kun je afzien van je auteursrecht en jouw werk(en) in het “Publieke domein” plaatsen. Dat kan onder het Nederlandse auteursrecht niet, mede omdat de persoonlijkheidsrechten niet overdraagbaar zijn.
Naar Nederlands recht is een licentie een overeenkomst, ook als er geen tegenprestatie zoals geld betalen is. Een gift is ook een overeenkomst.
Is er een bezwaar om het “overeenkomst” te noemen?
Auguste Kerckhoffs in de 19e eeuw: de beveiliging mag niet afhangen van de geheimhouding van het systeem, maar alleen van de geheimhouding van de sleutels. Als je de blauwdruk geheim moet houden, wat doe je dan als iemand die lekt? Sleutels kun je roteren.
Het is wel leuk want ik gebruik Google AI Studio om allerlei handige apps voor mijzelf te genereren. De code die AI Studio hierbij genereert is daarbij best generiek te noemen, omdat het taken uitvoert op de manier waarop dat moet gebeuren. Immers, er zijn niet zoveel manieren om een dialoogbox met diverse opties te genereren. Of om een specifieke API aan te roepen. Veel code die wordt geschreven is functioneel en niet creatief. Dat maakt het ook lastig om auteursrechten te hebben op een stuk code, indien die code vrij generieke taken uitvoert.
Dus iemand die een module voor React schrijft om b.v. de Gemini API aan te roepen kan daar maar weinig rechten over claimen. Maar sommigen zullen dat wel proberen. Dus als je open-source in je code gebruikt, maar de licentie daarbij negeert, dan hoeft dat nog geen probleem te zijn. De code kan immers te generiek zijn. En dat geldt ook bij namen van variabelen en foutmeldingen in je code.
Maar wat ik ook doe is muziek maken met Suno en dan het resultaat op Facebook plaatsen. Tot nog toe heb ik van Facebook al drie keer een waarschuwing gekregen dat een of andere auteur de rechten ervan probeert te claimen om vervolgens Facebook erop te wijzen dat die auteur helemaal geen rechten heeft op mijn muziek, want die verschilt gewoon teveel. (Bijvoorbeeld een hard-rock auteur die probeerde om mijn dans-nummer te claimen.) In deze industrie lijkt men veel happiger te zijn om copyright-claims te maken, ook al heeft men het helemaal mis.
Bij code is dat sowieso veel lastiger om te doen, omdat je bij de meeste commerciele code niet kunt zien wat de broncode is. Je moet dan de binaire code gaan analyseren en dan kijken of deze overeen komt met wat de open-source code zou genereren aan code. Dan kun je een claim overwegen, maar dan nog heb je pech als die code gewoon vrij generiek is.
Dus ik maak mij hier weinig zorgen over. Wel ben ik oplettend als de AI ook commentaar in mijn code plaatst, omdat dat dan mogelijk “gestolen” kan zijn. Maar dan is het vooral kijken naar hoe generiek die code is.
In hoeverre is die vrijwaring of indemnification eigenlijk nuttig? Wanneer ik mijn quantum-AI-crypto startup bouw op gegenereerde code die uiteindelijk GPL auteursrecht bleek te hebben? Dan zit ik toch nog steeds aan de GPL verplichtingen vast en is die vrijwaring vrij zinloos?
Zoals ik het begreep beschermt de vrijwaring me alleen tegen financiele schade. Maar alle andere verplichtigingen blijven, toch?
Je kunt niet vast zitten aan de GPL zonder dat actief te willen. Het is immers een contract. Zonder het contract pleeg je echter inbreuk op auteursrecht, vergelijkbaar met zwartrijden versus een kaartje kopen. De auteur van de GPL software kan dan een financiële claim indienen bij jou, en de vrijwaring treedt dan in werking.