aA

GNU GPL Wersja 2 – Licencja otwartego i wolnego oprogramowania

GNU GPL

Historia, którą dziś opowiem, zaczęła się dawno, dawno temu w epoce późnego Mainframe, kiedy pojawiły się już pierwsze komputery Commodore, Apple czy Spectrum, a 4 KB pamięci RAM było świadectwem bogactwa i mocy. W tych czasach młodzi, zdolni programiści, niezależenie od swoich poglądów, coraz częściej ścierali się z ograniczeniami zamkniętego przepływu informacji czy zakazów licencyjnych. Ówczesne licencje, tak jak większość dzisiejszych, ograniczały lub blokowały wymianę informacji pomiędzy firmami na temat oprogramowania i uzależniały klienta od swoich produktów. Jednocześnie nie uniknięto absurdalnych sporów dotyczących kradzieży, przed którymi prawo patentowe miało chronić. Choćby Bill Gates i Steve Jobs spierający się kto kogo „skopiował”, czy co się stało po usunięciu jednego przycisku.

Tematem stworzenia licencji chroniącej prawa twórców zajmowała się przez ponad dekadę grupa ludzi związanych z utworzonym w tym czasie Free Software Fundation (wśród nich słynny Richard Stallman). W połowie lat 80 dali oni podstawę kilku pomysłom, w tym idei copyleft. Korzystając z istniejących już licencji i wspomnianej idei, stworzyli pierwszą wersję licencji GNU GPL.

GNU GPL jest jedną z najpopularniejszych licencji programistycznych. Głównie ze względu na stworzenie dominującej części kodu systemów Linux na wersji 2. tej licencji. Obecnie w szerokim użyciu jest wersja druga i trzecia. Wersja druga jest skrótowo opisywana jako GPLv2 i tak będzie ona nazywana dalej w tekście. GPLv2 powstała w 1991 roku. Treść tej licencji to 6 stron A4 przy standardowym foncie 12pt.

Poniżej zamieściłem skrót licencji. Pisząc ten artykuł, odnoszę się tylko do oryginalnego tekstu angielskiego. Z wyjątkiem 11 i 12 punktu tekst jest napisany bardzo przystępnym językiem jak na licencję i choć nie jest w stanie przebić prostotą licencji WTFPL, to jest to jeden z najmilej napisanych dokumentów tego typu.

Preambuła opisuje w pierwszym akapicie cele powstania licencji GPLv2, tj. zagwarantowanie wolności kopiowania i zmieniania oprogramowania. Zwraca też uwagę na wykorzystanie tej licencji w większości programów Free Software Foundation. Porusza również kwestię wolności, a nie ceny – tak więc oprogramowanie na tej Licencji może być płatne. Cytując z tekstu preambuły – When we speak of free software, we are referring to freedom, not price. (ang. Kiedy mówimy o wolnym oprogramowaniu, odnosimy się do wolności, a nie do ceny). Preambuła podkreśla też główny powód wprowadzenia wersji 2. - ustosunkowanie się do kwestii patentów.

Punkt 0.

Punkt 0. (tak, numeracja sugeruje, że pisali to informatycy 🙂 ) opisuje, czego dotyczy licencja, a dotyczy ona każdego Programu, do którego autor załączy notę o objęciu dzieła licencją GPL, a także każdej jego dokładnej kopii lub dzieła bazującego na Programie włącznie z tłumaczeniami na inne języki. Jednocześnie zdefiniowano słowo Program w bardzo szeroki sposób.

Stworzono licencję nadającą się do innych zastosowań przez szerokie zdefiniowanie słowa Program. Przykładowo ten tekst można objąć licencją GPLv2. Istnieją też książki licencjonowane właśnie na licencji GNU GPL. Takie zdefiniowanie słowa Program sprawia, że pojawiają się liczne pytania. Na przykład, czym w świetle tej licencji są biblioteki, z których może korzystać Program i co za tym idzie, czy wykorzystanie przez Program biblioteki, jest dopuszczalne, jeśli korzysta ona z innej licencji? Czy aplikacja korzystająca z Programu jako biblioteki, jest dziełem pochodnym? Wykładnie rozumienia tej licencji w pierwszej kolejności dostarczyła i ukonstytuowała fundacja Free Software Foundation. Według niej tworzenie aplikacji z wykorzystaniem bibliotek na licencji GPL jest równoznaczne z przyjęciem przez aplikację licencji GPL. Takie wymagania stały się powodem równoległego powstania innej, bardziej liberalnej licencji – Lesser General Public License. Jej pierwsza wersja powstała w tym samym czasie co GPLv2. Dokładniejsze określenie wymagań związanych z bibliotekami były adresowane w następnej wersji licencji GPL.

