Het chardet-project heeft laten zien dat AI open source kapot gaat maken, aldus Bruce Perens. En hij kan het weten, want hij schreef de definitie van open source destijds. Chardet is van licentie veranderd na een AI-herimplementatie, en de vraag is dus of dat kan.

Chardet is een Python-bibliotheek die van een tekst aangeeft in welke codering (zoals UTF-8, Cyrillisch of Oost-Aziatisch) deze opgemaakt is. Handig ding, wel even opletten want de licentie is de bekende LGPL. Dus wijzigingen aan de library zelf kun je alleen onder LGPL verspreiden. (En dat verhaal over statisch en dynamisch linken.)

Sinds versie 7 is de bibliotheek ineens onder de MIT licentie beschikbaar. Dat scheelt, want de enige eis is dan dat je de auteursvermelding en licentietekst niet weghaalt uit de broncode. En dat je de auteur, in dit geval ene Dan Blanchard, niet aansprakelijk kunt stellen, maar dat terzijde.

Zoals Perens uitlegt:

Blanchard says he was in the clear to change licenses because he used AI – Anthropic’s Claude is now listed as a project contributor – to make what amounts to a clean room implementation of chardet. That’s essentially a rewrite done without copying the original code – though it’s unclear whether Claude ingested chardet’s code during training and, if that occurred, whether Claude’s output cloned that training data.

Probleem: hoewel Blanchard de code sinds 2012 onderhoudt, was hij niet de originele auteur. Dat was Mark Pilgrim, die rond die tijd van internet was gevallen maar nu ineens weer opdook met een boze ticket: No right to relicense this project.

Auteursrechtelijk klopt dat; zonder overdrachtsakte kan Blanchard code van Pilgrim niet onder een andere licentie plaatsen. Maar Blanchard stelt dus dat versie 7 een geheel nieuwe versie is, en roept daarbij dat zelfs een “clean room implementation” vormt.

Clean room reverse engineering is een oude techniek waar veel mythes omheen hangen. Kort gezegd: groep A analyseert iemands software en documenteert wat het moet doen. Groep B krijgt die documentatie en maakt software die dat doet. A’s analyse is legaal, en B kopieert de software niet dus handelt ook legaal.

Dit staat of valt met één cruciale aanname, namelijk dat B geen toegang heeft tot de software die A analyseert. Want als je wél kopieert, ga je nat. En toegang hebben en dan iets sterk vergelijkbaars maken levert op zijn minst een donkerbruin vermoeden van kopiëren op.

Clean room werkte om geheim gehouden software (zoals de IBM PC BIOS software) legaal te kunnen imiteren. Maar bij open source is het juridisch gezien absurd om van clean room te spreken. De broncode ligt letterlijk voor het oprapen. Dus hoe kun je dan met droge ogen beweren dat je een schone herimplementatie hebt gemaakt?

Oh ja, we deden het met AI. Blanchard zegt allereerst dat zijn nieuwe code vrijwel volledig anders is, wijzend op een software-plagiaattool die slechts 1,29% gelijkenis tussen de bronbestanden ziet. Dat komt dan weer omdat Blanchard aan de codegenerator van Anthropic’s Claude heeft gevraagd een nieuwe versie te maken:

For full transparency, here’s how the rewrite was conducted. I used the superpowers brainstorming skill to create a design documentspecifying the architecture and approach I wanted based on the following requirements I had for the rewrite […]

Hij gebruikte daarbij nadrukkelijk de opdracht “kijk niet naar de LGPL code”, wat voor mij net zo nuttig is als “maak geen fouten” in je prompt. Zeker omdat het volgens mij een publiek geheim is dat LLM-codegeneratoren getraind zijn op Het Hele Internet en dus ook op alles op Github. Waaronder de originele chardet.

Clean room is dit dus zeker niet te noemen. Tegelijk wordt het inbreuk-argument wel weersproken door de feitelijke ongelijkheid tussen de broncodes. Er moet wel iets aantoonbaar overgenomen zijn om van inbreuk te mogen spreken.

Uiteindelijk is dat het punt van Perens: als je dus tegen een AI kunt zeggen “herschrijf deze code” en de gelijkenis is lager dan X procent, dan is iedere OSS licentie te omzeilen door de software gewoon even door zo’n LLM-room te halen.

Arnoud