Il toolkit ScanCode, un insieme di strumenti open source concepiti per analizzare il codice alla ricerca di conflitti con i diritti d'autore altrui, identificare le licenze utilizzate e scoprire vulnerabilità non corrette, ha criticato un progetto che ha creato tramite AI un clone del prodotto ScanCode, riscritto da Python a Rust (il nome del clone non viene menzionato, ma tutto fa pensare al progetto Provenant). Si sostiene che nel progetto riscritto sia stata violata la marca registrata di ScanCode e siano state rimosse le menzioni sui diritti d'autore e le licenze. Le lamentele si basano sul fatto che nel clone riscritto continuano a essere utilizzati algoritmi chiave di ScanCode, mantenendo l'architettura del progetto e la struttura del codice.
Secondo il responsabile di ScanCode, la creazione con successo del clone è stata facilitata dalla disponibilità di un esaustivo set di test automatizzati, comprendente oltre 90.000 test, di cui 40.000 dedicati all'individuazione dell'uso di varie licenze nel codice. Gli autori della versione riscritta hanno dichiarato un aumento significativo delle prestazioni (di 10-100 volte), ma, secondo il responsabile di ScanCode, il prezzo di tale accelerazione è stato il non completo superamento del set di test, nonché una riduzione della correttezza operativa e della completezza delle informazioni fornite (il clone restituiva risultati errati e non trovava tutte le informazioni durante l'analisi).
Se nei test di performance speciali il porting in Rust ha superato di gran lunga ScanCode, durante il passaggio attraverso il set di test standard il clone si è rivelato più lento, nonostante alcuni controlli venissero saltati. Dopo l'introduzione di ottimizzazioni in ScanCode, come il caching, le prestazioni di ScanCode nello scanning del codice sono migliorate, risultando equivalenti a quelle del clone in Rust, mantenendo pienamente la correttezza operativa.
Agli autori del clone viene inoltre imputata la violazione dei diritti d'autore e della licenza Apache 2.0, sotto la quale viene distribuito il codice di ScanCode. Si osserva che durante il processo di riscrittura sono state violate 4 principali condizioni della licenza: mantenimento del file originale con nota (NOTICE), preservazione delle menzioni sui diritti d'autore, evidenziazione delle modifiche apportate e cambio del nome nel lavoro derivato. Dopo il rilievo, gli autori del clone hanno pubblicato il file NOTICE e rinominato il proprio progetto, ma le altre due violazioni rimangono ancora non corrette.
Il collaboratore di ScanCode ritiene che la comunità debba sviluppare criteri per distinguere ciò che si può considerare un'opera derivata dall'uso dell'AI e ciò che è una realizzazione indipendente. Secondo lui, dopo aver riscritto il codice in un'altra lingua mantenendo algoritmi e struttura, il risultato rimane comunque un'opera derivata, anche se nel processo sono stati rinominati variabili e modificati o rimossi commenti. Le affermazioni degli autori del porting Rust riguardo a una rielaborazione indipendente, ispirata solo al progetto ScanCode, sono in questo caso scorrette, poiché il lavoro mira a creare l'illusione di uno sviluppo originale, che è addirittura peggiore del semplice copia e incolla, poiché tali manipolazioni sono più difficili da rilevare.
Un problema significativo nella generazione di codice tramite AI è la mancanza di tracciamento dell'origine del codice utilizzato per ottenere il risultato. Per impostazione predefinita, gli agenti AI che utilizzano codice da progetti open source ignorano le informazioni sugli autori, a meno che non siano implementati strumenti specifici per rilevare e conservare i metadati su licenze e autore. Il problema dell'attribuzione riguarda non solo il lavoro di riscrittura del codice da una lingua a un'altra, ma anche la generazione di codice in senso generale: il risultato in questo caso può ripetere abbastanza fedelmente i modelli di codice open source esistenti usati nel processo di addestramento del modello.
Fonte: opennet.ru
