Trzydzieści lat temu mogliśmy np. obejrzeć w MTV teledysk do piosenki R.E.M. — Losing My Religion i na tej podstawie zdecydować, czy chcemy kupić całą płytę, zadzwonić do znajomego z telefonu stacjonarnego i poprosić o podwózkę do najbliższego sklepu muzycznego oraz mieć nadzieję, że będą ją mieli na stanie. Dziś, za pomocą telefonu, możemy zwyczajnie wybrać klip, który chcemy obejrzeć, a nawet wysłać znajomemu odnośnik do niego w wiadomości tekstowej. Wynika to w dużej mierze z dwóch wydarzeń, które miały miejsce w 1991 roku: wydania jądra systemu Linux i premiery drugiej wersji licencji GNU General Public License (GPLv2).
Jest to pewnie zbyt duże uproszczenie, ale faktem jest, że ogromna część technologii, od których jesteśmy dziś zależni, jest bezpośrednio związana z tymi wydarzeniami. Cofnijmy się o krok, aby porozmawiać o nich i o możliwościach, jakie przed nami otworzyły.
Co to jest GPL?
W najbardziej podstawowym ujęciu licencja GPL (podobnie jak inne licencje) określa, co można, a czego nie można robić z danym dziełem. Zazwyczaj takim dziełem jest oprogramowanie — np. jądro systemu Linux — ale równie dobrze może to być coś zupełnie innego, chociażby dokumentacja.
To, czym wyróżnia się GPL — a także inne licencje bezpłatnego i otwartego oprogramowania (ang. free and open-source software, FOSS) — to fakt, że wykorzystuje ona prawo autorskie do maksymalizacji praw przyznawanych użytkownikom. To całkowicie odmienne podejście od typowego zarządzania prawami, w którym to prawo autorskie ogranicza to, co ludzie mogą robić z oprogramowaniem lub innymi dziełami i zdecydowaną większość praw przyznaje autorowi.
Jeśli kiedykolwiek czytaliście umowę licencyjną użytkownika końcowego (EULA), pewnie wiecie, że zwykle jest ona najeżona punktami, które mówią o tym, czego nie można, a co można robić z danym oprogramowaniem — w bardzo ograniczony sposób. Możemy w niej np. przeczytać, że nie można rozpowszechniać danego oprogramowania lub że można je uruchamiać tylko na jednej maszynie lub na jednym typie maszyn.
GPL natomiast ma na celu nadanie konkretnych praw odbiorcom dzieła, aby chronić to, co założyciel GNU, Richard Stallman, określił mianem „czterech wolności”.
Cztery wolności GPL
Bezpłatne oprogramowanie daje użytkownikom cztery „wolności”: wolność do wykonywania, kopiowania, badania/ulepszania i rozpowszechniania dzieła.
W skrócie oznacza to, że jeśli otrzymamy program na licencji GPL, możemy uruchamiać go bez ograniczeń. Możemy skopiować go na urządzenie znajomego, możemy przy tym go modyfikować i ulepszać, a następnie rozpowszechniać wprowadzone zmiany.
Otrzymaliście kopię systemu Fedora Workstation i chcecie ją uruchomić? Śmiało. Jest to jawnie dozwolone przez GPL (oraz inne licencje FOSS dołączone do Fedory). Chcecie zrobić kopię systemu i dać ją znajomemu? Nie ma problemu. Chcecie zagłębić się w kod i zobaczyć, jak działa? To też jest dozwolone. Naprawiliście błąd w oprogramowaniu i chcecie podzielić się rozwiązaniem? Do dzieła. Jest jednak pewien haczyk: rozpowszechnianie oprogramowania na licencji GPL wiąże się z dodatkowymi obowiązkami.
Ochrona praw użytkowników na mocy GPL
GPL nie jest jedyną licencją, która przekazuje użytkownikom tego typu swobody. Jest to jedna z wielu istniejących licencji FOSS. Warto zwrócić uwagę na rozróżnienie pomiędzy określeniami „bezpłatne” i „otwarte”. To, co czyni licencję GPL tak ciekawą, to charakter tzw. licencji wzajemnej.
Co do zasady licencja GPL zakłada, że te same prawa, które otrzymaliście na jej mocy, mają być przekazywane osobom, wśród których rozpowszechniacie dane dzieło. W efekcie nie można np. otrzymać oprogramowania na licencji GPLv2, takiego jak jądro Linuksa, wprowadzić w nim zmian, a następnie rozpowszechnić z inną licencją, która ograniczyłaby możliwość robienia tego samego przez innych. GPL to twórczy sposób wykorzystania praw autorskich, który zachęca do używania, studiowania, modyfikowania i rozpowszechniania oprogramowania — zamiast próbować ograniczać podobne czynności, jak to zwykle bywa w przypadku praw autorskich.
GPLv2 nie jest jedyną licencją FOSS, z jaką mamy tu do czynienia. Nie jest to nawet jedyna wersja GPL związana z Linuksem, ale to już odrębna historia. Organizacja Open Source Initiative opracowała wykaz licencji, które pasują do definicji oprogramowania open source.
Licencje permisywne a licencje copyleft
Licencje FOSS często dzieli się na licencje permisywne i licencje typu copyleft. Jak już wspominaliśmy, licencje copyleft wymagają wzajemnego dzielenia się wprowadzanymi zmianami podczas rozpowszechniania oprogramowania na licencji GPL lub innych licencjach wzajemnych. W tym przypadku kod jest udostępniany na zasadach GPL i jego użytkownik jest zobowiązany do udostępniania swoich zmian i ulepszeń takiego kodu w przypadku jego rozpowszechniania.
Warto przy tym zwrócić uwagę, że ten wymóg zaczyna obowiązywać, gdy oprogramowanie GPL jest rozpowszechniane, a nie wtedy, gdy dokonywane są jakiekolwiek zmiany. Jeśli zatem pobieracie oprogramowanie i modyfikujecie je na własny użytek lub w celach edukacyjnych, ale nie rozpowszechniacie go, nie jesteście zobowiązani do rozpowszechniania takich zmian ani udostępniania ich komukolwiek w inny sposób.
Niemniej, GPLv2 wymaga, aby zmiany te były udostępniane na tych samych warunkach, jeśli zdecydujemy się na dalsze rozpowszechnianie zmodyfikowanego przez nas oprogramowania. Nie można zatem wprowadzić zmian do oprogramowania GPL napisanego przez kogoś innego i ponownie licencjonować go na podstawie licencji własnościowej lub nawet innej licencji FOSS.
Z drugiej strony, licencje permisywne pozwalają na rozpowszechnianie dzieł bez dzielenia się zmianami. Dobry przykład stanowi tutaj licencja MIT, która pozwala nawet na dystrybucję dzieł na licencji prawnie zastrzeżonej, ale wymaga dołączenia informacji o pierwotnych prawach autorskich.
Jądro systemu Linux w centrum wydarzeń
Powyższe zagadnienia związane z licencjami są ciekawe, ale co to wszystko ma wspólnego z sukcesem jądra Linuksa?
Cofnijmy się nieco, aby omówić to, czym jest, a czym nie jest jądro systemu. Jądro to swego rodzaju rdzeń systemu operacyjnego — w tym przypadku Linuksa. Ogólnie rzecz biorąc, jądro zarządza sprzętem, procesami, pamięcią, plikami i innymi aspektami pracy systemu. Samo w sobie nie jest elementem, na który większość ludzi w ogóle zwraca uwagę lub z którym celowo wchodzi w interakcję, jednak jest ono niezwykle ważne dla całego systemu operacyjnego.
Wiele innych elementów składa się na to, co nazywamy dystrybucją Linuksa: są to na przykład narzędzia i kompilatory GNU, które były wcześniej dostępne w projekcie GNU i pomogły w tworzeniu samego systemu. Do tego, rzecz jasna, dochodzą aplikacje, które sprawiają, że komputer w ogóle nadaje się do użycia. Dotyczy to zarówno serwerów internetowych, jak i baz danych czy nawet pulpitów użytkowników.
Jednak to nadal jądro znajduje się w centrum wszystkich wydarzeń, a powód, dla którego Linux jest prawdopodobnie najbardziej udanym systemem operacyjnym w historii, wynika z faktu, że jego licencja pozwalała na jego kopiowanie, ulepszanie i dystrybucję oraz wymagała dzielenia się wprowadzanymi zmianami. (Warto przy tym zauważyć, że licencja Linuksa nie wymaga współpracy, ale sam charakter tego systemu zdecydowanie do niej zachęca).
Pierwsza wersja jądra Linuksa została wydana w oparciu o niestandardową licencję, która ograniczała działalność komercyjną. Taki stan nie trwał jednak długo. Linus Torvalds wydał Linuksa w wersji 0.99 na licencji GPLv2 w 1992 roku. Dlaczego? Jak sam wspomina, „szybko stało się jasne, że moje pierwotne prawa autorskie były tak restrykcyjne, że zabraniały niektórych całkowicie uzasadnionych zastosowań… I choć na początku bałem się korzystania z GPL, chciałem też okazać moje uznanie dla kompilatora GCC C, na którym opierał się Linux, a który oczywiście był objęty licencją GPL”.
Usuwając ograniczenia związane między innymi z komercyjnym wykorzystaniem, Torvalds stworzył szansę dla firm, które chciały ulepszać i rozpowszechniać system. Zezwolenie na komercyjne korzystanie oznaczało, że sprzedawcy mogli próbować zarobić na dołączaniu go do książek, zestawów pudełkowych, czasopism i nie tylko.
Musimy przy tym pamiętać, że sposób dystrybucji oprogramowania we wczesnych latach 90. znacznie różnił się od współczesnego. Większość ludzi otrzymywała oprogramowanie na dyskietce (lub dyskach) bądź na płytach CD. Niektórzy mogli co prawda pobierać je z serwerów FTP, ale większość użytkowników nie miała tego przywileju.
Pierwsze zetknięcie z Linuksem
Richard Jones, obecnie starszy główny inżynier oprogramowania w zespole R&D Platform firmy Red Hat, wspomina, że korzystał z systemu Minix, zanim odkrył Linuksa dzięki projektowi Slackware Linux. Jak mówi Jones, pozyskanie Slackware przez sieć było nieco skomplikowanym zadaniem.
„W pełni funkcjonalna dystrybucja zajmowała około 30 dyskietek 3,5 cala. Samo jej pobranie i skopiowanie na dyskietki trwało cały dzień, ale w tamtym czasie (1992/1993) pracowałem w rządowym ośrodku badawczym, który miał dostęp do pewnej niesamowitej nowej technologii, zwanej Internetem” – wspomina Richard Jones.
Rola licencji GNU
Charakter licencji GPLv2 oznaczał, że dostawcy rozpowszechniający Linuksa nie mogli (legalnie) zatajać zmian wprowadzanych w jądrze. To zachęcało (choć niektórzy, dość nieprecyzyjnie twierdzą, że zmuszało) użytkowników do dzielenia się zmianami i swoją pracą z poprzednikami zamiast modyfikować jądro pod kątem konkretnych dystrybucji.
Mniej więcej w okresie wydania pierwszej dystrybucji Linuksa trwały prace nad przeniesieniem innego systemu uniksopodobnego — pod nazwą 386BSD — na komputery x86. W 1993 roku system ten podzielono na wersje FreeBSD i NetBSD, a w 1995 roku pojawiła się wersja OpenBSD.
Podczas, gdy projekty i dostawcy Linuksa skupiali się na jednym jądrze systemu, rozwój BSD szedł w kilku kierunkach. Trzeba jednak przyznać, że jest to drastyczne uproszczenie wszystkich czynników, które złożyły się na sukces Linuksa i ewolucję wielu mniej udanych systemów operacyjnych opartych na BSD. Licencja GPL była jednym z czynników, które odpowiadały za sukces Linuksa, ale nie jedynym.
Jones wskazuje na przykład na jedną z technicznych różnic między Linuksem a BSD, która miała znaczenie na wczesnym etapie ich rozwoju. „Linux po prostu miał współdzielone biblioteki” — mówi Jones. „BSD nie, a kiedy masz łącznie 40 MB przestrzeni na dysku twardym, posiadanie tylko jednej kopii każdej biblioteki naprawdę robi różnicę”.
System uniksopodobny, ale bez jego ceny
Cena też nie pozostawała bez znaczenia. Podczas gdy system BSD był darmowy, własnościowe systemy operacyjne UNIX zdecydowanie nie zaliczały się do tego grona. Jones wspomina, że zapłacił 150 dolarów za pudełkową kopię Miniksa i musiał czekać na oprogramowanie wiele tygodni.
Stephen Smoogen, wieloletni użytkownik Linuksa i pracownik firmy Red Hat mówi, że korzystał z Uniksa, kiedy zaczynał swoją przygodę z Linuksem, ale cena była dość wysoka. „Używałem Uniksa przez około cztery lata, a koszt jednej stacji roboczej wynosił około 16000 dolarów”.
Nie było to zbyt przystępne rozwiązanie z punktu widzenia użytkownika domowego, ale Smoogen nie chciał pójść w stronę systemów MS-DOS i Windows. „Próbowałem korzystać z DOSa i Windowsa, ale uznałem, że potencjał skryptów shell, potoków i narzędzi GCC jest zbyt duży, aby pójść na taki kompromis”.
Na szczęście nie musiał tego robić, a sprzęt, na którym działał Linux, był znacznie bardziej przystępny. „Linux na moim i386 pozwalał mi korzystać ze wszystkich narzędzi i poleceń, których używałem wcześniej na uniksowym komputerze — i to za około 1600 dolarów”.
Firma Red Hat wkracza do akcji
Pierwszy kod jądra Linux został wydany w 1991 roku. Firma Red Hat została jednak założona nieco później — około dwa lata od tej daty, w zależności od tego, jak zdefiniujemy jej „założenie”.
Marc Ewing utworzył własną dystrybucję Linuksa i wypuścił słynne halloweenowe wydanie Red Hat Linux w październiku 1993 roku. W tym samym czasie Bob Young sprzedawał oprogramowanie Linux i UNIX za pośrednictwem firmy ACC Corporation.
W 1995 roku obie firmy połączyły się pod nazwą Red Hat Software, a Young objął funkcję dyrektora generalnego. Red Hat Linux (jeszcze nie jako Red Hat Enterprise Linux) był sprzedawany jako produkt pudełkowy — zarówno przez sprzedawców internetowych, jak i w fizycznych sklepach. Użytkownicy mogli również otrzymać Red Hat Linux (i inne dystrybucje) na tanich płytach CD (dostawcy tacy jak Linux Mall sprzedawali płyty CD z Linuksem, w tym dystrybucją Red Hat Linux, za 99 centów + koszty wysyłki) lub dzięki kopiom udostępnianym wśród znajomych.
Gdyby nie możliwość swobodnego kopiowania i rozpowszechniania Linuksa, istnieje bardzo duże prawdopodobieństwo, że system ten nie przyjąłby się na tak dużą skalę, z jaką mamy dziś do czynienia. Bez licencji GPL, która kładła nacisk na współdzielenie, jądro Linuksa prawdopodobnie nie stałoby się wspólnym dobrem, które przyczyniło się do rozwoju tak wielu interesów społecznych i komercyjnych.
I oto jesteśmy — 30 lat po hobbystycznym stworzeniu jądra przez jednego studenta i opublikowaniu go na podstawie rewolucyjnej licencji oprogramowania. Oddzielnie, licencja i jądro mogły stać się zwykłymi przypisami przy Miniksie czy też długo wyczekiwanym jądrze systemu GNU Hurd.
Razem jednak zapoczątkowały zjawisko, które towarzyszy nam po dziś dzień.
Od zwykłego hobby po podróże międzyplanetarne
Jądro Linuksa jest dziś wszechobecne. Znajdziemy je w telefonach z systemem Android i wielu usługach, których używamy do nawiązywania połączeń, wysyłania wiadomości tekstowych, strumieniowego odtwarzania muzyki, oglądania filmów, grania w gry i wiele, wiele więcej.
Linux działa na superkomputerach obecnych na liście 500 najpotężniejszych maszyn na świecie oraz umożliwia funkcjonowanie chmur publicznych. Obsługuje farmy renderujące, z których korzystają studia filmowe i zasila urządzenia Chromebook używane przez dzieci do zdalnej nauki. Linux napędza jednopłytkowe komputery Raspberry Pi dla hobbystów oraz wiele innych rozwiązań: od sieci dostarczania treści (CDN) na potrzeby usług strumieniowych aż po dekodery i inteligentne telewizory.
To całkiem niezły wynik jak na system operacyjny, który został pierwotnie opracowany w wolnym czasie przez jednego studenta. Wyobraźcie sobie, co może przynieść następne 30 lat rozwoju.
关于作者
Joe Brockmeier is the editorial director of the Red Hat Blog. He also acts as Vice President of Marketing & Publicity for the Apache Software Foundation.
Brockmeier joined Red Hat in 2013 as part of the Open Source and Standards (OSAS) group, now the Open Source Program Office (OSPO). Prior to Red Hat, Brockmeier worked for Citrix on the Apache OpenStack project, and was the first OpenSUSE community manager for Novell between 2008-2010.
He also has an extensive history in the tech press and publishing, having been editor-in-chief of Linux Magazine, editorial director of Linux.com, and a contributor to LWN.net, ZDNet, UnixReview.com, and many others.
产品
工具
试用购买与出售
沟通
关于红帽
我们是世界领先的企业开源解决方案供应商,提供包括 Linux、云、容器和 Kubernetes。我们致力于提供经过安全强化的解决方案,从核心数据中心到网络边缘,让企业能够更轻松地跨平台和环境运营。