Ta strona jest tłumaczeniem z angielskiego.

Linux i System GNU

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.

Wielu użytkowników nie rozumie różnicy pomiędzy jądrem, jakim jest Linux oraz całym system, który także 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 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 znaleźliśmy, napisaliśmy lub zanleźliśmy ludzi do napisania wszystkich programów na naszej liście. 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 stały się popularne same w sobie wsród programistów. Lecz napisaliśmy wiele komponentów, które nie są 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 programy – programiści idą za filozofią „open source” związaną z Linuksem zamiast filozofią „wolnego oprogramowania” GNU. Lecz istnieją również całkowicie wolne dystrybucje GNU/Linuksa. FSF wspiera zasoby komputerowe dla niektórych z nich.

Tworzenie wolnej dystrybucji GNU/Linux nie polega tylko na wyeliminowaniu różnych niewolnych programów. Obecnie normalna wersja Linuksa zawiera także 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 obecnie 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 przez 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 https://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, https://foldoc.org/linux jest dobrym adresem URL w tym celu.

Postscriptum

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 czasami 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 i jego warianty 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, więc nazwa typu GNU/BSD nie pasuje do sytuacji [5].

Przypisy

  1. Te mało porywające, lecz ważne komponenty, to między innymi assembler GNU (GAS) i linker (GLD) w paczce GNU Binutils, paczka GNU tar i wiele innych.
  2. 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 ani GNU Chess.
  3. Na przykład biblioteka GNU C.
  4. 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.
  5. Z drugiej strony, przez lata które minęły od kiedy ten artykuł został napisany, Biblioteka GNU C została przeniesiona na kilka wersji jądra BSD, co pozwala na łatwe połączeniem systemu GNU z jądrem BSD. 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.