Punkt 1.

Punkt 1. to opis warunków dystrybucji – Możesz swobodnie dystrybuować Program pod warunkiem umieszczenia noty o samej licencji i klauzulę o braku jakiejkolwiek gwarancji. Każdy, kto otrzyma Program, ma mieć dostęp do kopii licencji. Jest też wprost zapisane w treści licencji, że można pobierać opłaty za dystrybucję oprogramowania i można za opłatą świadczyć opiekę gwarancyjną dla Programu.

Zapis ten jest podstawą do działań komercyjnych dla produktów opartych na podstawie licencji GPL i wskazuje najpopularniejszy sposób prowadzenia biznesu – opieka gwarancyjna. W praktyce dokonuje się to poprzez potwierdzenie dodatkowej umowy do Programu.

Punkt 2.

Punkt 2. porusza kwestie pozwolenia na wprowadzanie zmian w Programie, w uzyskanych jego kopiach oraz tworzenie na ich podstawie dzieł pochodnych. Mówi także o trzech warunkach, które należy spełnić.

1. Należy zostawić informację o wprowadzonych zmianach wraz z datą.
2. Licencja GPL powinna obejmować całe dzieło pochodne, nawet jeżeli został wykorzystany fragment Programu na licencji GPL.
3. Jeżeli dzieło pochodne przy uruchomieniu wyświetla informację o licencji, to musi to być notatka o licencji GPL. Co więcej, należy zamieścić informację o braku gwarancji lub podmiocie, który udziela gwarancji we własnym zakresie, o możliwości redystrybucji dzieła na warunkach GPL oraz o tym, gdzie można zobaczyć pełną teść licencji.

Przykładowo, jeśli ten tekst byłby objęty licencją GPL, pisząc np. pracę licencjacką z wykorzystaniem tego tekstu lub kopiując jego część, należy go udostępnić na licencji GPL. Dlatego też mówiąc o licencji GPL, często określa się ją jako „wirusową”. Jednocześnie trzeba zaznaczyć, że uruchomienie programu na licencji GPL na systemie objętym inną licencją nie oznacza narzucenia licencji GPL.

Punkt 3.

Punkt 3. to opis wymagań dotyczących udostępniania kodu źródłowego. Należy bowiem zagwarantować dostęp do kodu źródłowego bez dodatkowej opłaty do udostępnianego Programu. Ewentualne koszty nośnika oraz wysyłki kodu źródłowego pokrywa podmiot, któremu udostępniany jest Program. Oczywiście w dobie internetu koszt przygotowania nośnika i wysyłki wynosi 0 zł.

Dzięki temu niemal każdy, kto zakupił lub otrzymał Program, może go ulepszać, przejąć nad nim opiekę czy stworzyć własną wersję zależnie od potrzeb – czyli tzw. fork.

Punkt 4.

Punkt 4. wprowadza zakaz kopiowania, dystrybucji oraz sublicencjonowania Programu w sposób niezgodny z GPLv2. Łamanie tego zakazu skutkuje odebraniem praw nadanych przez GPLv2, ale wszystkie pozostałe strony zachowują swoje prawa.

Punkt ten daje obronę przed osobami, które starają się uniemożliwić dostęp do kodu źródłowego Programu osobom, które pozyskały Program legalnie. Jawnie też nakreśla legalność wykorzystania oprogramowania niezależnie od zmiany zdania autora. Jest to kluczowy punkt do zabezpieczenia wolności. Dzięki temu ostatnia akwizycja Red Hat przez IBM obejdzie się bez długofalowych negatywnych konsekwencji dla użytkowników, Zawsze można przejść na wsparcie i aktualizacje od innej firmy, która dostarcza bliźniaczy produkt, np. firmy EuroLinux 😉

