GitHub Copilot: la IA che programma è una minaccia per open source e sviluppatori?
Immaginate di inserire nel codice un commento per indicare cosa farà la funzione che vi accingete a programmare, e se l’editor si mettesse a scriverla al posto vostro.
Questo è quello che promette GitHub CoPilot, un’estensione di VisualStudio Code che sfrutta Codex, un sistema di intelligenza artificiale sviluppato da OpenAI e addestrato con dataset ricavati da codice open source, incluso quello dei progetti pubblici di GitHub.
Secondo GitHub, CoPilot funziona particolarmente bene con i linguaggi Python, JavaScript, TypeScript, Ruby e Go, ma è in grado di comprendere decine di linguaggi di programmazione, restituendo codice valido al primo tentativo nel 43 percento dei casi, arrivando al 57% nel giro di una decina di prove. Quando l’estensione propone un blocco di codice, infatti, lo sviluppatore può approvarlo e inserirlo nel sorgente oppure richiedere nuove risposte fino a trovare quella appropriata. In alternativa, è possibile editare manualmente il codice per correggerlo.
Le interazioni dello sviluppatore con il codice proposto vengono usate per dare all’algoritmo un feedback della validità della risposta generata, ma GitHub dichiara che il codice originale prodotto non verrà poi usato per alimentare il dataset da cui saranno estrapolate nuove risposte. Non dovrebbe quindi esserci il rischio che il proprio codice venga proposto ad altri sviluppatori.
IA e diritto d’autore: una relazione complicata
GitHub afferma che la pratica di utilizzare informazioni pubblicamente disponibili, come il codice open source, per addestrare una IA è una pratica comunemente adottata, ma evidentemente si rende conto di muoversi in un territorio inesplorato e si dichiara disponibile a discutere con gli sviluppatori e l’industria del software per sviluppare linee guida di comportamento comune.
E i motivi ci sono tutti, perché l’annuncio ha destato qualche preoccupazione sia tra i sostenitori dell’open source (“GitHub co-pilot è uno strumento per riciclare codice open source in progetti commerciali?”, si chiede l’utente agomez314 su Hacker News), ma anche chi deve proteggere le aziende da possibili rivendicazioni e sanzioni per violazione del diritto d’autore qualora un frammento di codice open source venga inserito in un software commerciale.
GitHub dichiara di non rivendicare alcun diritto sul codice generato da CoPilot, che considera un mero strumento tecnico. Non potrebbe essere altrimenti: le leggi sul diritto d’autore o sulla proprietà intellettuale prevedono infatti che esista un autore umano, che è l’unico essere in grado di produrre opere di ingegno.
La proprietà intellettuale sul codice generato da CoPilot appartiene quindi allo sviluppatore che materialmente ne approva l’inserimento nel progetto, assumendosi a questo punto anche le responsabilità verso eventuali violazioni del copyright. Ma quanto è probabile che un frammento di codice inserito corrisponda letteralmente a un progetto usato nella fase di addestramento?
CoPilot potrebbe copiare software open source?
Secondo una ricerca effettuata da GitHub, un frammento di codice autogenerato potrebbe replicare testualmente parte del sorgente di un altro progetto nello 0,1 percento dei casi, e le parti copiate sarebbero costituite principalmente da funzioni ormai diventate standard e usate in moltissimi progetti. Da un altro punto di vista, vorrebbe dire che in un progetto da 350.000 linee di codice come WordPress, 350 righe potrebbero essere copiate inconsapevolmente da altri progetti.
Per questo, GitHub pianifica di aggiungere un controllo ulteriore sul testo generato: una ricerca testuale sulla codebase di addestramento dell’algoritmo che informi lo sviluppatore sulla fonte originale, con indicazione dell’autore e della licenza d’uso. In questo modo sarà possibile scegliere se inserire il codice con la giusta attribuzione degli autori e delle licenze, oppure rifiutarlo se queste non fossero compatibili con la licenza con cui si intende rilasciare il programma. Al momento, però, un controllo di questo tipo non è presente.
Anche ammettendo che nessun frammento di codice open source finisca in un progetto con diversa licenza, sarà corretto presumere che le licenze open source garantiscono il diritto di utilizzare il codice per addestrare un modello di intelligenza artificiale che sarà poi venduto come servizio e utilizzato per scrivere software proprietario?
Nessuno finora si è preoccupato di porre limiti a questo tipo di utilizzo, perché era difficile immaginare l’attuale sviluppo del machine learning, in parte perché non è scontato che si possa mettere una limitazione all’impiego di sorgenti open source per addestrare modelli IA.
“Si tratta di un territorio ancora inesplorato – commenta a Computerworld Italo Vignoli, membro del board della Open Source Initiative e altre organizzazioni per la promozione del software libero – Non mi risulta che, almeno tra le più importanti licenze open source, ci siano clausole per vietare esplicitamente l’utilizzo del codice per l’addestramento di sistemi di Intelligenza Artificiale. Del resto, questo probabilmente violerebbe una delle quattro libertà che le licenze open dovrebbero garantire, cioè la libertà di studiare il funzionamento di un programma e di modificarlo a proprio piacimento, ovviamente però applicando al prodotto finale una licenza compatibile con quella del sorgente originale”.
Che si possa garantire “libertà di studio” a un soggetto che non sia umano, però, riapre interrogativi filosofici non trascurabili. “Come tutte le grandi innovazioni, è facile farsi prendere dall’entusiasmo, ma è altrettanto facile tralasciare di considerare le implicazioni meno immediate”, commenta Vignoli.
Altre implicazioni etiche e legali GitHub CoPilot
Il diritto d’autore non è l’unico argomento su cui è necessaria una riflessione. Altri inconvenienti potrebbero essere l’inserimento di codice contenenti bug, librerie e API obsolete e non sicure, compromettendo la sicurezza del programma.
Avendo imparato anche da software amatoriali, potrebbe includere un linguaggio scurrile, discriminatorio o comunque non consono a un software aziendale (la fantasia degli sviluppatori nel dare nomi a variabili, oggetti e funzioni non ha limiti a volte).
Infine, ma probabilmente in cima alle preoccupazioni dei principali utenti del servizio, ci sarà da valutare l’impatto che un servizio come CoPilot, se entrerà in produzione, avrà sul posto di lavoro degli sviluppatori, che potrebbero essere attaccati su due fronti: da un lato, potrebbe rendere inutili alcune posizioni; dall’altro, permettere l’arrivo della concorrenza di una nuova schiera di sviluppatori meno abili, ma le cui prestazioni sarebbero potenziate da CoPilot.
Tutti questi temi sono noti a GitHub, che li elenca nelle FAQ. Anche la comunità degli sviluppatori dovrebbe averli ben presenti.