Ta strona jest tłumaczeniem z angielskiego.
Linux i System GNU
Richard M. Stallman
Każdego dnia wielu użytkowników komputerowych używa modyfikowanej wersji systemu GNU, nie zdając
sobie z tego sprawy. Poprzez specyficzny obrót wydarzeń, wersja
GNU, która jest dzisiaj powszechnie używana, nazywana jest często
„Linux”. Wielu jego użytkowników nie jest świadoma,
że to jest w zasadzie system GNU, zaprojektowany przez Projekt GNU.
Linux rzeczywiście istnieje i ludzie go używają, lecz jest to
zaledwie część systemu, którego używają. Linux jest jądrem: programem
w systemie, który przydziela maszynie zasoby, które są przeznaczane dla
innych programów których używacie. Jądro jest istotną częścią systemu
operacyjnego, lecz samo jądro jest bezużyteczne. Może działać tylko
w obrębie całego systemu operacyjnego. Linux jest zwykle używany
w połączeniu systemu operacyjnego GNU: cały system to w zasadzie
GNU z dodatkiem Linuksa lub GNU/Linux. Wszystkie dystrybucje
nazywane “Linuksem” są tak naprawdę dystrybucjami GNU/Linuksa.
Większość użytkowników nie rozumie różnicy pomiędzy jądrem, jakim jest Linux
oraz całym system, który nazywają „Linuksem”. Dwuznaczność
użycia tych nazw nie pomaga w zrozumienie tego problemu. Użytkownicy ci
często myślą, że to Linus Torvalds z niewielką pomocą
zaprojektował cały system operacyjny w 1991 roku.
Programiści wiedzą, że Linux jest jądrem. Lecz od kiedy usłyszeli
o całym systemie także jako o „Linuksie”, często wyobrażają
sobie historię, która uzasadniła nazewnictwo całego systemu nazwą
jądro. Na przykład wiele ludzie wierzy, że gdy Linus Torvalds
zakończył pisanie Linuksa, jądra, użytkownicy rozejrzeli się za innym
wolnym oprogramowaniem by go połączyć z tym. W końcu stwierdzili
(bez żadnej szczególnej przyczyny), że prawie wszystko niezbędne
do stworzenia systemu uniksopodobnego było już dostępne.
To co znaleźli nie było przypadkiem. Był to niekompletny system
GNU. Dostępne wolne oprogramowanie
dodawało się do kompletnego systemu, ponieważ Projekt GNU pracował
nad tym już od 1984 roku. W Manifeście GNU ustaliliśmy jako cel
stworzenie wolnego systemu uniksopodobnego nazwanym GNU. Pierwsze ogłoszenie Projektu GNU
również przedstawia pierwotne plany dotyczące systemu GNU. Gdy Linux dopiero
co zaczynał, GNU był prawie ukończony.
Większość projektów wolnego oprogramowania wyznaczyła sobie za cel
rozwój określonego programu do konkretnych zadań. Na przykład
Linus Torvalds napisał uniksopodobne jądro (Linux), Donald Knuth napisał
interpreter tekstu (TeX), Bob Scheifler zaprojektował system okien (the X
Window System). Naturalnym jest, że wkład wniesiony przez projekt
ocenia się przez pryzmat programów, których dostarczył.
Jeżeli spróbowalibyśmy zmierzyć wkład wniesiony przez Projekt GNU
w taki sposób, do jakiego doszlibyśmy wniosku? Jeden sprzedawca
CD-ROM'ów sprawdził, że w jego „dystrybucji Linuksa” oprogramowanie GNU
stanowiło największą część, około 28% całego kodu źródłowego, wliczając
w to istotnie ważne komponenty bez których nie było by tego
systemu. Sam Linux stanowił około 3%. (Proporcje w 2008 roku były
podobne: w „głównym” repozytorium gNewSense, Linux stanowi
1,5% a paczki GNU 15%). Tak więc jeżeli zamierzamy wybrać nazwę
dla systemu, opierając się na tym kto napisał programy w nim
zawarte, najbardziej odpowiednim wyborem będzie „GNU”.
Lecz i to nie jest odpowiedzią na rozważane pytanie. Projekt GNU
nie był i nie jest projektem, który zajmuje się tworzeniem konkretnych
paczek oprogramowania. Nie był projektem, który miał na celu stworzenia kompilatora C, jednakże zrobiliśmy
to. Nie był projektem, który miał na celu zaprojektowanie edytora
tekstowego, jednakże zrobiliśmy to. Projekt GNU został stworzony po to,
by zaprojektować kompletny wolny system uniksopodobny: GNU.
Wiele osób wniosło istotny wkład w wolne oprogramowanie w systemie
i wszyscy oni zasługują za to na uznanie. Lecz powodem
tego, że jest to zintegrowany system, a nie tylko
kolekcja użytecznych programów, jest to że taki właśnie był cel
Projektu GNU. Zrobiliśmy listę programów potrzebnych do zrobienia
kompletnego wolnego systemu. Systematycznie odnajdujemy, piszemy
lub znajdujemy ludzi uzupełniających listę. Napisaliśmy istotne,
lecz raczej nie porywające (1) komponenty,
ponieważ nie możecie posiadać systemu bez nich. Niektóre
komponenty naszego systemu są narzędziami programistycznymi, które stają się
coraz bardzie popularne wśród programistów. Lecz napisaliśmy wiele
komponentów, które nie są takimi narzędziami (2). Napisaliśmy nawet grę szachową, GNU Chess,
ponieważ kompletny system również potrzebuje gierek.
We wczesnych latach 90-tych poskładaliśmy cały system za wyjątkiem
jądra. Zaczęliśmy również pisać jądro, GNU Hurd, który działa
na Machu. Zaprojektowanie jądra było trudniejsze, niż tego
oczekiwaliśmy. GNU Hurd zaczął
działać stabilnie w 2001 roku, lecz jeszcze ma daleką drogę
do bycia gotowym do powszechnego użytku.
Na szczęście nie musieliśmy czekać na Hurd, ponieważ powstał
Linux. Gdy Torvalds uwolnił Linuksa w 1992 roku, zapełnił ostatnią dużą
lukę w systemie GNU. Ludzie mogli połączyć
Linuksa z systemem GNU w celu zrobienia kompletnie wolnego
systemu – wersji systemu GNU, który także zawierał
Linuksa. Innymi słowy, system GNU/Linux.
Połączenie całej pracy nie było trywialną rzeczą. Niektóre komponenty GNU (3) potrzebowały istotnych zmian
do współpracowania z Linuksem. Integracja kompletnego systemu jako
dystrybucji która działałaby „od ręki” to również sporo
pracy. Wymagało to zajęcia się problemem dotyczącym instalacji
i startowania systemu. Był to problem, którego jeszcze nie
rozwiązaliśmy, ponieważ nie dotarliśmy wtedy do tego
stopnia. Dlatego też ludzie, którzy zaprojektowali różne dystrybucje
systemów wykonali istotną część pracy. Była to jednak praca którą, jak
to się zwykle dzieje, ktoś by na pewno wykonał.
Projekt GNU wspiera zarówno systemy GNU/Linux jak i system
GNU. FSF sfinansowało przepisywanie
związanych z Linuksem rozszerzeń do biblioteki GNU C,
więc teraz są one dobrze zintegrowane. Najnowsze systemy GNU/Linux
używają aktualnych bibliotek bez zmian. FSF sfinansowało również
wczesny etap tworzenia Debian GNU/Linux.
Dzisiaj jest wiele różnych wariantów systemu GNU/Linux (często zwane
w skrócie „distro”). Większość z nich dołącza niewolne
oprogramowanie – programiści idą za filozofią Linuksa
zamiast GNU. Lecz istnieją również całkowicie wolne
dystrybucje GNU/Linuksa. FSF wspiera zasoby komputerowe dla gNewSense.
Tworzenie wolnej dystrybucji GNU/Linux nie polega tylko
na wyeliminowaniu różnych niewolnych programów. Obecnie normalna wersja
Linuksa zawiera niewolne programy. Te programy przeznaczone są
do załadowania do urządzeń I/O [ang. Input/Output -
Wejścia/Wyjścia] kiedy system startuje. Mają one postać długich ciągów liczb
włączonych do „kodu źródłowego” Linuksa. Dlatego też
utrzymanie wolnych dystrybucji GNU/Linuksa pociąga także za sobą
utrzymanie wolnej wersji
Linuksa.
Niezależnie czy używasz GNU/Linuksa czy też nie, proszę nie mylcie
społeczeństwa prze używanie słowa „Linux” dwuznacznie. Linux
jest jądrem, jednym z kluczowych elementów systemu. System głównie
bazuje na systemie GNU, do którego Linux został dodany. Kiedy
mówicie o takim połączeniu, proszę mówcie wtedy „GNU/Linux”.
Jeżeli chcecie dodać odnośnik z informacjami na temat
„GNU/Linuksa”, ta strona oraz http://www.gnu.org/gnu/the-gnu-project.html
będą dobrym wyborem. Jeżeli chodzi Wam o Linuksa, o jądro,
i chcecie dodać odnośnik w celu dalszego wyjaśnienia, http://foldoc.org/linux jest dobrym
adresem URL w tym celu.
Uzupełnienie: Odbiegając od GNU, pewien inny projekt został niezależnie
wyprodukowany jako wolny system operacyjny uniksopodobny. System znany jest
jako BSD i został zaprojektowany na UC Berkeley. Był niewolny
w latach 80-tych, lecz stał się wolny w latach 90-tych. Wolny
system operacyjny istniejący dzisiaj(4), jest
niemalże na pewno albo odmianą systemu GNU, albo rodzajem
systemu BSD.
Ludzie zazwyczaj pytają, czy BSD jest także wersją GNU, coś jak
GNU/Linux. Deweloperzy BSD zostali zainspirowani aby uwolnić ich kod
przykładem Projektu GNU oraz wyraźnymi apelami od aktywistów GNU,
którzy pomagali ich do tego przekonać. Lecz ich kod
w nieznacznym stopniu pokrywa się z GNU. Systemy BSD używają
dzisiaj niektórych programów GNU, tak jak system GNU używa niektórych
programów BSD. Podsumowując jednak, są to dwa odmienne systemy, które
rozwijały się osobno. Deweloperzy BSD nie napisali jądra i nie dodali
go do systemu GNU. Taka nazwa, jak GNU/BSD nie opisuje sytuacji. (5)
Przypisy [autora]:
-
Te mało porywające, lecz ważne komponenty, to
między innymi assembler GNU (GAS) i linker (GLD), które są teraz
częścią paczkiGNU Binutils, GNU tar i wielu innych.
-
Na przykład The Bourne Again SHell (powłoka BASH),
interpreter PostScriptu Ghostscript oraz biblioteka GNU C nie są narzędziami
programistycznymi. Nie są także nimi GNUCash, GNOME i GNU Chess.
-
Na przykład biblioteka GNU C.
-
Od kiedy to zostało napisane,
prawie-całkiem-wolny Windowsopodobny system został zaprojektowany,
lecz nie jest w ogóle ani jak GNU ani jak Unix,
więc nie pasuje do tego zagadnienia. Większość jądra Solarisa
zostało uwolnione, lecz jeżeli chcieliście zrobić z tego wolny
system, oprócz zastąpienia brakujących części jądra, musielibyście również
umieścić go w GNU lub BSD.
-
Z drugiej strony, przez lata które minęły
od kiedy ten artykuł został napisany, Biblioteka GNU C została
przeportowana na kilka wersji jądra BSD, co pozwala na łatwe
połączeniem systemu GNU z jądrem. Tak jak z GNU/Linuksem, są to
także warianty GNU i są nazywane na przykład GNU/kFreeBSD
czy GNU/kNetBSD zależnie od jądra systemu. Zwykli użytkownicy
typowych środowisk graficznych z trudem odróżnią GNU/Linux
i GNU/*BSD.