# GitHub Copilot

GitHub Copilot è un programma dell'intelligenza artificiale operante nel cloud e sviluppato da GitHub e OpenAI per assistere gli utenti degli ambienti di sviluppo integrato (IDE) di Visual Studio Code, Visual Studio, Neovim e JetBrains mediante l'autocompletamento del codice. Disponibile su abbonamento per singoli sviluppatori, fu annunciato per la prima volta da GitHub il 29 giugno 2021 ed è ottimizzato per i linguaggi di programmazione Python, JavaScript, TypeScript, Ruby e Go.

## Storia

Il 29 giugno 2021 GitHub annunciò il lancio di GitHub Copilot per l'anteprima tecnica nell'ambiente di sviluppo di Visual Studio Code. Il 29 ottobre 2021 GitHub Copilot fu rilasciato come plug-in nel negozio elettronico di JetBrains. Il 27 ottobre 2021 GitHub pubblicò il plug-in GitHub Copilot Neovim come repository pubblico. Il 29 marzo 2022 fu annunciata la versione per Visual Studio. Il 21 giugno 2022 GitHub dichiarò che Copilot non era più nella fase di "anteprima tecnica" e che era disponibile come servizio in abbonamento per sviluppatori singoli.

## Caratteristiche

Codex è in grado di generare codice risolutivo di problemi di programmazione viene formulati in linguaggio naturale. È anche in grado di documentare il codice sorgente in inglese e di tradurlo in linguaggi di programmazione differenti.
Secondo il sito web, GitHub Copilot include funzionalità di supporto per i programmatori, come la possibilità di convertire i commenti del codice in codice eseguibile e il completamento automatico per blocchi di codice, sezioni ripetitive di codice e interi metodi e/o funzioni. GitHub riferisce che la funzione di completamento automatico di Copilot è accurata al 50%; ad esempio, con un codice di intestazione di una funzione in Python, Copilot ha completato correttamente in automatico il resto del codice del corpo della funzione il 43% delle volte al primo tentativo e il 57% delle volte dopo dieci tentativi.
GitHub afferma che le funzionalità di Copilot consentono ai programmatori di navigare al'interno di framework e linguaggi di codifica sconosciuti, riducendo la quantità di tempo dedicata alla lettura della documentazione.

## Implementazione

GitHub Copilot è alimentato da OpenAI Codex, una versione di produzione modificata del Generative Pre-addestrato Transformer 3 (GPT-3), un modello linguistico che utilizza il deep learning per produrre testo simile a quello umano.
Il modello Codex è inoltre addestrato su gigabyte di codice sorgente in una dozzina di linguaggi di programmazione diversi. Esso è addestrato su una selezione di lingua inglese, attingendo a repository di GitHub pubblici e ad altro codice sorgente pubblicamente disponibile. In particolare, è incluso un dataset filtrato di 159 gigabyte di codice Python proveniente da 54 milioni di repository GitHub pubblici. GPT-3 di Open AI è concesso in licenza esclusivamente a Microsoft, la casa madre di GitHub.

## Accoglienza

Fin dal rilascio di Copilot ci sono state preoccupazioni per il suo impatto sulla sicurezza e sull'istruzione, nonché controversie sulla licenza relativa al codice da esso generato.

### Controversie sulla licenza

Nel giugno 2021 l'amministratore delegato di GitHub Nat Friedman affermò che "addestrare i sistemi ML sui dati pubblici rientra nel fair use". Una causa legale collettiva intentata nel novembre 2022 replicò che si trattava di "pura speculazione", asserendo che "nessun tribunale ha considerato la questione del fatto che "addestrare i sistemi di ML sui dati pubblici sia una forma di fair use". La causa intentata dallo studio legale Joseph Saveri contesta diversi aspetti legali, che vanno dalla violazione del contratto con gli utenti di GitHub alla violazione della privacy ai sensi del California Consumer Privacy Act per quanto atiene alla condivisione dei dati personali.
GitHub ha confessato che una piccola parte dell'output può risultare letteralmente copiata, cosa che ha fatto temere che il codice di output non sia sufficientemente trasformativo per essere classificato come fair use e possa violare il copyright del proprietario originale. Nel giugno 2022, la Software Freedom Conservancy notificò il divieto di usare GitHub all'interno dei propri progetti, accusando Copilot di ignorare le licenze di rilascio del codice presenti nei dati di addestramento. In un messaggio di assistenza clienti, GitHub sostenne che "l'addestramento di modelli di machine learning su dati pubblicamente disponibili è considerato fair use da parte della comunità del machine learning. L'azione legale collettiva definì ciò "falso", osservando altresì che "indipendentemente dal livello di accettazione di questo concetto nella 'comunità del machine learning', secondo la legge federale, è illegale".

