Instrumentul open-source ScanCode Toolkit, destinat pentru scannarea codului în căutarea incongruențelor cu drepturile de autor, identificarea licențelor utilizate și descoperirea vulnerabilităților nerezolvate, a criticat un proiect care a creat un clon al produsului ScanCode, refăcut din Python în Rust (numele clonului nu este menționat, dar, din toate indiciile, este vorba despre proiectul Provenant). Se afirmă că în proiectul refăcut a fost încălcat marca înregistrată ScanCode, iar mențiunile despre drepturile de autor și licențe au fost eliminate. Reproșurile se bazează pe faptul că în clonă au continuat să fie utilizate algoritmi cheie din ScanCode, arhitectura proiectului a fost păstrată, iar structura codului a rămas neschimbată.
Conform opiniei coordonatorului ScanCode, succesul în crearea clonului a fost influențat de existența unui set exhaustiv de teste automate, care include peste 90 de mii de teste, dintre care 40 de mii sunt dedicate identificării utilizării diferitelor licențe în cod. Autorii versiunii refăcute au declarat o creștere semnificativă a performanței (de 10-100 de ori), dar, potrivit coordonatorului ScanCode, prețul acestei accelerări a fost neregularea completă a setului de teste, precum și scăderea corectitudinii activității și a complexității informațiilor furnizate (clonul oferea rezultate eronate și nu identifica toate informațiile în timpul analizei).
Dacă în teste speciale de performanță portul Rust a depășit semnificativ ScanCode, la trecerea standard prin setul de teste, clonul s-a dovedit a fi mai lent, deși unele verificări erau omise. După optimizările introduse în ScanCode, cum ar fi caching-ul, performanța ScanCode la scanarea codului a devenit comparabilă cu cea a clonului pe Rust, menținându-se în același timp corectitudinea activității.
Autorilor clonului li se reproșează și încălcarea dreptului de autor și a licenței Apache 2.0 sub care este distribuit codul ScanCode. Se evidențiază că în procesul de refacere au fost încălcate 4 cerințe fundamentale ale licenței: păstrarea fișierului original cu mențiune (NOTICE), salvarea mențiunilor despre drepturile de autor, evidențierea modificărilor efectuate și schimbarea numelui în lucrarea derivată. După observație, autorii clonului au plasat fișierul NOTICE și au redenumit proiectul lor, dar celelalte două încălcări rămân necorectate.
Coordonatorul ScanCode consideră că comunitatea ar trebui să dezvolte criterii pentru a distinge între ceea ce, în utilizarea AI, trebuie să fie considerată o lucrare derivată și ceea ce reprezintă o implementare independentă. În opinia sa, după ce codul a fost rescris într-o altă limbă, păstrând algoritmii și structura, rezultatul continuă să rămână o lucrare derivată, chiar și în cazul în care variabilele au fost redenumite și comentariile au fost modificate sau eliminate. Declarațiile autorilor portului Rust cu privire la refacerea independentă, inspirată doar de proiectul ScanCode, sunt în acest caz incorecte, deoarece lucrarea vizează crearea impresiei unei dezvoltări originale, ceea ce este chiar mai rău decât copierea directă, deoarece astfel de manipulări sunt mai greu de detectat.
O problemă semnificativă în generarea de cod prin AI este absența urmăririi originii codului utilizat pentru a obține rezultatul. În mod implicit, agenții AI care folosesc cod din proiecte deschise ignoră informațiile despre autori, cu excepția cazului în care nu sunt implementate în mod special metode de identificare și păstrare a metadatelor despre licențe și autorie. Problema atribuirii afectează nu doar lucrările de rescriere a codului de pe o limbă pe alta, ci și generarea de cod în forma sa generală - rezultatul, în acest caz, poate reproduce suficient de exact modele din codul deschis existent utilizat în procesul de antrenare a modelului.
Sursa: opennet.ro
