Zestaw narzędzi ScanCode Toolkit, przeznaczony do analizy kodu pod kątem naruszeń praw autorskich, wykrywania używanych licencji oraz identyfikowania niezałatwionych podatności, skrytykował projekt, który stworzył za pomocą AI klon produktu ScanCode, przepisany z Pythona na Rust (nazwa klonu nie została podana, ale najprawdopodobniej mowa o projekcie Provenant). Twierdzi się, że w przepisanym projekcie naruszono znak towarowy ScanCode oraz usunięto wzmianki o prawach autorskich i licencjach. Zarzuty wyjaśniono tym, że w przepisanym klonie wciąż wykorzystywane są kluczowe algorytmy ScanCode, a architektura projektu i struktura kodu pozostały zachowane.
Zdaniem twórcy ScanCode, do sukcesu stworzenia klonu przyczyniła się obecność w projekcie wyczerpującego zautomatyzowanego zestawu testowego, który obejmuje ponad 90 tysięcy testów, z których 40 tysięcy poświęcono wykrywaniu użycia różnych licencji w kodzie. Autorzy przepisanej wersji zadeklarowali znaczący wzrost wydajności (od 10 do 100 razy), ale zdaniem twórcy ScanCode, cena tego przyspieszenia to niepełne przechodzenie zestawu testów, a także obniżona poprawność działania i pełność dostarczanych informacji (klon zwracał nieprawidłowe wyniki i nie znajdował wszystkich informacji podczas analizy).
Jeśli w specjalnych testach wydajności Rust-port wyraźnie przewyższał ScanCode, to podczas przechodzenia standardowego zestawu testów klon okazał się wolniejszy, mimo że brakowało w nim niektórych kontroli. Po wprowadzeniu do ScanCode optymalizacji, takich jak buforowanie, wydajność ScanCode podczas skanowania kodu stała się nie gorsza niż w klonie na Rust, przy pełnym zachowaniu poprawności działania.
Twórcom klonu zarzuca się również naruszenie praw autorskich i licencji Apache 2.0, na której oparty jest kod ScanCode. Zauważono, że podczas przepisywania naruszono 4 podstawowe wymagania licencji: pozostawienie oryginalnego pliku z adnotacją (NOTICE), zachowanie wzmianki o prawach autorskich, wskazanie dokonanych zmian oraz zmianę nazwy w dziele pochodnym. Po zwróceniu uwagi, twórcy klonu zamieścili plik NOTICE i zmienili nazwę swojego projektu, ale dwa pozostałe naruszenia pozostają nadal nieusunięte.
Osoba towarzysząca ScanCode uważa, że społeczność powinna opracować kryteria dla rozróżnienia tego, co przy użyciu AI można uznać za dzieło pochodne, a co za niezależną realizację. Jego zdaniem, po przepisaniu kodu w innym języku przy zachowaniu algorytmów i struktury, rezultat wciąż pozostaje dziełem pochodnym, nawet jeśli podczas tego procesu zmieniane były nazwy zmiennych, a komentarze przerabiane lub usuwane. Twierdzenia autorów portu Rust o niezależnym przetworzeniu, jedynie inspirowanym projektem ScanCode, są w tej sytuacji niepoprawne, ponieważ praca ma na celu stworzenie pozorów oryginalnego rozwoju, co jest nawet gorsze niż bezpośrednie kopiowanie, ponieważ takie manipulacje są trudniejsze do wykrycia.
Znaczącym problemem przy generowaniu kodu za pomocą AI jest brak śledzenia pochodzenia kodu, który został użyty do uzyskania rezultatu. Domyślnie agenci AI korzystający z kodu projektów open source ignorują informacje o autorach, chyba że specjalnie wdrożone są środki do wykrywania i zachowywania metadanych dotyczących licencji i autorstwa. Problem atrybucji nie dotyczy tylko pracy polegającej na przepisywaniu kodu z jednego języka na drugi, ale także generacji kodu w ogólnym ujęciu — w tym przypadku wynik może stosunkowo dokładnie odwzorowywać wzorce z istniejącego otwartego kodu, wykorzystywanego w trakcie szkolenia modelu.
Źródło: opennet.ru
