Uprawnienia, choć dają użytkownikowi pewną swobodę w dysponowaniu oprogramowaniem komputerowym, w praktyce poddane są wielu ograniczeniom technologicznym. Programiści zwracają uwagę na to, że bez znajomości kodu źródłowego nie mogą zadziałać uprawnienia takie jak chociażby samodzielne stworzenie aktualizacji programu, a przecież ustawa nie dopuszcza dekompilacji kodu w takim celu
Co wolno legalnemu użytkownikowi programu komputerowego
Uprawnienia legalnego użytkownika można podzielić na dwie kategorie – uprawnienia o charakterze względnym oraz o charakterze bezwzględnym. Tylko pierwsze mogą zostać umownie wyłączone, co w praktyce niezwykle często ma miejsce. Z kolei umowne zastrzeżenie, zakazujące wykonywania uprawnień o charakterze bezwzględnym, skutkuje nieważnością postanowień umownych zawierających takie wyłączenie.
Do względnych uprawnień zalicza się uprawnienie do zwielokrotniania programu komputerowego oraz do wprowadzania w nim zmian, lecz tylko wówczas, gdy są one niezbędne do korzystania z programu zgodnie z jego przeznaczeniem. W doktrynie podnosi się, że w zakres takich czynności mogą wchodzić np. zwielokrotnianie programu w pamięci RAM będące zwykłą częścią procesu niezbędnego do uruchomienia i korzystania z programu, poprawianie błędów, samodzielna aktualizacja programów pod kątem standardów lub wymogów, czy też nowych wersji sprzętu komputerowego lub systemu operacyjnego, integrowanie programu z innymi stosowanymi przez danego dysponenta, etc. Należy przy tym pamiętać, iż w każdej sytuacji konieczne będzie rozważenie „niezbędności” powyższych czynności do korzystania z programu komputerowego zgodnie z jego przeznaczeniem. Względne obowiązywanie przepisu powoduje, iż niektóre umowy mogą wprowadzać przykładowo wymóg uzyskania zgody na wskazane powyżej czynności lub wprost przeciwnie – mogą rozszerzyć zakres czynności niewymagających zgody. Z ostrożności zatem zawsze warto sprawdzić, czy twórca lub dystrybutor oprogramowania skorygował względne uprawnienia legalnego użytkownika wskazane w ustawie o prawie autorskim i prawach pokrewnych.
Czego nie wolno twórcy oprogramowania komputerowego
Szerszą grupę stanowią uprawnienia legalnego użytkownika o charakterze bezwzględnym, których nie wolno zmienić twórcy oprogramowania czy dystrybutorowi.
Pierwszym z nich, zyskującym na znaczeniu w kontekście coraz powszechniejszego stosowania bezprzewodowych dysków dokonujących automatycznej archiwizacji, jest uprawnienie do sporządzenia kopii zapasowej. Podobnie jak w przypadku uprawnień względnych, tak i tutaj konieczne jest, aby sporządzenie kopii było niezbędne do korzystania z programu komputerowego zgodnie z jego przeznaczeniem. Powszechnie przyjmuje się jednak, że czynność taka w zasadzie zawsze jest niezbędna, chyba że twórca oprogramowania lub dystrybutor wiarygodnie zapewnia dostarczenie nowej kopii w miejsce zniszczonej lub utraconej, czy też egzemplarz utrwalony jest na nośniku niemożliwym do zniszczenia. Należy jednak pamiętać, iż w pojęciu kopii zapasowej nie mieści się zainstalowanie programu z pojedynczą licencją na dwóch komputerach, nawet jeśli nie są one używane jednocześnie.
Kolejne uprawnienie nie ma zbyt dużej doniosłości praktycznej, jako że – w mojej ocenie – odnosi się do sfery niechronionej prawami autorskimi. Określić je można jako prawo do analizy programu komputerowego. Polega ono na tym, iż osoba posiadająca prawo do korzystania z egzemplarza programu komputerowego może obserwować, badać i testować funkcjonowanie programu komputerowego, pod warunkiem jednak, że dokonuje tego w trakcie wprowadzania, wyświetlania, stosowania, przekazywania lub przechowywania programu komputerowego i posiada do tych czynności uprawnienie. Rezultaty analizy nie są ograniczone przepisami prawa autorskiego i mogą zostać wykorzystane w każdy sposób zgodny z wolą analizującego.
Kod źródłowy a kod wynikowy
Aby zrozumieć istotę trzeciego z przewidzianych przez ustawę bezwzględnych uprawnień użytkownika oprogramowania komputerowego, należy pochylić się przez chwilę nad czysto techniczną kwestią, jaką jest proces pisania programu komputerowego. Programista tworzy oprogramowanie posługując się komendami, których wygląd i brzmienie zależą od zastosowanego języka programowania. Choć kod zapisany w tej postaci może zostać z łatwością odczytany przez człowieka, który jest w stanie określić na jego podstawie, jak dany program ma działać, to niestety jest on całkowicie niezrozumiały dla maszyny. Ta pierwotna postać programu nazywa się kodem źródłowym i aby komputer mógł ją uruchomić konieczne jest jej przekształcenie w kod wynikowy (maszynowy), który jest zrozumiały dla maszyny. Proces, w którym dokonuje się takie przekształcenie nazywa się kompilacją kodu.
Otrzymując od dostawcy gotowy program komputerowy, użytkownik dostaje go w formie kodu wynikowego, którego programista nie jest w stanie odczytać, a więc nie wie jakie dokładnie rozwiązania zostały zastosowane. Możliwe jest jednak odwrócenie procesu kompilacji, na skutek czego kod maszynowy przyjmie znów postać kodu źródłowego. Proces ten nazywa się dekompilacją, zaś piśmiennictwo prawnicze określa go mianem odtworzenia wstecznego treści programu komputerowego. Zdecydowaną wadą dekompilacji jest fakt, iż jest ona niezwykle czasochłonna, a przez to także kosztowna. Otrzymane wyniki mogą czasami różnić się w pewnym zakresie od oryginalnego kodu źródłowego, zawierając nieścisłości i błędy.
Dekompilacja jest co do zasady niedozwolona, jednak ustawa o prawie autorskim i prawach pokrewnych przewiduje takie uprawnienie w ściśle określonych przypadkach dla licencjobiorcy, innej osoby uprawnionej do korzystania z egzemplarza programu komputerowego lub osoby działającej na ich rzecz. Warunkiem jej dopuszczalności jest niezbędność uzyskania informacji koniecznych do osiągnięcia współdziałania niezależnie stworzonego programu komputerowego z innymi programami, jeżeli informacje takie nie były wcześniej łatwo dostępne. Pewne wątpliwości budzi określenie znaczenia „łatwej dostępności” informacji – nie jest bowiem jasne, czy informacja jest łatwo dostępna, jeżeli jest udzielana odpłatnie lub z istotnymi ograniczeniami przez podmiot uprawniony.
Późniejsze wykorzystanie wyników dekompilacji jest ustawowo ograniczone. Nie mogą one być wykorzystane w celu innym niż osiągnięcie współdziałania z niezależnie stworzonym programem komputerowym, przekazane osobom innym, niż jest to konieczne dla osiągnięcia tego efektu oraz wykorzystane do tworzenia, rozwijania lub wprowadzania do obrotu programu, który – najprościej ujmując – jest w istotny sposób podobny do programu zdekompilowanego.
Powyższe uprawnienia, choć dają użytkownikowi pewną swobodę w dysponowaniu oprogramowaniem komputerowym, w praktyce poddane są wielu ograniczeniom technologicznym. Programiści zwracają uwagę na to, że bez znajomości kodu źródłowego nie mogą zadziałać uprawnienia takie jak chociażby samodzielne stworzenie aktualizacji programu, a przecież ustawa nie dopuszcza dekompilacji kodu w takim celu. O ile fakt ten nie ma zbyt doniosłego znaczenia w przypadku użytkowników indywidualnych, o tyle duże podmioty gospodarcze powinny zawsze mieć go na uwadze. Niezwykle istotne jest indywidualne negocjowanie postanowień umów licencyjnych, tak aby osiągnąć równowagę pomiędzy ochroną interesów twórców a uzasadnionymi potrzebami nabywców oprogramowania.