Wszystkie zagadnienia: Teoria
podstawowy licencjeGNU GPLopen sourcematura podstawowa z informatyki

GNU GPL i wolne oprogramowanie

Cztery wolności wolnego oprogramowania, zasada copyleft w licencji GNU GPL, prawo do sprzedaży kodu i różnica między programem wolnym a darmowym.

01

Opis

Wolne oprogramowanie to nie to samo co darmowe. Chodzi o swobodę, a nie o cenę – wolny program można sprzedawać, a darmowy bywa całkowicie zamknięty.

Wolność definiuje się przez cztery uprawnienia: uruchamiania programu w dowolnym celu, badania jego działania i dostosowywania go do własnych potrzeb, rozpowszechniania kopii oraz publikowania własnych ulepszeń. Dwa z nich wymagają dostępu do kodu źródłowego – bez niego nie da się ani zbadać programu, ani go zmienić.

GNU GPL to najbardziej znana licencja wolnego oprogramowania. Jej cechą charakterystyczną jest zasada copyleft: program powstały na bazie kodu na GPL również musi być udostępniony na GPL. Wolność jest więc dziedziczona – nie da się wziąć kodu GPL, zamknąć go i sprzedawać bez źródeł.

Cztery zasady wystarczą, żeby odpowiedzieć na większość pytań o tę licencję:

  • Wolność opisuje prawa, nie cenę. Program na GNU GPL wolno sprzedać, wolno za niego wziąć pieniądze i wolno używać go w firmie do zarabiania. Zdanie „skoro to wolne oprogramowanie, to musi być za darmo" jest fałszywe – darmowość jest częstym skutkiem, a nie warunkiem licencji.
  • Kod źródłowy jest warunkiem, nie dodatkiem. Wolność badania i wolność wydania własnej wersji istnieją tylko wtedy, gdy odbiorca dostaje kod, z którego program został zbudowany – jak powstaje z niego program do uruchomienia, opisuje hasło od kodu źródłowego do kodu maszynowego.
  • Copyleft działa dopiero przy przekazaniu programu dalej. Dopóki trzymasz zmienioną wersję u siebie, nikomu nic nie jesteś winien. Obowiązek dołączenia kodu i tej samej licencji powstaje w momencie, w którym ktoś inny dostaje od ciebie program.
  • Licencja nie znosi praw autorskich – ona z nich korzysta. Autor pozostaje autorem i to właśnie dlatego może narzucić warunki; samo prawo autorskie w informatyce opisuje osobne hasło.

Pozostałe modele licencyjne – freeware, shareware, adware, OEM, subskrypcję i domenę publiczną – porządkuje hasło o rodzajach licencji. Licencje dla treści, czyli zdjęć, tekstów i nagrań, to zupełnie inna rodzina i opisuje je hasło o Creative Commons; GNU GPL jest licencją na program, nie na utwór multimedialny.

02

Jak to działa

Mechanizm GPL łatwiej zrozumieć, gdy się zauważy, że licencja nie jest naklejką ani deklaracją dobrych intencji, tylko umową dopisaną do kodu. Autor programu ma do niego prawa autorskie i normalnie mógłby zabronić kopiowania. Zamiast tego mówi: „pozwalam ci na wszystko z tej listy, ale pod jednym warunkiem". Ten warunek nazywa się copyleft.

Warunek brzmi: jeśli przekazujesz program dalej – w postaci oryginalnej albo zmienionej – odbiorca musi dostać te same cztery wolności co ty. W praktyce znaczy to trzy rzeczy naraz. Po pierwsze, razem z programem trzeba dać dostęp do kodu źródłowego. Po drugie, trzeba dołączyć tekst licencji i informację o autorach. Po trzecie, nie wolno dokładać własnych ograniczeń – nie możesz na przykład zakazać odbiorcy dalszego kopiowania, choćbyś bardzo chciał.