### Libri bianchi della FSF

Il 28 luglio 2021, la Free Software Foundation (FSF) pubblicò un bando retribuito per la presentazione di un libro bianco relativo a questioni filosofiche e legali relative a Copilot. Donald Robertson, Licensing and Compliance Manager della FSF, disse che "Copilot solleva molte [...] domande che richiedono un esame più approfondito". Il 24 febbraio 2022, la FSF comunicò di aver ricevuto 22 documenti sull'argomento e di averne selezionato 5 a conclusione di un processo di revisione anonimo.

### Problemi di privacy

Il servizio Copilot è basato sul cloud e richiede una comunicazione continua con i server di GitHub Copilot. Questa architettura opaca ha alimentato preoccupazioni circa il rischio di telemetria e estrazione di dati a fronte di eventi asincroni azionati dal mondo esterno e riconosciuti dal programma.

### Problemi di sicurezza

Un documento accettato per la pubblicazione nell'IEEE Symposium on Security and Privacy nel 2022 ha valutato la sicurezza del codice generato da Copilot per i 25 principali di punti di debolezza del codice enumerati dal protocollo MITRE (ad es. il cross-site scripting, path traversal), nell'ambito di 89 diversi scenari e 1.689 programmi. Ciò fu fatto lungo gli assi della diversità dei punti deboli (la sua capacità di risposta a scenari che possono introdurre vari punti deboli nel codice), diversità dei prompt (la sua capacità di rispondere ad una stessa debolezza del codice con variazioni minime, analisi di sensitività) e diversità di domini (la sua capacità di generare specifiche hardware a livello di trasferimento del registro in Verilog). Lo studio rilevò che attraverso questi assi in molteplici lingue, il 39,33% dei migliori suggerimenti e il 40,73% dei suggerimenti totali avevano condotto a vulnerabilità del codice. Inoltre, rivelarono che anche piccole modifiche non semantiche (ovvero commenti) apportate al codice riuscivano a incidere sulla sicurezza di quest'ultimo.

### Problemi relativi al mondo della scuola

Un documento del febbraio 2022 pubblicato dall'Association for Computing Machinery valuta l'impatto che Codex, la tecnologia utilizzata da GitHub Copilot, potrebbe avere sulla formazione dei programmatori alle prime armi. Lo studio utilizza le domande di valutazione di un corso introduttivo di programmazione tenutosi presso l'Università di Auckland e mette a confronto le risposte di Codex con le prestazioni degli studenti. I ricercatori scoprirono che Codex, in media, otteneva risultati migliori di quelli della maggior parte degli studenti; tuttavia, le sue prestazioni erano inferiori su domande che limitavano le funzionalità che potevano essere utilizzate nella soluzione (ad esempio, condizionali, collezioni di dati numerici come liste e grafi, e cicli for). Dato questo tipo di problemi, "solo due delle 10 soluzioni [del Codex] hanno prodotto l'output corretto, ma entrambe [...] hanno violato [il] vincolo". Il documento conclude che Codex può essere utile nel fornire una varietà di soluzioni agli studenti, ma può anche indurre a un abuso della loro fiducia e al plagio.

## GitHub Copilot X

Il 23 marzo 2023 GitHub ha rilasciato Copilot X che integra GPT-4 per automatizzare l'individuazione e la correzione dei bug, le richieste di modifica e unione del codice in un repository centrale ad accesso distribuito, nonché la gestione documentale.
In VS Code e Visual Studio il programma integra una chat simile a ChatGPT, oltre al supporto vocale per la dettatura diretta del codice.

## Replit Ghostwriter

Replit Ghostwriter il concorrente diretto di Google che offre funzionalità di testing, software collaborativo e distribuzione delle app.