Možná jste GNU nikdy vědomě nepoužili. Přesto je velmi pravděpodobné, že tento web vám právě posílá server, na kterém běží desítky programů GNU. Každý příkaz, který na něm správce napíše do terminálu, zpracovávají nástroje z projektu, který začal jedinou zprávou v diskusní skupině.
Článek popisuje, co GNU je, proč se jmenuje podle pakoně, co všechno obsahuje a proč se vede spor, jestli říkat Linux, nebo GNU/Linux.
Obsah článku
- Co je GNU
- Proč se jmenuje GNU
- Jak GNU vzniklo
- Co všechno GNU obsahuje
- Hurd: jádro, na které se čeká dodnes
- GNU/Linux, nebo jen Linux?
- Kde GNU používáte dnes
Co je GNU
GNU není jeden program, ale celý soubor programů, které dohromady tvoří operační systém. Patří do něj překladače, knihovny, textové editory, příkazová řádka i stovky drobných nástrojů pro práci se soubory.
Slovo GNU přitom znamená tři věci: projekt, který programy vyvíjí, operační systém, který z nich má vzniknout, a jednotlivé programy GNU. Systém GNU navíc nemusí tvořit jen programy z projektu GNU. Může obsahovat i jiný svobodný software, třeba grafické prostředí nebo kancelářský balík.
Všechny programy GNU jsou svobodný software. Každý je smí používat k čemukoli, studovat jejich zdrojový kód, upravovat je a šířit dál. Většina z nich vychází pod licencí GNU GPL, část knihoven pod mírnější GNU LGPL. GPL stanoví, že kdo šíří upravenou verzi programu, musí ji dát dalším uživatelům se stejnými svobodami. Svobodný přitom neznamená zdarma: jde o to, co s programem smíte dělat, ne kolik stojí. Jak licence funguje a proč ji Stallman napsal, popisuji v článku Richard Stallman: otec svobodného softwaru.
Proč se jmenuje GNU
Název je programátorský vtip. GNU je rekurzivní zkratka slov „GNU's Not Unix“, tedy „GNU není Unix“. První písmeno zkratky znamená zase GNU, takže se dá rozepisovat donekonečna: GNU's Not Unix's Not Unix's Not Unix…
Zároveň je to hra se slovy. Gnu je anglicky pakůň, africká antilopa. Proto má projekt ve znaku hlavu pakoně s rohy a vousy. Podle projektu se název vyslovuje i s „g“ na začátku, jako jedna slabika [gnu].
Odkaz na Unix má praktický důvod. GNU mělo fungovat stejně jako tehdy rozšířený Unix, aby na něj lidé mohli přejít bez učení nových příkazů. Neobsahovalo ale ani řádek jeho kódu a nepodléhalo jeho licencím.
Jak GNU vzniklo
27. září 1983 poslal Richard Stallman do diskusních skupin na Usenetu a do e-mailových konferencí sítě ARPANET oznámení, které začínalo slovy „Free Unix!“. Psal v něm, že chce napsat kompletní operační systém kompatibilní s Unixem a dát ho zdarma každému, kdo ho bude chtít používat. Hledal dobrovolníky a dárce počítačů i peněz. Původní oznámení si můžete přečíst dodnes. Proč se do tak velkého projektu pustil, popisuji v článku o Richardu Stallmanovi.
Práce začaly v lednu 1984. Stallman nezačal jádrem, ale programy, které se daly hned používat na stávajících unixových počítačích. Uživatelé tak mohli jeden po druhém nahrazovat části Unixu svobodnými verzemi z GNU, ještě než byl celý systém hotový.
V roce 1985 vznikla nadace Free Software Foundation (FSF), která začala vývoj GNU financovat a najímat programátory.
Co všechno GNU obsahuje
Do konce 80. let vznikly všechny důležité části systému kromě jádra. Tyto programy jsou nejznámější a mnohé z nich se používají denně dodnes:
| Program | K čemu slouží |
|---|---|
| GNU Emacs | Textový editor, první velký program projektu (1985) |
| GCC | Překladač, který převádí zdrojový kód na spustitelné programy (1987). S ním vznikalo i jádro Linux |
| Bash | Příkazová řádka, ve které se píší příkazy a skripty (1989) |
| GNU C Library (glibc) | Základní knihovna, přes kterou programy komunikují se systémem |
| GNU Coreutils | Svobodné verze základních unixových příkazů pro práci se soubory, například ls, cp nebo mv |
| GDB | Ladicí nástroj pro hledání chyb v programech |
| GIMP | Editor obrázků, svobodná alternativa k Photoshopu |
| GnuPG | Šifrování a elektronické podpisy e-mailů a souborů |
Hurd: jádro, na které se čeká dodnes
Jádro je část systému, která řídí hardware: procesor, paměť, disky a síť. Bez něj ostatní programy nefungují. GNU začalo vyvíjet vlastní jádro jménem Hurd v roce 1990.
Hurd stavěl na mikrojádru Mach z Carnegie Mellon University a na soustavě spolupracujících programů, takzvaných serverů. Každý měl na starosti jinou část systému, například soubory nebo síť. Takový návrh měl být pružnější než jedno velké jádro. V praxi ale přinesl potíže: projekt nejprve musel čekat, až Mach vyjde jako svobodný software, a komunikace mezi mnoha servery se ukázala jako velmi obtížná na ladění.
Hurd se vyvíjí dodnes a existuje experimentální verze Debian GNU/Hurd. Běžnou alternativou k Linuxu se ale nestal.
Mezeru zaplnil někdo jiný. V roce 1991 začal finský student Linus Torvalds psát vlastní jádro jménem Linux. Přeložil ho překladačem GCC z projektu GNU a v roce 1992 ho vydal pod licencí GNU GPL. Obě části do sebe zapadly a vznikl první kompletní svobodný operační systém.
GNU/Linux, nebo jen Linux?
Většina lidí celému systému říká Linux. Stallman a FSF ale od 90. let trvají na názvu GNU/Linux. Jejich argument: Linux je jen jádro, zatímco většinu toho, s čím uživatel pracuje, tvoří programy GNU. Zastánci tohoto názvu to přirovnávají k situaci, kdy byste celému autu říkali „motor“.
Pro Stallmana ale nejde jen o počet programů. Název GNU/Linux má připomínat, že systém nevznikl jako obchodní produkt, ale jako projekt s jasným cílem: dát lidem svobodu nad softwarem, který používají. Když se o GNU nemluví, zapomíná se podle něj i na tento cíl.
Torvalds a velká část komunity to vidí jinak. Linux je zavedené jméno a v systému je kromě GNU i spousta dalšího softwaru, třeba grafické prostředí nebo prohlížeč. Spor trvá dodnes a obě strany mají kus pravdy.
Že rozdíl existuje, ukazuje Android. Používá jádro Linux, ale nástroje GNU v něm nenajdete, místo nich má vlastní knihovny od Googlu. Android tedy používá Linux, ale není to GNU/Linux. Naopak distribuce Debian má název GNU/Linux přímo v oficiálním jménu.
Jádro, GNU a distribuce: kdo co dělá
Linuxový systém si můžete představit ve třech vrstvách:
- Jádro (Linux) řídí hardware: procesor, paměť, disky a síť.
- Nástroje GNU poskytují základní funkce systému: příkazovou řádku, knihovny, překladač a příkazy pro práci se soubory.
- Distribuce (Debian, Ubuntu, Fedora a další) to všechno spojí s tisíci dalších programů, instalátorem a aktualizacemi do systému, který si stáhnete a nainstalujete.
Kde GNU používáte dnes
- Na webových serverech. Linux je na webových serverech nejrozšířenějším systémem a většina z nich používá distribuce s nástroji GNU. Najdete je i u běžných českých webhostingů.
- V cloudu a kontejnerech. Docker kontejnery, ve kterých dnes běží velká část aplikací, jsou často postavené na distribucích jako Debian nebo Ubuntu, a tedy na nástrojích GNU. Ne vždy: oblíbený minimalistický Alpine Linux nástroje GNU nepoužívá, stejně jako Android.
- Ve Windows. Díky subsystému WSL si na Windows spustíte plnohodnotný GNU/Linux včetně Bashe.
- Na Macu. macOS měl jako výchozí příkazovou řádku Bash z GNU až do roku 2019. Apple pak přešel na Zsh, mimo jiné proto, že novější verze Bashe vycházejí pod licencí GPLv3, kterou nechtěl přijmout.
Sám s nástroji GNU pracuji každý den. Když vyvíjím web v Drupalu, spouštím Docker kontejnery, pouštím Drush v příkazové řádce Bash a nasazuji kód na servery s GNU/Linuxem. Projekt, který Stallman ohlásil jedinou zprávou před více než 40 lety, tak stojí i za velkou částí webů, které dnes vznikají.
Projekt GNU je stále aktivní. Na gnu.org najdete stovky balíčků svobodného softwaru i texty o filozofii svobodného softwaru. Jak se z myšlenek GNU vyvinulo širší hnutí, popisuji v článku Opensource.
- Pro vkládání komentářů se musíte přihlásit