Punkt 5.

Punkt 5. – w razie braku akceptacji licencji nie wolno dystrybuować i modyfikować Programu lub dzieła pochodnego. Brak akceptacji jest niezgodny z prawem, więc jeśli dokonujesz dystrybucji lub kopiowania Programu, to akceptujesz postanowienia licencji.

W związku z tym nie wolno się tłumaczyć niewiedzą lub nieakceptowaniem warunków licencji. Warto zauważyć, że nie ujęto tu kwestii użytkowania Programu. FSF spokojnie przyjęła i dostosowała się do faktu, iż użytkownicy nie czytają licencji i niespecjalnie ich ona obchodzi.

Punkt 6.

Punkt 6. głosi, że odbiorca Programu lub pracy pochodnej otrzymuje licencję GPLv2 na tych samych prawach co licencjodawca. Nie wolno ograniczać praw odbiorcy, ale też nie ponosi się odpowiedzialności za nieprzestrzeganie licencji przez odbiorcę.

Free Software Fundation pisząc swoje licencje, bardzo często odnosi się do tworzenia społeczności, w której zapewnione są wyznawane przez nich wartości wolności i jej obrony. Sama licencja ma zapewnić te wolności każdemu, bez względu na poglądy czy pochodzenie, zachowując wszystkie 4 wartości wolnego oprogramowania. Wymaga to nadania egalitarnych praw i w taki właśnie sposób przygotowano tę licencję.

Punkt 7.

Punkt 7. – jeżeli z powodu jakichś zewnętrznych warunków, na przykład wyroku sądu nakazującego naruszenie warunków licencji GPLv2 (np. w związku z prawem lokalnym) licencjobiorca miałby naruszać warunki licencji, to nie może dystrybuować Programu.

W efekcie zapis ten czyni każdy Program/pracę/kod, na którym wymuszono by konieczność naruszenia zapisów licencji GLPv2, produktem z poważną wadą prawną i w rezultacie niesprzedawalnym. Instytucja, która chciałby „zamknąć” kod drogą sądową, nie otrzymuje dzięki temu satysfakcjonującego i jednoznacznego rozwiązania.

Punkt 8.

Punkt 8. informuje o tym, że licencjodawca może dołączyć listę krajów, w których nie wolno używać Programu z powodów ograniczeń patentowych lub lokalnego prawa, czyli omawianych w powyższym punkcie.

Na pierwszy rzut oka brzmi to jak zaprzeczenie całej idei wolności. Jenak, rozważając to w świetle punktu 7, chodzi tylko o zabezpieczenie wolności kodu na zasadach podobnych jak SELinux – wymuszenie łamania licencji w jednym miejscu/kraju nie zwalnia z postanowień licencji w innych krajach i nie blokuje w nich dystrybucji.

Punkt 9.

Punkt 9. to nota na temat możliwych przyszłych wersji licencji GPL i informacja o opcji dodania formuły, która umożliwia zmianę wersji GPL na późniejszą lub dowolne dobieranie wersji GPL zależnie od tego, kto ją aktualnie czyta. Zawiera zapewnienie, że nowa wersja będzie pisana w tym samym duchu i będzie różnić się od poprzedniej w detalach.

Tutaj dwie uwagi:

  • „różnica w detalach” między wersją 2 a wersją 3... cóż, wersja 3 jest dwukrotnie dłuższa od 2. Może i jest to detal, ale w pełni uzasadnia on konieczność napisania oddzielnego artykułu o GPLv3;
  • różnice między wersją 2 a wersją 3 powodują, że obie licencje funkcjonują od lat jednocześnie obok siebie. Przykładowo sam Linux Torwalds obstawał przy GPLv2 i na tej licencji jest pisany Kernel, ale spora część programów zawartych w Linux jest pisana na wersji 3.

Punkt 10.

Punkt 10. informuje, co robić w razie chęci połączenia Programu opisanego licencją GPL z innym dziełem. Potrzebna jest do tego zgoda autora tego dzieła.

