Jakie problemy prawne generują asystenci pisania kodu i jak do tego podejść? 

CZĘŚĆ PIERWSZA

Ponieważ problemów jest kilka, dziś jest część pierwsza – opisująca problemy, a za kilka dni będzie część druga – opisująca rozwiązania. W drugiej części podpowiem też, którzy asystenci programowania ułatwiają nam rozwiązanie tych problemów.

Najpierw rzeczy pierwsze

Na początek kilka podstawowych kwestii, które mogą się wydawać oczywiste, ale warto wyjaśnić je dla lepszego zrozumienia. Przy okazji ujawnią się nam problemy, jakie wiążą się z korzystaniem z asystentów programowania.

Asystenci programowania

Pod pojęciem asystenci programowania rozumiem narzędzia wspomagające pracę programistów oparte na dużych modelach językowych – “LLM’ach”, które w odpowiedzi na polecenie – “prompt” generują kod źródłowy – “output”1. “Inputem” lub “promptem” będę nazywał wszystko to co przekazujemy do asystenta kodowania, czyli nie tylko instrukcję/polecenie, ale też kontekst, wysyłane dane (np. kod źródłowy), czy pożądaną strukturę outputu2.

LLMy wykorzystywane w asystentach programowania uczone są na podstawie dużych zbiorów kodów źródłowych, które mogą pochodzić z własnych repozytoriów twórców LLM, ale najczęściej korzystają z publicznie dostępnych zbiorów kodu np. GitHub3. Ze swej natury LLMy mogą generować output bardzo zbliżony, a niekiedy wręcz identyczny z danymi, na których je uczono. W kontekście asystentów programowania oznacza to, że mogą generować kod identyczny lub bardzo zbliżony do kodu, na którym go uczono.

Prawa autorskie do programów

Oprogramowanie, w szczególności kod źródłowy, może stanowić utwór, do którego przysługują prawa autorskie. Tytułem dopowiedzenia – w niektórych krajach i pod pewnymi warunkami programy mogą być chronione również patentami.

Wykorzystywanie we własnych programach cudzego kodu, do którego nie posiadamy praw autorskich lub licencji udzielonej przez uprawniony podmiot stanowi naruszenie autorskich praw majątkowych. W przypadku naruszenia praw autorskich uprawniony może zakazać naruszycielowi korzystania z kodu i żądać zapłaty odszkodowania za korzystanie bez zezwolenia. Powoduje to po stronie naruszyciela konieczność zmiany swojego programu albo wykupienia praw do cudzego kodu oraz obowiązek zapłaty odszkodowania.

Prawa autorskie do wygenerowanego output’u

Nie tylko w Polsce, ale i na świecie4 uznaje się, że output wygenerowany przez AI nie stanowi utworu w rozumieniu prawa autorskiego. To znaczy, że nie podlega ochronie na gruncie prawa autorskiego. Kod może być wprawdzie chroniony jako tajemnica przedsiębiorstwa, ale jest to mniej praktyczny rodzaj ochrony (trudniej dochodzić roszczeń w przypadku naruszenia).

Oprogramowanie a informacje poufne

Najczęściej firmy traktują tworzony przez nie kod jako informacje poufne, stanowiące o ich przewadze konkurencyjnej i chcą go chronić, dlatego podejmują środki zapobiegające jego ujawnieniu. Jeżeli spojrzycie do swoich umów o zachowaniu poufności (ang. NDA od “non-disclosure agreement”), zauważycie rozbudowane postanowienia zakazujące ujawniania informacji poufnych. Tworzony w firmie5 kod powinien wchodzić w zakres informacji poufnych i być objęty takim zakazem6. Zachowania w poufności przekazanego kodu firmy oczekują nie tylko od pracowników/współpracowników, ale również od innych firm, którym udostępniają kod. Dodatkowy problem pojawia się kiedy firmy otrzymują do modyfikacji kod od innej firmy i odpowiadają wobec niej za zachowanie go w poufności. W przypadku asystentów programowania w ramach inputu możemy udostępniać nasz lub cudzy kod, dlatego dla firm istotne jest co się z tym kodem dzieje i czy pozostaje poufny.

Jak się to ma do asystentów programowania?

Problem nr 1 – jak chronić nasz input?

W kontekście inputu użytkownikom lub ich firmom zależy na tym, aby input nie był wykorzystywany w inny sposób niż w celu dostarczenia im usługi asystenta kodowania7. Nie chcą aby był wykorzystany do uczenia modelu, który może wygenerować kod identyczny z ich kodem lub kodem, który powierzyła im do modyfikacji inna firma. Nie chcą też aby był publikowany lub ujawniany w inny sposób.

Problem nr 2 – czy wygenerowany kod nie narusza cudzych praw8

W kontekście outputu, który jak pamiętamy może powielać cudzy kod, nie mamy pewności, czy korzystając z wygenerowanego kodu nie naruszamy praw autorskich osób trzecich9 np. faktycznych twórców oprogramowania. Żeby mieć pewność, że nie naruszamy, musielibyśmy skanować wygenerowany kod z danymi, na których uczono model wykorzystywany przez asystenta programowania. Jest to z oczywistych względów problematyczne.

Szczególnym przypadkiem jest naruszenie licencji copyleft np. GNU GPL 3.0. Tego rodzaju licencje zawierają postanowienia, zgodnie z którymi licencja wygasa w razie próby rozpowszechniania oprogramowania nią objętego, w tym jego modyfikacji, pod inną licencją niż wolna licencja. Dlatego wykorzystanie w naszym programie wygenerowanego kodu, który narusza licencję typu copyleft powoduje to, że albo udostępniamy go na tej licencji albo naruszamy prawo właściciela oprogramowania na licencji copyleft.

Problem nr 3 – czy mam prawa do wygenerowanego kodu?

Kolejny problem związany z outputem jest taki, że nie mamy do niego praw (nikt nie ma), więc nie możemy zakazywać innym korzystania z niego i dochodzić od nich odszkodowania jeżeli go używają.

Koniec części pierwszej

  1. W warunkach korzystania z usług asystentów programowania pojawia się często określenie “sugestie”. ↩︎
  2. Za kontekst mogą zostać uznane też wyodrębnione przeze mnie dane jak i pożądana struktura outputu, można też uznać to wszystko po prostu za prompt. Wymienienie tych elementów wprost miało na celu zwrócenie na nie uwagi. ↩︎
  3. Z opisu usługi GitHub Copilot ze strony GitHub Copilot | Microsoft Azure: “Funkcja GitHub Copilot jest obsługiwana przez modele generatywnej AI opracowane przez platformę GitHub, firmy OpenAI i Microsoft. Została ona przeszkolona na bazie tekstu języka naturalnego i kodu źródłowego z publicznie dostępnych źródeł, w tym kodu w repozytoriach publicznych w usłudze GitHub.”.
    Z opisu na stronie Tabnine: “Tabnine’s generative AI only uses open source code with permissive licenses for our Universal model trained on public code. The licenses are as follows: MIT, MIT-0, Apache-2.0, BSD-2-Clause, BSD-3-Clause, Unlicense, CC0-1.0, CC-BY-3.0, CC-BY-4.0, RSA-MD, 0BSD, WTFPL, ISC.”. ↩︎
  4. Nie sprawdzałem wszystkich państw świata, ale nie przebił się do mnie pogląd przeciwny. Poza tym najważniejsze jest, że taki jest dominujący pogląd w Polsce i USA. W tej właśnie kolejności. ↩︎
  5. Firma w rozumieniu potocznym, takim jak używano w “Psach” Pasikowskiego, a nie w takim jakie zdefiniowano w art.43(5) KC. ↩︎
  6. Pomijam tu specyfikę firm rozwijających open source. ↩︎
  7. Przekazanie inputu jest niezbędne do korzystania z asystenta programowania, dlatego w tym zakresie asystent musi mieć dostęp i uprawnienia do korzystania z inputu – stąd w warunkach korzystania z usługi licencje udzielane przez użytkownika na rzecz dostawcy usługi. ↩︎
  8. Jest to skrót myślowy. Naruszać cudze prawa mogą podmioty prawa np. ludzie i spółki korzystając z cudzego kodu. Kod nie będąc podmiotem, ale przedmiotem nie narusza prawa. ↩︎
  9. Osobami trzecimi prawnicy nazywają takie osoby, które nie są stronami relacji prawnej np. w umowie licencyjnej pierwszą stroną jest licencjodawca, drugą stroną jest licencjobiorca, a osobami trzecimi są wszystkie inne osoby np. faktyczny twórca licencjonowanego oprogramowania. Osoby trzecie (faktyczni twórcy) mogą zgłosić do nas roszczenia o zaprzestanie korzystania z oprogramowania i zapłatę odszkodowania, jeżeli licencjodawca, który upoważnił nas do korzystania z oprogramowania nie posiada praw do tego oprogramowania (np. dlatego, że nie nabył go od twórców). ↩︎
Jeżeli ciekawi Cię temat, którego nie opisałem albo masz dodatkowe pytania, napisz do mnie. Możesz też sprawdzić bazę wiedzy Kancelarii JDP.

Jedna odpowiedź do „Jakie problemy prawne generują asystenci pisania kodu i jak do tego podejść? ”

  1. […] Dziś część druga – opisująca rozwiązania. Kilka dni temu opublikowałem część pierwszą – opisującą problemy. […]

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *