L'outil open source ScanCode Toolkit, destiné à analyser le code à la recherche de violations des droits d'auteur, d'identification des licences utilisées et de détection des vulnérabilités non corrigées, a critiqué un projet qui a créé un clone du produit ScanCode à l'aide de l'IA, réécrit de Python en Rust (le nom du clone n'est pas mentionné, mais tous les indices pointent vers le projet Provenant). Il est affirmé que le projet réécrit enfreint la marque déposée ScanCode et a supprimé les mentions de droits d'auteur et de licences. Les plaintes sont justifiées par le fait que le clone réécrit continue d'utiliser les algorithmes clés de ScanCode, tout en préservant l'architecture du projet et la structure du code.
Selon le responsable de ScanCode, la création réussie du clone a été facilitée par la présence d'un ensemble de tests automatisés exhaustif, comprenant plus de 90 000 tests, dont 40 000 sont consacrés à la détection de l'utilisation de certaines licences dans le code. Les auteurs de la version réécrite ont déclaré qu'ils avaient significativement augmenté les performances (de 10 à 100 fois), mais selon le responsable de ScanCode, cette accélération s'est faite au prix d'un passage incomplet de l'ensemble des tests, ainsi qu'une baisse de la précision de fonctionnement et de la complétude des informations fournies (le clone produisait des résultats incorrects et ne trouvait pas toutes les informations lors de l'analyse).
Bien que dans des tests de performance spécifiques le port Rust ait largement devancé ScanCode, lors du passage d'un ensemble de tests standard, le clone s'est avéré plus lent, malgré le fait que certaines vérifications aient été omises. AprÚs l'implémentation d'optimisations dans ScanCode, telles que la mise en cache, les performances de ScanCode lors de l'analyse de code sont devenues équivalentes à celles du clone en Rust, tout en préservant totalement la précision de fonctionnement.
Les auteurs du clone sont Ă©galement accusĂ©s d'avoir enfreint les droits d'auteur et la licence Apache 2.0, sous laquelle le code de ScanCode est distribuĂ©. Il est notĂ© que, lors du réécriture, quatre exigences principales de la licence ont Ă©tĂ© enfreintes : le maintien du fichier original avec une mention (NOTICE), la prĂ©servation des mentions de droits d'auteur, la mise en Ă©vidence des modifications effectuĂ©es et le changement de nom dans l'Ćuvre dĂ©rivĂ©e. AprĂšs des remarques, les auteurs du clone ont placĂ© le fichier NOTICE et ont renommĂ© leur projet, mais les deux autres violations restent Ă ce jour non corrigĂ©es.
Le responsable de ScanCode estime que la communautĂ© doit Ă©tablir des critĂšres pour distinguer ce qui doit ĂȘtre considĂ©rĂ© comme une Ćuvre dĂ©rivĂ©e lors de l'utilisation de l'IA, et ce qui constitue une rĂ©alisation indĂ©pendante. Selon lui, mĂȘme aprĂšs la réécriture du code dans un autre langage tout en conservant les algorithmes et la structure, le rĂ©sultat demeure une Ćuvre dĂ©rivĂ©e, mĂȘme si les variables ont Ă©tĂ© renommĂ©es et que des commentaires ont Ă©tĂ© modifiĂ©s ou supprimĂ©s durant le processus. Les allĂ©gations des auteurs du portage Rust concernant une refonte indĂ©pendante, inspirĂ©e uniquement par le projet ScanCode, ne sont pas correctes dans ce cas, car le travail vise Ă crĂ©er une apparence de dĂ©veloppement original, ce qui est mĂȘme pire qu'une copie directe, car ces manĆuvres sont plus difficiles Ă dĂ©tecter.
Un problĂšme majeur lors de la gĂ©nĂ©ration de code par l'IA est l'absence de suivi de l'origine du code utilisĂ© pour obtenir le rĂ©sultat. Par dĂ©faut, les agents IA utilisant du code provenant de projets ouverts ignorent les informations sur les auteurs, sauf si des moyens spĂ©cifiques de dĂ©tection et de conservation des mĂ©tadonnĂ©es liĂ©es aux licences et Ă la paternitĂ© sont mis en Ćuvre. Le problĂšme d'attribution concerne non seulement la réécriture de code d'un langage Ă un autre, mais aussi la gĂ©nĂ©ration de code en gĂ©nĂ©ral â le rĂ©sultat peut dans ce cas rĂ©pĂ©ter assez fidĂšlement les modĂšles du code source existant utilisĂ© lors de l'apprentissage du modĂšle.
Source : opennet.ru