Dlaczego z wolności „rozpowszechniaj własne wersje" musi wynikać warunek zachowania licencji? Bo bez niego ta wolność zjadłaby samą siebie. Gdyby wolno było wziąć wolny program, dopisać kilka funkcji i wydać całość z zamkniętym kodem, to każdy popularny program wolnego oprogramowania po kilku latach istniałby wyłącznie w zamkniętych odmianach. Użytkownik takiej odmiany nie mógłby jej już zbadać ani poprawić – wolność zniknęłaby dokładnie tam, gdzie zaczyna być potrzebna. Copyleft to zabezpieczenie przed tym scenariuszem: wolność jest przekazywana razem z kodem i nie da się jej po drodze zgubić.

Stąd bierze się podział licencji otwartych na dwie rodziny:

  • Licencje copyleft, na przykład GNU GPL – praca pochodna musi zostać na tej samej licencji. Autor chce, żeby wolność się rozprzestrzeniała.
  • Licencje permisywne, na przykład MIT czy BSD – pozwalają wykorzystać kod również w zamkniętym produkcie, wymagają zwykle tylko zachowania informacji o autorstwie. Autor chce, żeby jego kod trafił do jak największej liczby programów, i godzi się, że część z nich będzie zamknięta.

Wybór między nimi to świadoma decyzja autora, a nie różnica w „poziomie otwartości". Oba modele dają pełny dostęp do kodu – różnią się tylko tym, co wolno zrobić następnej osobie w łańcuchu.

Warto też zapamiętać, gdzie ten mechanizm się nie włącza. Samo uruchamianie programu nie jest rozpowszechnianiem, a sprzedaż nie jest naruszeniem. Naruszeniem jest dopiero przekazanie programu bez kodu albo na zmienionych warunkach.

03

Wizualizacja

Błąd parsowania wizualizacji.

04

Tabela

Cztery wolności i co z nich wynika w praktyce
Wolność lub jej skutekCo znaczyCzego wymagaPrzykład
Wolność 0 – uruchamianieużywasz programu do czego chcesz, także zarobkowotylko posiadania kopii programuten sam edytor pracuje w domu i w biurze projektowym
Wolność 1 – badanie i zmianasprawdzasz, jak program działa, i przerabiasz go pod siebiedostępu do kodu źródłowegodopisujesz obsługę własnego formatu pliku
Wolność 2 – rozpowszechnianie kopiiprzekazujesz program dalej w niezmienionej postacidołączenia licencji i informacji o autorachnagrywasz koledze pendrive z dystrybucją Linuksa
Wolność 3 – rozpowszechnianie własnych wersjipublikujesz program po swoich zmianachdołączenia kodu i tej samej licencjiwypuszczasz własną odmianę programu z nowymi funkcjami
Kod źródłowy jako warunekbez kodu wolności 1 i 3 są martwewydania źródeł każdemu, kto dostał programproducent dołącza archiwum ze źródłami do pobrania
Copyleft – dziedziczenie licencjipraca pochodna zostaje na GNU GPLprzekazania tych samych wolności odbiorcyfirma nie może zamknąć przerobionego przez siebie kodu
Prawo do sprzedażywolno pobrać opłatę za kopię, nośnik i wsparciewydania kodu każdemu nabywcydystrybucja sprzedawana z rocznym wsparciem technicznym
Brak obowiązku publikacji zmian dla siebieprzeróbki używane wewnętrznie zostają prywatneniczego – nie ma zgłoszenia ani rejestruszkoła przerabia program tylko na własne potrzeby
Zakaz dodatkowych ograniczeńnie wolno dokładać warunków ponad te z licencjipozostawienia odbiorcy pełnego kompletu wolnościnie możesz zabronić nabywcy dalszego kopiowania
Autorstwo zostaje przy twórcylicencja nie jest zrzeczeniem się praw autorskichzachowania not o autorach i tekstu licencjiw plikach źródłowych zostaje nagłówek z autorem
05

Porównanie

CechaGNU GPL (copyleft)MIT i BSD (permisywne)
Dostęp do kodu źródłowegozawsze, dla każdego odbiorcy programuzawsze, kod jest publikowany otwarcie
Modyfikacja kodudozwolona bez ograniczeńdozwolona bez ograniczeń
Praca pochodnamusi być wydana na tej samej licencjimoże być wydana na dowolnych warunkach
Zamknięcie kodu w produkcieniedozwolone przy rozpowszechnianiudozwolone, kod pochodny bywa zamknięty
Sprzedaż programudozwolona, razem z kodem źródłowymdozwolona, także bez kodu wersji pochodnej
Główny obowiązekdołączyć kod i tę samą licencjęzachować informację o autorstwie
Cel autorawolność ma się rozprzestrzeniaćkod ma trafić do jak największej liczby programów
Typowy przykładjądro systemu Linuxbiblioteki dołączane do programów komercyjnych
Nazwa angielskacopyleft license (GNU General Public License)permissive license
06

Typowe błędy

Wolne wzięte za darmowe. Pomyłka bierze się z angielskiego słowa „free", które znaczy naraz „wolny" i „darmowy". Program na GNU GPL wolno sprzedawać, a program darmowy bywa całkowicie zamknięty – freeware to gotowy plik wykonywalny bez kodu, więc nie wolno go zbadać, przerobić ani wydać we własnej wersji. Test na jedno zdanie: pytanie o cenę rozstrzyga, ile płacisz, a pytanie o kod rozstrzyga, czy program jest wolny. To dwie niezależne osie i ustawia je obok siebie hasło o rodzajach licencji.

Przekonanie, że na GPL nie wolno zarabiać. W arkuszu próbnym z 2014 roku zdanie „licencja GNU GPL nie zezwala na użytkowanie zarobkowe" jest w kluczu oznaczone jako fałsz – i to jest odpowiedź wprost na tę wątpliwość. Wolno używać takiego programu w firmie, wolno sprzedawać kopie, wolno brać pieniądze za wdrożenie, szkolenia i wsparcie. Jedyne, czego nie wolno, to sprzedać zmienioną wersję bez kodu źródłowego. Uczeń, który zapamięta „GPL to znaczy za darmo", odpowie źle na to zadanie i na każde podobne.

GPL uznana za brak praw autorskich. Zdanie „na GPL nie ma praw autorskich, więc mogę robić, co chcę" myli dwie różne rzeczy. Autor programu na GNU GPL zachowuje pełne prawa autorskie – i właśnie dlatego może w ogóle narzucić warunki licencji. Sytuacja, w której praw majątkowych już nie ma, to domena publiczna, a nie GPL. Praktyczny skutek różnicy: z programu w domenie publicznej wolno zrobić zamkniętą wersję, a z programu na GPL – nie.

Przekonanie, że każdą zmianę trzeba natychmiast opublikować. Nie ma czegoś takiego jak obowiązek zgłaszania poprawek autorowi ani rejestru zmienionych wersji. Obowiązek wydania kodu powstaje dopiero w chwili, w której przekazujesz program komuś innemu – firma używająca własnej przeróbki wyłącznie na swoich komputerach nie musi pokazywać nikomu ani jednej linijki.

GPL pomylona z licencjami permisywnymi typu MIT. Obie rodziny dają kod źródłowy i obie pozwalają go zmieniać, więc łatwo uznać je za to samo. Różnica pojawia się dopiero przy pracy pochodnej: kod na licencji MIT wolno wbudować w zamknięty produkt komercyjny, a kod na GNU GPL – nie, bo cały wynik musi wtedy zostać wydany na GPL. Dlatego samo określenie „open source" nie wystarcza jako odpowiedź na pytanie o warunki.

07

Zapamiętaj

  • Wolne oprogramowanie dotyczy swobody, nie ceny – wolny program wolno sprzedawać i wolno na nim zarabiać.
  • Cztery wolności to: uruchamianie w dowolnym celu, badanie i zmienianie, rozpowszechnianie kopii, rozpowszechnianie własnych wersji.
  • Dostęp do kodu źródłowego jest warunkiem koniecznym – bez niego wolność badania i wolność wydania własnej wersji nie istnieją.
  • Copyleft w GNU GPL wymusza, żeby praca pochodna też była wydana na GPL, razem z kodem.
  • Obowiązek wydania kodu powstaje dopiero przy rozpowszechnianiu programu, nie przy jego używaniu ani przy zmianach robionych u siebie.
  • GPL nie znosi praw autorskich – opiera się na nich; brak praw majątkowych to domena publiczna, a nie GPL.
  • Licencje permisywne, jak MIT czy BSD, pozwalają zamknąć kod pracy pochodnej w produkcie komercyjnym; GPL na to nie pozwala.
08

Sprawdź się

Trzy programy rozpowszechniane na różnych warunkach:

ProgramLicencjaCo dostaje użytkownik
Jądro systemu LinuxGNU GPLprogram razem z pełnym kodem źródłowym
Biblioteka KanwaMITkod, który wolno wbudować w zamknięty produkt
Odtwarzacz Sonatafreewaresam plik wykonywalny, bez kodu źródłowego

Uzupełnij odpowiedzi:

PytanieOdpowiedź
Jak nazywa się zasada, przez którą wersja pochodna musi zostać na tej samej licencji?
Co jest warunkiem koniecznym wolności badania i zmieniania programu?
Jaką licencję ma program darmowy, ale z zamkniętym kodem?
Czy wolno pobrać opłatę za kopię programu na GNU GPL?
Czy trzeba opublikować zmiany, z których korzystasz tylko u siebie?
Która z dwóch licencji pozwala zamknąć kod pracy pochodnej: GPL czy MIT?
Jak nazywa się licencja GNU słabsza od GPL, dopuszczająca łączenie z zamkniętym kodem?
Które jądro systemu operacyjnego wydano na licencji GNU GPL?

Wolności wolnego oprogramowania jest , a licencja, która wymusza, żeby wersja pochodna została wydana na tych samych warunkach, nosi nazwę .

09

Najczęściej zadawane pytania

Czy na wolnym oprogramowaniu można zarabiać?

Tak. Sprzedaje się wsparcie, wdrożenia, szkolenia i wersje z gwarancją, a także same kopie programu. Sam kod pozostaje dostępny dla każdego, kto program otrzymał. Klucz z arkusza próbnego 2014 odrzuca zdanie, że GPL nie zezwala na użytkowanie zarobkowe.

Czym różni się open source od wolnego oprogramowania?

Praktycznie obejmują te same programy. Różnica leży w akcencie: wolne oprogramowanie podkreśla swobodę użytkownika, open source – zalety otwartego modelu tworzenia. W zadaniach maturalnych oba określenia bywają używane wymiennie.

Czy muszę publikować zmiany, jeśli używam programu na GPL tylko u siebie?

Nie. Obowiązek udostępnienia kodu powstaje dopiero przy rozpowszechnianiu zmodyfikowanej wersji na zewnątrz. Wewnętrzne przeróbki w firmie czy w szkole mogą pozostać prywatne bez końca.

Czy licencja GNU GPL oznacza, że program nie ma autora i nie chroni go prawo autorskie?

Nie. Autor zachowuje pełne prawa autorskie i to dzięki nim może narzucić warunki licencji. GPL jest umową zbudowaną na prawie autorskim, a nie jego zniesieniem. Brak praw majątkowych to domena publiczna – zupełnie inna sytuacja.

Co się stanie, jeśli wbuduję kod na GPL do własnego zamkniętego programu?

Dopóki niczego nie rozpowszechniasz, nic. W chwili, w której przekażesz taki program komuś innemu, złamiesz warunki licencji, bo powstała praca pochodna, która powinna być wydana na GPL razem z kodem. Wyjściem jest albo otwarcie własnego kodu, albo użycie biblioteki na licencji permisywnej.

Czym GNU GPL różni się od licencji MIT?

Obie dają kod źródłowy i pozwalają go zmieniać. Różnica dotyczy pracy pochodnej: kod na MIT wolno wykorzystać także w zamkniętym produkcie komercyjnym, wystarczy zachować informację o autorstwie. Kod na GPL wymusza, żeby cała wersja pochodna też była na GPL.

Czy istnieje więcej niż jedna wersja licencji GNU GPL?

Tak. W użyciu są przede wszystkim GPL w wersji 2 i w wersji 3, a obok nich LGPL, czyli wariant złagodzony, przeznaczony dla bibliotek. Na maturze wystarczy znać samą zasadę copyleft – numer wersji nie był dotąd przedmiotem pytania w arkuszach zebranych na portalu.

Przećwicz w zadaniach maturalnych

Do tego hasła nie mamy jeszcze przypisanych pojedynczych zadań. Cały spis zadań maturalnych z tego działu jest tutaj:

Zadania z działu: Teoretyczne

↗

Powiązane zagadnienia