Een van de kernprincipes van opensource is dat iedereen kan bijdragen. Maar generatieve AI stelt opensourceontwikkelaars voor een dilemma. Want wat doe je als bijdragen zo laagdrempelig wordt, dat iedereen het kan doen, ook mensen die geen verstand hebben van het project, met alle gevolgen van dien?
De afgelopen maanden klaagden meerdere ontwikkelaars over de gevolgen van generatieve AI voor opensourceprojecten. In januari besloot Daniel Stenberg, de hoofdontwikkelaar van de tool curl, te stoppen met het bugbountyprogramma van het project, nadat hij zich eerder al beklaagde over het grote aantal rapportages met AI-slop.
Daniel Stenberg hield vorig jaar ook al een keynote over de effecten van AI-slop op curl. Tekst gaat door onder de video.
Ook Steve Ruiz, de ontwikkelaar van de opensourcetool tldraw, besloot maatregelen te nemen en sluit sinds januari automatisch pullrequests van externe programmeurs. "We begonnen pullrequests te ontvangen die zogenaamd gemelde problemen oplosten, maar die achteraf gezien overduidelijk eenmalige 'los dit probleem op'-verzoeken waren van een auteur die AI-codetools gebruikte", legt hij uit in een blogpost. "Als het schrijven van code makkelijk is en slecht werk vrijwel niet te onderscheiden is van goed werk, is de waarde van externe bijdragen waarschijnlijk minder dan nul."
Wat is een pullrequest?
Een pullrequest is een verzoek van een programmeur om de wijzigingen die die heeft doorgevoerd op te nemen in de 'hoofdcode' van een project. Op deze manier kunnen andere ontwikkelaars ook aan functies werken om het project te verbeteren. In de pullrequest is precies te zien waar de code is gewijzigd. Ook kunnen andere ontwikkelaars vragen stellen en verbeteringen voorstellen. De hoofdontwikkelaar of iemand anders met zogenoemde pushaccess kijkt vervolgens de gemaakte wijzigingen na en voegt ze na goedkeuring van de code samen met het project.
Nieuwe GitHub-functies
Om de strijd tegen AI-slop wat makkelijker te maken, introduceerde GitHub vorige maand nieuwe instellingen voor de toegang tot pullrequests. Daarmee kunnen projectbeheerders de toegang tot pullrequests beperken of zelfs volledig uitschakelen. De instellingen zijn volgens GitHub bedoeld om de pullrequests 'beter af te stemmen op de behoefte van je project', maar ze lijken een directe maatregel tegen het groeiende aantal AI-verzoeken.
Ook dit soort instellingen zorgt echter voor dilemma's, aangezien het direct ingaat tegen de principes van veel opensourceprojecten. Onder anderen Rémi Verschelde van de opensourcegame-engine Godot zegt via Bluesky dat AI-pullrequests het werk van maintainers 'steeds slopender en demotiverender' maakt, maar onderstreept ook dat Godot nieuwe programmeurs verwelkomt en elke enginegebruiker de mogelijkheid wil geven om 'impact te hebben'.
"Voorlopig passen we ons aan de situatie aan en bespreken we intern verschillende oplossingen om het probleem aan te pakken. We willen niet beperken wie kan bijdragen aan het project, dus we gaan de nieuwe GitHub-functies niet gebruiken", bevestigt Emilio Coppola, beheerder van Godot, aan Tweakers. "We bevinden ons nog niet in een situatie waarin we drastische maatregelen moeten nemen, maar we zullen zien hoe het verder gaat."
Rotte appels
Ook Matiss Janis Aboltins, beheerder van het project Actual Budget, erkent dat het gebruik van generatieve AI problemen geeft. Hij benadrukt echter dat hij niet tegen het gebruik van AI zelf is: "Het is gewoon een hulpmiddel. Wel is het vervelend dat sommige rotte appels automatiseringen maken die problemen proberen op te lossen. Ze openen pullrequests, maar niemand controleert die, waardoor ze meestal ofwel niet werken of het probleem niet echt oplossen."
Een ander probleem is dat mensen ook llm's gebruiken om met beheerders of andere programmeurs te praten. "Dat is behoorlijk irritant, want het voelt alsof je met een robot in discussie bent, niet met een echt mens. In zulke gevallen is mijn aanpak nogal onbeleefd: ik sluit de pullrequest gewoon af en laat in de reactie weten dat ik niet met robots wil communiceren."
Aboltins schat in dat ongeveer tien procent van de pullrequests bij zijn project nu wordt geschreven door bots of mensen die niet het beste voorhebben met het project. Sinds het begin van het jaar ziet hij ook een toename van gloednieuwe GitHub-accounts die pullrequests met patches indienen. "Een paar uur later zijn deze accounts verbannen. Ik weet niet wat de motivatie hierachter is en begrijp het ook niet. Sommige mensen op de Discord-server van het project speculeren dat de AI-labs gegevens verzamelen over de kwaliteit van de gegenereerde patches, bijvoorbeeld hoeveel patches er worden samengevoegd, maar dat is slechts speculatie."
Zijn project leunt nu op AI-tools als CodeRabbit als eerste controlemechanisme: "CodeRabbit beoordeelt de pullrequest en keurt die uiteindelijk goed. Pas daarna beginnen wij (mensen) met het beoordelen van de PR's. Als de drempel voor toetreding wordt verlaagd, moeten de controlemechanismen voor het mergen en uitbrengen van code worden aangescherpt", aldus Aboltins.
De programmeur maakt zich wel zorgen over de toekomst van tools als CodeRabbit en vreest dat bedrijven daarachter in de toekomst mogelijk veel geld gaan vragen voor het gebruik. "CodeRabbit en vergelijkbare tools kunnen gratis worden gebruikt in opensourceprojecten, maar ik denk niet dat dit lang zo blijft. Hoe kunnen projecten die gratis worden uitgevoerd en onderhouden, deze tools dan nog bekostigen? Dat kan niet. En het volledig zelf nakijken van deze pullrequests zal ons veel meer tijd kosten."
Redactie: Imre Himmelbauer • Eindredactie: Marger Verschuur