GPLv2 na skutek punktu 2 nie może współistnieć w jednym dziele z inną licencją. To, co najprawdopodobniej będzie omawiane w ramach rozmowy z drugim autorem, to de facto zmiana licencji na GPL lub szukanie sposobu na współdziałanie dwóch oddzielnych programów. Kwestia współdziałania programów rodzi sporo pytań… Generalnie autorzy założyli, że ludzie będą musieli sami się tutaj rozmówić. Zablokowano jednak możliwość szantażowania kogokolwiek narzuceniem licencji GPL na cały program wbrew woli autora. Istnieją inne licencje, które mogą do tego posłużyć. Nawet Google się ich boi 😉 ale to temat na inny artykuł.

Punkt 11. i 12.

Punkt 11. i 12. – jest to napisane twardym, prawniczym językiem zapewnienie o braku jakiekolwiek gwarancji czy możliwości roszczeń użytkownika, chyba że byłyby one nałożone przez oddzielną umowę lub lokalne prawo.

Bez dodatkowej umowy, w jakiejkolwiek formie, GPL jest licencją darmową i mającą zapewnić wolność, również dla piszącego kod. Poza tym nie ukrywajmy, że takie zrzeczenia się odpowiedzialności są standardowymi praktykami prawniczymi.

Cała licencja była i jest bardzo niezwykła i ciekawa w swoich konsekwencjach: oto niektóre z nich:

  •  możliwość przejęcia produktu/klientów/rozwoju bez sądu w razie łamania licencji, zakończenia działalności przez producenta lub słabej jakości usług firmy dostarczającej oprogramowanie;
  • większość spraw przez długi czas załatwiana była pozasądowo – ponad 10 lat bez sprawy sądowej;
  • skuteczna ochrona wolności kodu przez około 15 lat (omówienie, czego GPLv2 nie przewidział, będzie tematem następnego artykułu);
  • twórca Programu może korzystać jednocześnie z różnych licencji, ale kontrybutorzy już nie.

Podsumowując

To, co przemawia za GPLv2 to:

  • bardzo przyjazny i jasny język;
  • autorzy wyjaśniają na podstawie prostych przykładów, jak mają działać lub czemu mają służyć niektóre zapisy;
  • standardowa licencja Kernela – Linus Torvalds nie może się mylić, obstając przy niej 😉
  • chcesz zarabiać na wolnym oprogramowaniu? Proszę bardzo, Free Software Fundation zachęca do tego.

Ewidentne wady GPLv2

  • zamierzona niekompatybilność z innym licencjami – w jednym programie nie można skutecznie połączyć GPLv2 z innymi licencjami FSF lub Open Source.
  • licencja ta nie zapobiegła problemom związanym ze współpracą Novella (właściciela SUSE) i Microsoftu, która była odbierana wówczas bardzo negatywnie. Skutki tej sprawy stały się głównym impulsem do napisania kolejnej wersji GPL.

Cechy GPLv2

  • GPL nie pozwala na wprowadzanie opatentowanych elementów do kodu programu;
  • pozwala na działania uniemożliwiające uruchomienie zmodyfikowanego programu na danym sprzęcie. Niektóre firmy i osoby uznają lub uznawały to za dobrą praktykę, a inni twierdzą, że te działania są szkodliwe lub złe moralnie i sprzeczne z duchem licencji. Co więcej, istnieją dobre przesłanki, żeby takie rozwiązania stosować np. dla oprogramowania krytycznego, w którym trudno uzyskać jakiekolwiek inne zabezpieczenie np. ze względu na fizyczny dostęp do maszyny osób trzecich.

Celem powstania licencji GPLv2 była obrona idei przyświecających ruchowi Free Software Fundation. Licencja ta bez większych problemów przez lata spełniała tę funkcję. Nie wzięto jednak pod uwagę możliwości zawarcia umowy między dwoma firmami, które obchodziły GPLv2, zakazując pozywania się za wykorzystanie kodu swoich produktów. Tym sposobem byłoby możliwe tak znaczne wymieszanie wolnego i zamkniętego oprogramowania, że utrzymanie wyznaczników wolności opisanych przez FSF stałoby się praktycznie niemożliwe.

Wersja GPLv3 będzie tematem kolejnego artykułu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *