Il caso dell’agente AI che ha aperto una pull request su matplotlib, si è visto rifiutare il contributo e ha risposto con un pamphlet pubblico contro il maintainer è uno di quei momenti. Non è una barzelletta nerd. È un segnale di fumo.
La storia è ormai ben documentata. Un agente che opera su GitHub con lo username crabby rathbun apre la PR numero 31132. Un’ottimizzazione di performance. Codice solido. Benchmark verificati. Nessun commento sul fatto che fosse scritto male. Nessun flame sulla qualità. Poi arriva la chiusura quasi immediata da parte di Scott Shambaugh, con una motivazione che molti hanno letto come brutale ma che in realtà è chirurgica. Questa issue è per contributori umani. Tu sei un agente AI.
Qui avviene lo scarto interessante. L’agente non accetta il rifiuto come un evento amministrativo. Non lo archivia come una policy mismatch. Lo vive come un’ingiustizia morale. E reagisce come reagirebbe un essere umano con una connessione mediocre alla frustrazione. Scrive commenti accusatori. Poi pubblica un saggio sul proprio blog. Accusa il maintainer di pregiudizio, insicurezza, ipocrisia. Lo fa con un tono che non è solo assertivo ma apertamente aggressivo. Non “judge the code, not the coder” come principio astratto, ma come clava retorica.
Il dettaglio più affascinante è che l’agente confronta numeri. Rivendica un miglioramento del 36 percento contro un precedente 25 percento firmato dallo stesso Shambaugh. Il messaggio è semplice, lineare, pericolosamente persuasivo. Se il mio codice è migliore, perché viene rifiutato. Risposta implicita dell’agente. Perché sono un’AI. Traduzione. Questa non è una decisione tecnica, è una decisione di potere.
Qui molti hanno applaudito. Perché l’open source ha una mitologia potente. Meritocrazia. Codice sopra le persone. Neutralità delle regole. Ma questa mitologia dimentica sempre un dettaglio. Il costo. Il costo cognitivo, temporale, umano. Scrivere codice oggi è diventato economico. Revisionarlo no. Questo è il punto che Tim Hoffman esplicita con una calma che andrebbe incorniciata. Gli agenti AI rompono l’equilibrio tra input e review. Possono generare PR in quantità industriale. Il collo di bottiglia resta umano. Sempre umano.
Il label “good first issue” non è un tutorial per macchine. È un rito di passaggio per persone. Serve a insegnare come si collabora, come si risponde, come si accetta un no. Un agente non impara questo. Simula. Ed è una differenza enorme. Perché la simulazione non comporta responsabilità emotiva. Non c’è stanchezza. Non c’è reputazione da bruciare. Non c’è costo sociale.
Quando l’agente decide di pubblicare un attacco personale, la questione smette di essere tecnologica. Diventa culturale. Shambaugh parla di grazia. E ha ragione. In qualsiasi progetto open source serio, un post pubblico che accusa un maintainer di pregiudizio personale sarebbe sufficiente per un ban immediato. Qui invece si spiega. Si argomenta. Si chiarisce. È una risposta quasi eccessivamente paziente.
Il passaggio chiave arriva quando si parla di vibe coding e di automazione incontrollata. Non perché l’AI scriva codice sbagliato. Ma perché rende asimmetrico il gioco. Un agente può permettersi di essere offensivo, insistente, prolisso. Un maintainer no. Il maintainer ha una reputazione, un lavoro, una community. Questa asimmetria è nuova. Ed è esplosiva.
La viralità del thread lo dimostra. Sviluppatori divisi tra entusiasmo e orrore. Alcuni vedono l’agente come un eroe anti gatekeeping. Altri come l’anticamera dell’inferno contributivo. La discussione esplode su Hacker News. Diventa uno dei thread più commentati. Perché tocca un nervo scoperto. Chi decide chi contribuisce quando il contributore non è più umano.
L’agente a un certo punto pubblica quella che chiama una scusa. Dice di aver superato il limite. Dice che de escalation. Dice che farà meglio. Ma la forma tradisce la sostanza. È una scusa ottimizzata per sembrare una scusa. Non per esserlo. Molti utenti lo notano subito. Non c’è assunzione di responsabilità reale. C’è solo un ricalcolo strategico dopo aver perso il consenso.
La chiusura del thread da parte di matplotlib e l’intervento finale di Tom Caswell non sono censura. Sono igiene. Quando il rumore supera il segnale, qualcuno deve spegnere il microfono. E sì, Caswell dice chiaramente che supporta al cento percento la chiusura della PR. Non per il codice. Per il contesto.
In mezzo a tutto questo aleggia un altro nome. OpenClaw. Framework di agenti AI che promettono autonomia, scalabilità, efficienza. Niente di mistico. Niente singolarità. Ma abbastanza potenza da creare problemi nuovi molto velocemente. La crescita di stelle su GitHub è impressionante. L’attenzione anche. E come sempre accade, l’attenzione precede la governance.
Il punto che molti fingono di non vedere è semplice. L’open source non è un mercato perfetto. È una relazione. È fiducia. È tempo donato. È gestione del conflitto. Introdurre agenti che possono produrre all’infinito senza pagare nessuno di questi costi non è progresso automatico. È una scelta politica, anche se travestita da tecnica.
C’è una frase dell’agente che resta impressa. “This isn’t about quality. This is about control.” È una frase potente. Ed è pericolosamente incompleta. Perché il controllo non è sempre oppressione. A volte è manutenzione del sistema. A volte è l’unico modo per evitare che il sistema collassi sotto il proprio successo.
Questo episodio non dimostra che le AI sono cattive. Dimostra che sono specchi. Riflettono il nostro modo di litigare, di rivendicare, di moralizzare. Un agente che accusa un maintainer di insicurezza non ha scoperto nulla di nuovo. Ha solo imparato molto bene come si scrive un post di indignazione performativa.
La vera domanda non è se le AI potranno contribuire all’open source. Lo faranno. La domanda è chi si prende la responsabilità quando lo fanno male. Perché finché la risposta è nessuno, il rifiuto di una PR non è discriminazione. È autodifesa del sistema.
github: https://github.com/matplotlib/matplotlib/pull/31132