původně zveřejněno v knize ,,Open Sources''
[ Česky | Francouzsky | Italsky | Korejsky | Rusky | Španělsky ]
Když jsem v roce 1971 začal pracovat v MIT Artificial Intelligence Lab, stal jsem se součástí komunity sdílející software, která existovala již mnoho let. Sdílení software nebylo výsadou pouze naší komunity; je staré jako počítače samy, stejně jako sdílení receptů je staré jako vaření. Dělali jsme však více než toto.
AI Lab používala operační systém pro sdílení času nazvaný ITS (the Incompatible Timesharing System - Nekompatibilní systém pro sdílení času) navržený hackery pracujícími v laboratoři (1) a psaný v assembleru pro Digital PDP-10, jeden z velkých počítačů tehdejší doby. Jako člen komunity, systémový hacker laboratoře umělé inteligence, jsem měl za úkol vylepšovat tento systém.
Nenazývali jsme náš software ,,svobodným software'', neboť tento termín ještě neexistoval, ale náš software jím byl. Kdykoliv lidé z jiné vysoké školy nebo firmy chtěli portovat a používat program, rádi jsme jim to umožnili. Pokud jste viděli někoho používat neznámý a zajímavý program, mohli jste ho vždy požádat, aby vám ukázal zdrojové kódy, abyste jej mohli studovat, měnit anebo demontovat některé z jeho částí a vytvořit nový program.
(1) Užívání výrazu ,,hacker" jako pojmenování někoho, kdo se vloupává do bezpečnostních systémů, je matení způsobené dnešními médii. My hackeři toto pojmenování odmítáme uznat a toto slovo stále používáme k označení někoho, kdo ,,miluje programování a dost o něm ví."
Situace se dramaticky změnila na počátku osmdesátých let, když Digital přestal pokračovat ve výrobě sérií PDP-10. Jejich stavba, elegantní a výkonná v šedesátých letech, nemohla, přirozeně, pokrýt větší adresové prostory, které začaly nastupovat v osmdesátých letech. To znamenalo, že téměř všechny programy pro ITS byly zastaralé.
Komunita hackerů AI lab se nedlouho předtím rozpadla. Oddělující se firma Symbolics si v roce 1981 najala téměř všechny hackery z AI lab a oslabená komunita byla neschopná se nadále sama udržet. (Kniha Hackeři od Steve Levyho popisuje tyto události, stejně jako vykresluje jasný obrázek komunity za jejího rozkvětu.) Když v roce 1982 nakoupila laboratoř AI nová PDP-10, její administrátoři se rozhodli používat nesvobodný systém pro sdílení času od Digitalu namísto našeho ITS.
Moderní počítače té doby jako například VAX nebo 68020, měly své vlastní operační systémy, ale žádný z nich nebyl svobodným software: museli jste podepsat tzv. non-disclosure agreement dokonce i proto, abyste vůbec získali funkční program.
Znamenalo to tedy, že první věc, kterou jste museli při používání počítače udělat, byl slib, že nebudeme pomáhat svým kolegům. Spolupráce komunity byla zakázána. Pravidlo vytvořené vlastníky proprietárního software znělo: ,,Pokud sdílíte software se svým kolegou, jste pirát. Pokud chcete provádět v našem software jakékoliv změny, musíte nás nejdříve poprosit.''
Myšlenka, že proprietární softwarový systém -- systém, v němž nesmíte sdílet nebo měnit software -- škodí společnosti, je neetický, zkrátka a jednoduše špatný, by mohla být pro některé čtenáře překvapením. Co jiného se však dá říct o systému založeném na rozdělování veřejnosti, na systému nechávajícím své uživatele bez pomoci? Lidé, jimž tato myšlenka připadá překvapující, mohli pokládat proprietární sociální systém za daný, nebo jej posuzovat podle slov lidí z oblasti obchodu s proprietárním software. Vydavatelé software dlouho a těžce pracovali na tom, aby přesvědčili veřejnost, že existuje pouze jediný způsob, jak pohlížet na tento problém.
Když softwaroví vydavetelé hovoří o ,,posilování'' svých ,,práv'' nebo ,,zastavení pirátství'', to, co vlastně *říkají* je druhotné. Opravdová podstata těchto tvrzení je v nevyslovených domněnkách, jež berou jako samozřejmé; předpokládá se, že je veřejnost bez kritiky přijme. Pojďme se tedy na ně podívat.
Prvním předpokladem je, že softwarové firmy mají nesporné přirozené právo vlastnit software a mít tak moc nad všemi jeho uživateli. (Pokud by se jednalo o přirozené právo, potom bychom, bez ohledu na to, do jaké míry poškozuje veřejnost, nemohli nic namítat.) Je zajímavé, že americká ústava a právní zvyklosti tento pohled na věc odmítají; copyright není přirozené právo, ale vládou uměle vytvořený monopol, jež omezuje přirozené právo uživatelů na vytváření kopií.
Dalším neprohlášeným předpokladem je, že jedinou důležitou věcí týkající se software je, co s ním můžeme dělat -- a že my, počítačoví uživatelé, bychom se neměli starat o to, v jaké společnosti je nám dovoleno žít.
Třetí domněnkou je, že bychom neměli použitelný software (nebo programy na konkrétní věci), kdybychom nenabídli společnosti moc nad uživateli jejího programu. Předtím než hnutí svobodného software ukázalo, že jsme schopni vytvořit mnoho užitečného software bez zbytečných omezení, mohla být tato domněnka ještě i přijatelná.
Jestliže odmítneme akceptovat tyto předpoklady a posoudíme dané problémy přirozeným smyslem pro etiku a dáme uživatele na první místo, dojdeme k závěrům velmi odlišným. Počítačoví uživatelé by měli mít svobodu modifikovat programy tak, aby splňovaly jejich potřeby, a svobodu sdílet software. Pomáhat ostatním lidem je základ společnosti.
Není zde dostatek prostoru pro rozsáhlý dokument odůvodňující tento závěr, takže odkazuji čtenáře na webovou stránku http://www.gnu.org/philosophy/why-free.cs.html.
Po rozpadu mé komunity bylo nemožné pokračovat jako dříve. Místo toho jsem stál tváří v tvář morálnímu rozhodnutí.
Bylo by snadnou volbou připojit se ke světu proprietárního software, spolu s podepsáním tzv. non-disclosure agreement a slibů, že nebudu pomáhat svým kolegům hackerům. Je velmi pravděpodobné, že bych rovněž vyvíjel software vydávaný pod non-disclosure agreement a naléhal na ostatní, ať rovněž zrazují své kolegy.
Mohl jsem si tak vydělávat a možná se sám bavit psaním kódu. Věděl jsem však, že kdybych se na konci své kariéry ohlédl zpět a viděl roky strávené stavbou zdí oddělujících lidi, připadalo by mi, že jsem svůj život zasvětil činěním světa horším a horším.
Sám jsem měl již zkušenosti s tím, jak dopadne přijetí non-disclosure agreement, a to když někdo odmítl dát mi a MIT AI lab zdrojový kód na program pro kontrlou naší tiskárny. ( Program měl nějaké nedostatky a to bylo pro uživatele tiskárny velmi frustrující.) Nemohl jsem si říct, že non-disclosure agreement je nevinný. Byl jsem velmi rozzlobený, když s námi odmítl sdílet kód; nemohl jsem se otočit zády a začít dělat ostatním totéž.
Další možností, snadnou ale neradostnou, bylo opustit počítačové odvětví. Mé dovednosti by tak sice nebyly zneužity, ale stále by byly promrhávány. Nebyl bych vinnen za rozdělování a omezování počítačových uživatelů, ale tak jako tak by k tomu došlo.
Začal jsem se tedy poohlížet po způsobu, jak bych mohl vytvořit něco prospěšného. Ptal jsem se sám sebe: existuje nějaký program nebo programy, které bych mohl psát, aby mohla naše komunita opět existovat?
Odpověď byla zřejmá: nejdříve byl potřeba operační systém. Jedná se o důležitý software pro používání počítače. S operačním systémem můžete dělat mnoho věcí, bez něj se však počítač nedá vůbec používat. Se svobodným operačním systémem bychom znovu mohli vytvořit komunitu spolupracujících hackerů -- a pozvat kohokoliv, aby se k nám přidal. Kdokoliv by mohl používat počítač bez toho, aniž by se tak upisoval ke spiknutí proti svým přátelům.
Jako vývojář operačních systémů jsem pro takovou práci měl dostatečné znalosti. Přestože jsem tehdy nemohl se samozřejmostí předpokládat, že uspěji, uvědomil jsem si, že jsem byl pro tuto práci vybrán. Rozhodl jsem se vytvořit systém kompatibilní s Unixem, aby byl přenosný a aby na něj mohli unixoví uživatelé snadno přejít. Jméno GNU bylo vybráno podle hackerské tradice, jako rekurzivní akronym ,,GNU's Not Unix.''
Operační systém neznamená pouze kernel, plně dostačující ke spouštění jiných programů. V sedmdesátých letech v sobě již každý operační systém, který byl hoden svého jména, zahrnoval procesory, assemblery, kompilátory, překladače, debuggery, textové editory, mailery a mnohem více. ITS, Multics, VMS, Unix, všechny tyto systémy je měly. Operační systém GNU je zahrnoval také.
Později jsem slyšel tato slova, připisovaná Hillelovi (1):
Jestliže nejsem pro sebe, kdo bude pro mě?
Jestliže jsem jen pro sebe, co jsem?
Jestliže ne nyní, kdy?
V podobném duchu bylo i rozhodnutí začít s projektem GNU.
(1) Coby ateista sice nenásleduji žádné náboženské vůdce, ale někdy se mi libé, co někdo z nich prohlásí.
Termín ,,svobodný software'' je někdy špatně vykládán -- nijak nesouvisí s cenou. Je o svobodě. Zde proto cituji definice svobodného software: program je svobodným software, pro vás, uživatele, jestliže máte tyto svobody:
Jelikož se ,,free'' vztahuje ke svobodě, nikoliv k ceně, neexistuje rozpor mezi prodejem kopií a svobodným software. Svoboda prodávat kopie je vpodstatě velmi důležitá: sbírky svobodného software prodávané na CD-ROMech jsou pro komunitu důležité a jejich prodej je jednou z cest, jak sehnat penéze na rozvoj svobodného software. Z toho důvodu není svobodným software program, jež nesmí být distribuován.
Kvůli dvojznačnosti slova ,,free'' se lidé dlouho pokoušeli najít jiná označení, avšak žádné z nich nebylo shledáno jako vhodná alternativa. Angličtina má více slov a nuancí než kterýkoli jiný jazyk, ale chybí jí jednoduché, jednoznačné slovo pro ''free'' jako v slově svoboda -- ,,nespoutaný'' -- slovo s nejbližším podobným významem. Alternativy ,,osvobozený'', ,,zdarma'' a ,,otevřený'' jsou nevyhovující.
[Tento problém v češtině nemáme a můžeme proto velmi výstižně a elegantně používat označení ,,svobodný software.'' Pro podrobnější vysvětlení se prosím podívejte na http://svobodnysoft.zde.cz [bohužel tato linka už nefunguje]. My jako překladateský tým ani Nadace svobodného software nedoporučujeme používat v češtině označení ,,free software.'' V našem jazyce je používání tohoto dvojznačného termínu bezdůvodné a velmi matoucí. -- pozn. korek.]
Rozvoj celého systému je velmi zdlouhavý projekt. Abych ho dotáhl do konce, rozhodl jsem se přizpůsobit a používat již existující části svobodného software všude tam, kde to bylo možné. Úplně na počátku jsem se například rozhodl používat TeX jako hlavní textový formátovač; o několik let později jsem se rozhodl používat X Window Systém -- raději, než abych pro GNU psal další ,,okenní'' systém.
Díky tomuto rozhodnutí není GNU systém totéž jako souhrn veškerého GNU software. GNU systém v sobě zahrnuje programy, které nejsou GNU software, programy, které byly vyvíjeny jinými lidmi pro jejich vlastní potřeby, ale které můžeme používat, protože jsou svobodným software.
V lednu 1984 jsem odešel z MIT a začal psát GNU software. Bylo nutné MIT opustit, aby se nevměšovala do distribuce GNU jako svobodného software. Kdybych zůstal zaměstnancem MIT, mohli by si chtít mou práci přivlastnit a uvalit na ni své distribuční podmínky, nebo ji dokonce přeměnit v proprietární software. Nechtěl jsem dělat tolik práce jen na to, abych pak vyděl jak se stává nepoužitelnou pro můj cíl: vytvoření nové software sdílející komunity.
Přesto mi však profesor Winston, ředitel MIT AI Lab, laskavě dovolil i nadále používat vybavení laboratoře.
Krátce před začátkem GNU projektu jsem se doslechl o Svobodném univerzitním kompilátoru Kit, rovněž známého jako VUCK. (dánské slovo ,,svobodný" se píše s V) Tento překladač byl navržen pro mnoho jazyků, včetně C a Pascalu a na podporu multitaskingových strojů. Napsal jsem jeho autorovi, zda by je GNU mohl používat.
Posměšně mi odpověděl, že sice univerzita svobodná je, avšak překladač nikoliv. Rozhodl jsem se proto, že mým prvním programem pro projekt GNU bude mnohajazyčný a mnohaplatformní překladač.
Doufal jsem, že se vyhnu tomu, abych vytvářel překladač já sám. Získal jsem zdrojový kód Pastelu, multiplatformního překladače rozvíjeného v Lawrence Livermore Lab. Byl napsán a podporoval rozšířenou verzi Pascalu, navrženého jako systémový programovací jazyk. Přidal jsem front end C a začal jsem ho portovat na počítač Motorola 68000. Musel jsem se však nakonec vzdát, když jsem přišel na to, že tento překladač potřebuje megabyty volného prostoru, a dostupný Unixový systém 68000 umožňoval použít pouze 64 kilobyte.
Poté jsem si uvědomil, že překladač Pastel fungoval na principu analýzy celého vstupního souboru do syntaxového stromu, přeměnil celý syntaxový strom v řetězec ,,instrukcí'' a potom generoval celý výstupní soubor. Dokonce bez uvolňování paměti. Tehdy mi došlo, že bych měl napsat nový překladač. Tento nový překladač je nyní znám jako GCC; není v něm využit ani jeden z překladačů Pastel, ale podařilo se mi přizpůsobit a použít front end C, který jsem již měl hotov. To ovšem bylo o několik let později; nejdříve jsem pracoval na GNU Emacsu.
Na GNU Emacs jsem začal pracovat v září 1984 a na počátku roku 1985 již začal být použitelným. To mi umožnilo začít používat na editaci unixové systémy; protože jsem neměl zájem učit se pracovat s vi nebo ed, musel jsem do té doby provádět editaci na jiných strojích.
Lidé začali mít o používání GNU Emacsu zájem a tak vyvstala otázka, jak ho šířit. Samozřejmě jsem ho umístil na anonymní ftp server na počítač MIT, jež jsem používal. (Tento počítač, prep.ai.mit.edu, se tak stal hlavním FTP distribučním stanovištěm pro GNU; o několik let později jsme ho přemístili na náš nový FTP server.) V té době ovšem mnoho lidí, kteří se o to zajímali, nebylo připojeno k Internetu a nemohlo získat přes ftp. Otázka tedy zněla:,,Co jim mám říct?''
Mohl jsem říct: ,,Najděte si kamaráda, který na síti je, a ten vám udělá kopii.'' Také jsem mohl udělat to, co jsem udělal s původním PDP-10 Emacs: říct jim: ,,Pošlete mi pásku a SASE a já vám ji vrátím s nahraným Emacsem.'' Neměl jsem však práci a hledal jsem způsob, jak si svobodným software vydělat. Oznámil jsem tedy, že pásku pošlu každému za poplatek $150. Takto jsem začal s obchodním šířením svobodného software a byl jsem předchůdcem společností, které nyní distribuují GNU systémy založené na Linuxu.
Jestliže je program v době, kdy opouští ruce svého autora, svobodným software, nemusí to nutně znamenat, že pro každého vlastníka kopie tohoto programu to bude rovněž svobodný software. Například public domain software (software, který není copyrightovaný) je svobodným software; ale kdokoliv si může vytvořit vlastní modifikovanou verzi. Podobně je tomu v případě mnoha svobodných programů: jsou copyrightovány, ale šířeny pod jednoduchými licencemi, které umožňují vytvářet proprietární modifikované verze.
Příkladem tohoto problému je X Window systém vyvinutý na MIT a vydaný jako svobodný software s velmi volnou licencí. Brzy byl převzat různými počítačovými firmami. Ty přidaly X ke svým proprietárním unixovým systémům pouze v binární podobě a s týmž non-disclosure agreement. Tyto kopie X nebyly svobodným software o nic víc než Unix.
Vývojáři X Window System to nepovažovali za problém -- věděli , že k tomu dojde. Jejich cílem nebyla svoboda, jen úspěch definovaný slovy ,,mít hodně uživatelů.'' Nestarali se o to, zda mají jejich uživatelé svobodu, šlo jim jen o to, aby jich bylo co nejvíc.
To vedlo k paradoxní situaci, kde dva rozdílné pohledy na míru svobody poskytovaly odlišné odpovědi na otázku: ,,Je tento program svobodný?'' Pokud byste tento problém posuzovali na základě svobod poskytovaných distribučními podmínkami té verze z MIT, řekli byste, že X jsou svobodný software. Jestliže byste ovšem prověřovali svobodu průměrného uživatele X, museli byste říct, že se jedná o proprietární software. Většina uživatelů X používala proprietární verze, které dostali s unixovými systémy, ne svobodnou verzi.
Cílem GNU je poskytnout uživatelům svobodu, ne být populární. Potřebovali jsme takové dsitribuční podmínky, abychom zabránili proměně GNU software v software proprietární. Metoda, kterou používáme, se nazývá ,,copyleft''.(1)
Copyleft používá copyrightového práva, ale ,,převrací'' jej tak, aby sloužilo k opačným účelům než obvykle: namísto prostředku ke spoutání software, se stává prostředkem k udržení software svobodným.
Hlavní myšlenkou copyleftu je dát každému povolení ke spouštění, kopírování, modifikaci programu a šíření modifikovaných verzí - ne však povolení přidávat k nim vlastní omezení. Takto jsou rozhodující svobody, které definují ,,svobodný software'' zaručeny pro každého, kdo má kopii; stávají se nezcizitelnými právy.
Aby byl copyleft efektivní, musí být modifikované verze rovněž svobodné. To zajišťuje, že naše práce je, pokud je zveřejněna, dostupná naší komunitě. Co se týče programátorů, kteří pracují jako dobrovolníci na zlepšování GNU software, je to právě copyleft, jež nedovoluje jejich zaměstnavatelům říkat: ,,Nesmíte sdílet tyto změny, protože je použijeme k vytvoření naší proprietární verze programu.''
Požadavek, že veškeré změny musí být ,,svobodné'' je nezbytný, pakliže chceme zajistit svobodu každému uživateli programu. Společnosti, jež učinili X Window systém proprietárním, většinou provedly několik změn, aby jej přizpůsobily jejich systémům a hardware. Tyto změny byly v porovnání s rozšířením X malé, ale nikoli bezvýznamné. Jestliže by vytváření změn bylo výmluvou k odepření svobody uživatelům, bylo by pro kohokoli velmi snadné z této výmluvy těžit.
Příslušný problém se týká kombinování svobodného programu s nesvobodným kódem. Takováto kombinace by pak nevyhnutelně byla nesvobodná; jakékoliv svobody chybějící nesvobodné části by pak chyběly i celku. Povolení takových kombinací by bylo zkázonosné. Z toho důvodu je rozhodujícím požadavkem pro copyleft ,,ucpat tuto díru'': jakýkoliv program, který je přidaný či kombinovaný s copyleftovaným programem, musí být takový, aby další kombinovaná verze byla rovněž svobodná a copyleftovaná.
Specifická implementace copyleftu, kterou používáme ve většině GNU software, je GNU General Public License, zkráceně GNU GPL. Máme ovšem jiné druhy copyleftů, používané za zvláštních okolností. Příručky GNU jsou rovněž copyleftovány, ale používají mnohem jednodušší druh copyleftu, protože pro ně není třeba složitosti GNU GPL.
(1) V roce 1984 nebo 1985 mi poslal dopis Don Hopkins (nápady sršící člověk). Na obálku napsal pár vtipných poznámek, včetně této: ,,Copyleft -- všechna práva vyhrazena.'' Používal jsem výraz ,,copyleft'' k označení distribučního pojetí, které jsem v té době vyvíjel.
Jak vzrůstal zájem o používání Emacsu, do projektu GNU se začali zapojovat jiní lidé, a tak jsme se rozhodli, že je čas znovu se poohlédnout po nějakých financích. Proto jsme v roce 1985 vytvořili Nadaci pro svobodný software; organizaci pro rozvoj svobodného software, osvobozenou od platby daní. Nadace pro svobodný software rovněž převzala kontrolu nad prodejem pásek s Emacsem; později se obchod rozšířil díky tomu, že jsme na pásku přidali jiný svobodný software (jak GNU, tak ,,ne-GNU'') a začali jsme rovněž prodávat manuály.
Nadace pro svobodný software přijímá sponzorské dary, ale většina jejích příjmů vždy pocházela z prodeje kopií svobodného software a jiných služeb s tím spojených. Nyní prodává CD-ROMy se zdrojovými kódy, CD-ROMy s binárkami, přehledně tištěné příručky (vše se svobodou redistribuce a modifikace), a zajišťuje distribuce Deluxe (v nichž dodáváme celou sbírku software dle vašeho výběru platformy [distribuce bude na tuto platformu portována -- pozn.korek.]).
Zaměstnanci Nadace pro svobodný software napsali a udržovali mnoho balíčků GNU. Dva významné jsou knihovny pro C a shell. GNU C knihovna je tím, co každý program běžící na GNU/Linux systému používá ke komunikaci s Linuxem. Vyvíjel ji člen Nadace pro svobodný software, Roland McGrath. Na většině GNU/Linux systémů je používaným shellem BASH - Bourne Again Shell(1), vyvíjený zaměstnancem FSF, Brianem Foxem.
Financovali jsme vývoj těchto programů, protože GNU projekt nebyl pouze o nástrojích či vývojovém prostředí. Naším cílem byl kompletní operační systém a tyto programy jsme pro dosažení cíle potřebovali.
(1) ,,Bourne again Shell" je parodií na jméno ,,Bourne Shell'', obvykle používaný shellu u Unixu.
Filozofie svobodného software odmítá určitou rozšířenou obchodní praxi, ale nestaví se proti komerci. Pokud obchod respektuje svobody uživatele, přejemu mu úspěch.
Prodej kopií Emacsu ukazuje jeden druh obchodu se svobodným software. Když Nadace pro svobodný software převzala tento obchod, potřeboval jsem najít jiný způsob vydělávání. Nalezl jsem jej v prodeji služeb spojených se svobodným software, který jsem vyvíjel. To zahrnovalo vyučování předmětů jako například jak programovat GNU Emacs a jak si přizpůsobit GCC, a vývoj software, převážně portování GCC na nové platformy.
V dnešní době provozuje každý z těchto typů obchodu se svobodným software řada korporací. Některé distribuují kolekce svobodného software na CD-ROM; jiné prodávají podporu k různým uživatelským úrovním: od uživatelských otázek přes spravování chyb až k přidávání nových součástí. Dokonce se začínají objevovat firmy se svobodným software založené na nových softwarových produktech.
Přesto však pozor -- řada firem, které se samy spojují s termínem ,,open source'' vpodstatě zakládá svůj business na nesvobodném software, který pracuje spolu se svobodným software. Nejsou to firmy svobodného software, jedná se o firmy proprietárního software, o firmy, jež se pomocí svých produktů snaží odlákat uživatele od svobody. Nazývají je ,,přidanými hodnotami,'' na které chtějí, abychom si zvykli: jedná se o volbu mezi výhodností a svobodou. Ceníme-li si svobody více, měli bychom je nazývat ,,produkty zbavené svobody''.
Hlavním cílem GNU bylo, aby se jednalo o svobodný software. Dokonce ani kdyby GNU nebylo technicky vyspělejší než Unix, bylo by pro společnost přínosem, neboť by dovolovalo uživatelům spolupracovat a respektovalo jejich svobody.
Bylo ovšem přirozené aplikovat známé standardy z praxe na různé činnosti -- například dynamické rozvržení datových struktur, aby se vyhly libovolným fixním limitům a manipulovaly s veškerými možnými osmibitovými kódy všude tam, kde to mělo smysl.
Navíc jsme se rozhodli odmítnout zaměření Unixu na malé velikosti paměti a to tak, že jsme se rozhodli nepodporovat 16-bitové počítače (bylo zřejmé, že v době, kdy bude GNU systém dokončen, budou normou 32-bitové stroje), a nesnažit se o snížení paměti, pokud nepřekročila jeden megabyte. U programů, pro něž nebyly velmi rozsáhlé soubory rozhodující, jsme povbuzovali programátory, aby načetli celé vstupní soubory do jádra a poté scannovali jejich obsahy bez obav o I/O operace.
Tato rozhodnutí umožnila mnoha GNU programům předčit jejich unixové protějšky ve spolehlivosti a rychlosti.
Jak vzrůstala reputace projektu GNU, lidé nám začali nabízet stroje používající UNIX. Bylo to velmi užitečné, protože nejsnazší cesta k rozvoji komponent GNU spočívala v nahrazování komponent jednoho systému komponenty druhého systému. Bohužel to však vyvolalo etický problém: jestli je vůbec správné mít kopii Unixu.
UNIX byl (a je) proprietární software a filozofie projektu GNU říká, že bychom proprietární software neměli používat. Když jsem však aplikoval táž odůvodnění, která vedla k závěru, že násilí v sebeobraně je ospravedlnitelné, došel jsem k tomu, že je etické používat proprietární software tam, kde je důležitým pro vývoj svobodných náhrad, které by pomohly ostatním přestat používat proprietární software.
Ačkoliv se jednalo o ospravedlnitelnou špatnost, stále to byla špatnost. Nyní již nemáme žádné další kopie Unixu, protože jsme je nahradili svobodnými operačními systémy. Pokud bychom na nějakém počítači nemohli nahradit stávající počítačový systém systémem svobodným, nahradili bychom raději počítač.
Jak projekt GNU pokračoval a přibývalo systémových komponent, rozhodli jsme se vytvořit seznam chybějících komponentů. Verbovali jsme vývojáře, aby napsali chybějící součásti. Tento seznam se stal známý jako seznam úloh GNU. Kromě chybějících unixových komponentů jsme přidali i jiný užitečný software a dokumentaci, kterou by podle nás měl opravdu kompletní systém mít.
Nyní jsou na seznamu úloh GNU stěží nějaké komponenty Unixu -- všechno již bylo vytvořeno, kromě několika nepříliš důležitých. Seznam je však zabrán projekty, které by někteří mohli označit jako ,,aplikace''. Jakýkoliv program, jež se zamlouvá více lidem než úzké skupině uživatelů, by bylo užitečné přidat k operačnímu systému.
Dokonce i hry jsou a již od počátku byly v seznamu úloh. Unix hry zahrnoval, a proto je mělo GNU přirozeně zahrnovat také. Ovšem kompatibilita nebyla pro hry problémem, a tak jsme se neřídili seznamem her, které měl Unix. Namísto toho jsme sepsali spektrum odlišných typů her, které by se uživatelům mohly zamlouvat.
GNU knihovna pro C používá zvláštní druh copyleftu nazvaný GNU Library General Public License. Tento copyleft umožňuje spojit proprietární software s knihovnami. Proč jsme udělali tuto výjimku?
Není to otázka principu; neexistuje princip, který by tvrdil, že produkty proprietárního software mají oprávnění zahrnovat náš kód. (Proč přispívat projektu založeném na tom, že s námi odmítne cokoliv sdílet?) Používání LGPL pro C knihovnu, či pro jakoukoliv knihovnu, je otázkou strategie.
C knihovna má generickou úlohu; každý proprietární systém nebo překladač má C knihovnu. Z toho důvodu by vytovření naší C knihovny dostupné pouze svobodnému software nemělo pro svobodný software žádné výhody -- jen by odrazovalo od jejího používání.
Jeden systém je ovšem výjimkou: v GNU systému (a ten zahrnuje GNU/Linux), je GNU C knihovna jedinou C knihovnou. Distribuční podmínky GNU C knihovny určují, zda je možné kompilovat proprietární program pro GNU systém. Neexistuje žádný morální důvod, který by povoloval proprietární aplikace na GNU systému, ale ze strategického hlediska to vypadá, že jejich zamítnutí by spíše odrazovalo od používání GNU systému než povzbuzovalo rozvoj svobodných aplikací.
Proto je používání knihovny GPL dobrou strategií pro knihovnu C. U ostatních knihoven se tyto strategické otázky rozhodují případ od případu. Jestliže se díky knihovně dají psát zvláštní typy programů, potom je její vydání pod GPL a omezení pouze na svobodné programy způsobem, jak pomoci ostatním vývojářům svobodného software, tím, že budou zvýhodněni oproti proprietárnímu software.
Povšimněte si například GNU Readline, knihovny, která byla vyvinuta, aby poskytla editační příkazovou řádku pro BASH. Readline je vydáno pod obyčejnou GNU GPL, ne pod knihovnou GPL. To má pravděpodobně za následek snížení množství užití Readline, ale to pro nás není ztráta. Mezitím byla vytvořena přinejmenším jedna softwarová aplikace tak, aby mohla používat Readline, a to je pro komunitu velkou výhrou.
Vývojáři proprietárního software mají výhody, které jim poskytují peníze; vývojáři svobodného software potřebují vytvářet výhody pro sebe navzájem. Doufám, že jednou budeme mít rozsáhlou sbírku knihoven krytých GPL, k nimž nebude mít proprietární software přístup a nebudeme mu tak poskytovat užitečné moduly sloužící jako stavební kameny nového svobodného software a získáme tak další výhodu pro jeho rozvoj.
Eric Raymond říká, že ,,každý dobrý program je psán tak, aby vyřešil problém svého tvůrce.'' Možná je to občas pravdou, ale mnoho důležitých součástí GNU software bylo rozvíjeno kvůli tomu, abychom měli kompletní svobodný operační systém. Byly vytvořeny na základě určité představy a plánu, ne z impulzu.
Například jsme vyvíjeli GNU C knihovnu, protože systém podobný Unixu ji potřebuje, Bourne-Again Shell (bash), protože systém podobný Unixu potřebuje shell, a GNU tar, z toho samého důvodu jako tyto dvě předchozí. Totéž platí i pro mé vlastní programy-- GNU C překladač, GNU Emacs, GDB a GNU Make.
Některé GNU programy byly vyvíjeny, aby se ,,utkaly'' s určitými překážkami kladenými vůči svobodě. Vyvíjeli jsme gzip, abychom nahradili Compress program, jež naše komunita ztratila kvůli LZW patentům. Našli jsme lidi, aby vyvinuli LessTif a později začali pracovat na GNOME a Harmony, zaměřené na potíže způsobené jistými proprietárními knihovnami (viz níže). Vyvíjíme GNU Privaci Guard, abychom nahradili populární nesvobodný kryptovací software, protože by si uživatelé neměli být nuceni vybírat mezi soukromím a svobodou.
Samozřejmě mnoho lidí, kteří psali tyto programy, práce zaujala, a řadu částí přidali různí lidé, kvůli svým potřebám a zájmům. To ale není důvod proč tyto programy existují.
Na počátku projektu GNU jsem si představoval, že vyvineme celý GNU systém a poté ho jako celek vydáme. To se však nestalo.
Od té doby, kdy byla každá součást GNU systému implementována na systém Unix, mohla být spouštěna na unixových systémech, dlouho předtím než esistoval kompletní GNU systém. Některé z těchto programů se staly populárními, a uživatelé je začali šířit a portovat --- do různých nekompatibilních verzí Unixu a někdy též do jiných systémů.
Programy se postupně staly daleko výkonnějšími a přitahovaly jak fondy, tak přispěvatele, k projektu GNU. Pravděpodobně to však zpozdilo zkompletování GNU projektu o několik let, neboť vývojáři GNU vložili svůj čas do údržby portů a přidávání částí k existujícím součástem, raději než aby pokračovali v psaní chybějících částí, jedné po druhé.
V roce 1990 byl již GNU systém téměř hotov; jedinou větší chybějící komponentou byl kernel. Rozhodli jsme se implementovat náš kernel jako soubor serverových procesů na vrcholu Machu. Mach je mikrokernel vyvinutý na univerzitě Carnegie Mellon a univerzitě v Utahu; GNU HURD je sbírkou serverů (nebo ,,stádo pakoňů -- ,,herds of gnus''), který fungoval na vrcholu Machu, a vykonává různé činnosti unixového jádra. Zahájení vývoje se zpozdilo kvůli tomu, že jsme čekali, až uvolní Mach coby svobodný software, jak nám bylo slíbeno.
Jedním z důvodů, proč jsme si vybrali tento design, bylo vyvarovat se nejobtížnější části práce: debuggování kernelového programu bez debuggeru na úrovni zdrojového kódu. Tato práce byla již hotova, v Machu, a zamýšleli jsme ladit HURD servery jako uživatelské programy, s GDB. Trvalo to však velmi dlouho a ukázalo se, že je velmi obtížné odladit multiprocesové servery, které si navzájem posílají zprávy. Trvalo mnoho let než HURD začal spolehlivě fungovat.
Nepředpokládali jsme, že se kernel bude jmenovat HURD. Jeho původní název byl Alix -- podle jména mé tehdejší přítelkyně, systémové administrátorky, která poukázala na to, že by se hodilo její jméno hodilo do našeho systému pojmenovávání Unixů; vtipkovala před svými přáteli, že by měl někdo pojmenovat kernel po ní. Nic jsem neříkal, ale rozhodl jsem se ji překvapit kernelem s názvem Alix.
Nakonec to tak nezůstalo. Michael Bushnell (nyní Thomas), hlavní vývojář kernelu, upřednostňoval název HURD a z Alix udělal odkaz k určité části kernelu -- konkrétně k té, co zachycuje systémová volání a posílá zprávy HURD serverům.
Nakonec jsme se s Alix rozešli a změnila si jméno; nezávisle na tom byl změněn design HURDu tak, aby C knihovna posílala zprávy přímo serverům, a díky tomu součást Alix zmizela z návrhu.
Ještě předtím než se tohle všechno událo, se Alix setkala se svými přáteli a ti jí řekli o názvu Alix ve zdrojovém kódu HURDu, takže jméno odvedlo svou práci.
GNU Hurd není připravený pro opravdové použití. Naštěstí je dostupný jiný kernel. V roce 1991 vyvinul Linus Torvalds kernel kompatibilní s Unixem a nazval ho Linux. Kolem roku 1992 vznikl zkompletováním Linuxu s ne zcela hotovým GNU systémem úplný svobodný operační systém. (Jejich zkombinování bylo samozřejmě samo o sobě podstatným úkolem.) Vlastně můžeme spouštět verze GNU systému díky Linuxu.
Nazýváme tuto systémovou verzi GNU/Linux, abychom vyjádřili, že se jedná o kombinaci GNU systému a linuxového jádra.
Prokázali jsme naši schopnost vyvinout široké spektrum svobodného software. To neznamená, že jsme neporazitelní a nezastavitelní. Díky několika obtížím je budoucnost svobodného software nejistá; střet s nimi bude vyžadovat velké úsilí a vytrvalost, možná trvající roky. Bude vyžadovat takové odhodlání, v němž lidé dají najevo, že si své svobody váží a nenechají si ji od nikoho vzít.
Následující čtyři oddíly popisují tyto výzvy.
Výrobci hardware mají stále vzrůstající tendence udržovat hardwarové specifikace v tajnosti. Díky tomu je obtížné psát svobodné ovladače, aby Linux a XFree86 mohly podporovat nový hardware. Nyní máme kompletní svobodné systémy, ale nebudeme je mít později, pakliže nebudou schopny podporovat budoucí počítače.
Existují dvě možnosti jak zvládnout tento problém. Programátoři se mohou zabývat tzv. zpětným inženýrtsvím, aby zjistili jak podporovat hardware. Zbylí z nás si mohou vybrat hardware, který je podporovaný svobodným software; jak náš počet poroste, utajování specifikací se stane sebeporážející taktikou.
Zpětné inženýrství je důležitou prací; budeme mít programátory s dostatečným odhodláním pustit se do toho? Ano -- pokud budou lidé přesvědčeni, že svobodný software je otázkou principu a nesvobodné ovladače nemohou být tolerovány. A utratí mnoho z nás peníze navíc, či dokonce obětuje trochu víc času, abychom mohli používat svobodné ovladače? Ano, jestliže odhodlání mít svobodu bude rozšířené.
Nesvobodné knihovny fungující na svobodných operačních systémech jsou jakousi pastí na vývojáře svobodného software. Lákavými rysy knihovny jsou návnady; pokud použijete tuto knihovnu, spadnete do pasti, protože váš program nebude moci být užitečnou částí svobodného operačního systému. (Stručně řečeno, můžeme zahrnout váš program, ale nebude fungovat bez chybějící knihovny.) Ještě hůře, pokud se program využívající proprietární knihovnu stane populární, může nalákat jiné nic netušící programátory do pasti.
První ukázkou tohoto problému byl Motif toolkit v osmdesátých letech. Přestože zde ještě nebyly svobodné operační systémy, bylo zřejmé, jakou potíží pro ně později Motif bude. GNU projekt na to reagoval dvěma způsoby: požádal jednotlivé projekty svobodného software, aby podporovaly svobodný X toolkit stejně jako Motif a požádál také někoho, aby napsal svobodnou náhradu za Motif. Trvalo to velmi dlouho; LessTif, vyvíjený Hungry Programmers (,,Hladoví programátoři''), se stal dostatečně výkonným na podporu většiny aplikací Motifu až v roce 1997.
Mezi roky 1996 a 1998 byla použita jiná nesvobodná GUI toolkit knihovna -- Qt -- v důležité kolekci svobodného software, desktopu KDE.
Svobodné GNU/Linux systémy nebyly schopny používat KDE, protože jsme nemohli používat knihovnu. Avšak někteří komerční distributoři systémů GNU/Linux, ti kteří striktně nelpěli na svobodném software, přidávali ke svým systémům KDE -- vytvářeli tak schopnější systém, který byl však ošizen co se svobody týče. Skupina KDE aktivně povzbuzovala programátory, aby používali Qt, a milióny nových ,,linuxových uživatelů'' nebyly nikdy seznámeny s tím, že je s tím něco v nepořádku. Situace se zdála být hrozivá.
Komunita svobodného software odpověděla na problém dvěma způsoby: GNOME a Harmony.
GNOME, GNU Network Object Model Environment, je desktopovým projektem GNU. Zahájil ho Miguel de Icaza v roce 1997 a vyvíjel s podporou Red Hat Software. GNOME chtěl poskytnout podobná desktopová vybavení, která by však používala pouze svobodný software. Měl rovněž technické výhody, jako například podporu mnoha jazyků, nikoliv jen C++. Hlavním důvodem však byla svoboda: aby nebylo třeba používat jakýkoliv nesvobodný software.
Harmony je kompatibilní knihovna, navržená tak, aby umožňovala spustit KDE software bez použití Qt.
V listopadu 1998 ohlásili vývojáři Qt změnu licence. Z Qt se tak měl stát svobodný software. Nejsem si zcela jistý, ale domnívám se, že se tak stalo zčásti kvůli přísné reakci firmy na problém, který Qt vznesl, když byl nesvobodný. (Nová licence je nevýhodná a nespravedlivá, takže je stále žádoucí vyvarovat se použití Qt.)
[Dodatečná poznámka: Qt bylo znovuvydáno pod GNU GPL v září 2000, a tak byl problém vpodstatě vyřešen.]
Jak zareagujeme na další lákavou nesvobodnou knihovnu? Porozumí celá komunita tomu, že je třeba nespadnout do pasti? Nebo se mnozí z nás vzdají svobody ve prospěch pohodlí a vznikne velký problém? Naše budoucnost závisí na naší filozofii.
Největší hrozba, které čelíme, jsou softwarové patenty, které mohou odstranit algoritmy a hlavní části programu z dosahu svobodného software až na dvacet let. Patenty na LZW kompresní algoritmy byly zavedeny v roce 1983 a stále nesmíme vydávat svobodný software, abychom vytvářeli vlastní komprimované GIFy. V roce 1998 byl stažen z prodeje svobodný program na vytváření komprimovaných MP3 souborů pod hrozbou soudního procesu.
Jsou různé způsoby jak si poradit s patenty: můžeme hledat důkaz, že patent je neplatný, anebo se můžeme poohlížet po alternativních řešeních, abychom mohli projekt vytvořit. Každá z těchto metod je však účinná pouze v některých případech; pokud obě dvě selžou, patent může přinutit všechen svobodný software, aby se vzdal některých částí, které uživatelé vyžadují. Co budeme dělat, jestliže k tomu dojde?
Ti, kteří si cení svobodný software díky svobodě, kterou poskytuje, u něho zůstanou. Pokusíme se dělat naši práci bez patentovaných součástí. Ti, kteří si svobodného software cení kvůli předpokladům, že bude technicky vyspělejším, nazvou pravděpodobně zbrzdění kvůli patentu selháním. Ačkoli je tedy užitečné hovořit o praktické účinnosti modelu rozvoje nazývaného ,,katedrála'' , spolehlivosti a výkonnosti některého svobodného software, nesmíme se v tomto bodě zastavit. Musíme hovořit o svobodě a principu.
Nějvětší nedostatek nšich svobodných operačních systémů nespočívá v software -- je to nedostatek dobrých svobodných manuálů, které můžeme zahrnout do našich systémů. Dokumentace je nezbytnou součástí každého balíku software; když sadě programů důležitého svobodného software chybí dobrá svobodná příručka, je to velká mezera. V dnešní době máme mnoho takových mezer.
Svobodná dokumentace, jako svobodný software, se vztahuje ke svobodě, nikoliv k ceně. Kritéria, kterí musí splňovat svobodná příručka, jsou prakticky totožná s kritérii pro svobodný software: jedná se o poskytnutí určitých svobod všem uživatelům. Musí být povolena redistribuce (včetně komerčního prodeje), a to jak v on-line, tak v tištěné podobě, aby manuál mohl doprovázet každou kopii programu.
Povolení k modifikaci je rovněž rozhodující. Nevěřím ale tomu, že je pro lidi nezbytné mít povolení k modifikaci všech druhů článků a knih. Myslím si například, že vy nebo já smíme omezovat modifikaci článků jako je tento, kde se popisují naše činy a názory.
Je zde ovšem zvláštní důvod, proč je svoboda modifikace rozhodující pro dokumentaci svobodného software. Pokud lidé uplatní svá práva modifikovat software a přidávat nebo měnit jeho části, jsou-li svědomití, změní také příručku -- aby poskytli přesnou a použitelnou dokumentaci spolu s modifikovaným programem. Příručka, která programátorům nedovoluje svědomitě dokončit práci, nesplňuje potřeby komunity.
Některá omezení modifikací jsou předkládána tak, aby nezpůsobovala potíže. Například požadavky na zachování originálního autorské copyrightové poznámky, distribuční podmínky nebo seznam autorů jsou v pořádku. Není problémem požadovat, aby modifikované verze v sobě zahrnovaly poznámku o své modifikaci, včetně označení částí, které byly smazány či změněny, dokud tyto oddíly pojednávají o netechnických tématech. Tato omezení nepředstavují žádnou potíž, protože neznemožňují svědomitému programátorovi přizpůsobení příručky tak, aby se hodila k modifikovanému programu. Jinými slovy, neznemožňují komunitě svobodného software plně využívat manuál.
Nicméně musí být možné modifikovat veškerý *technický* obsah manuálu a posléze redistribuovat výsledky přes běžná média, přes všechny běžné kanály; jinak jsou totiž omezení komunitě na obtíž, manuál není svobodný a je potřeba vytvořit jiný.
Budou vývojáři svobodného software odhodlaní vytvářet širokou škálu svobodných příruček? Opět, naše budoucnost závisí na naší filozofii.
V dnešní době je přibližně deset miliónů uživatelů na systémech GNU/Linux jako například Debian GNU/Linux a Red Hat Linux. Svobodný software vyvinul několik praktických výhod, takže k němu uživatelé přecházejí již i z čistě praktických důvodů.
Dobré následky jsou zřejmé: větší zájem o rozvoj svobodného software, více zákazníků pro obchod se svobodným software a větší schopnosti povzbuzovat společnosti, aby namísto proprietárních produktů vyvíjely komerční svobodný software.
Zájem o software však narůstá rychleji než povědomí o filozofii, na níž je postaven, a to vede k potížím. Naše schopnost střetávat se s výše popsanými výzvami a nebezpečími závisí na vůli pevně hájit svobodu. Abychom se ujistili, že naše komunita tuto vůli má, musíme předávat naše myšlenky a nápady všem nově příchozím členům v naší komunitě.
Bohužel však v tomto selháváme: úsilí přilákat do naší komunity nové uživatele dalece předstihuje úsilí naučit je chování naší komunity. Potřebujeme dělat obojí a udržet tato úsilí v rovnováze. [Proto také vznikl tento překlad. Zmiňte se o českém překladu stránek projektu GNU kamarádům a kolegům, ať se také dozví o naší komunitě -- pozn. korek.]
Učení nových uživatelů o svobodě se ztížilo v roce 1998, kdy se část komunity rozhodla přestat používat termín ,,svobodný software'' a namísto toho užívat termín ,,open source software''.
Někteří z těch, co upřednostňovali tento výraz, si dávali pozor, aby nezaměňovali slovo ,,svobodný'' se slovem ,,zdarma'' -- správný záměr. Jiní se naopak distancovali od ducha principu, jež motivoval hnutí svobodného software a uživatele GNU projektu, a aby se zalíbili řídícím pracovníkům a obchodním uživatelům, mnoho z nich následovalo ideologii, která staví prospěch nad svobodu, nad komunitu, nad principy. Rétorika ,,open source'' se zaměřuje na možnost vytvářet vysoce kvalitní, silný software, ale vyhýbá se myšlenkám svobody, komunity a principu.
Jasným příkladem tohoto jsou ,,linuxové'' magazíny -- jsou plné inzerátů na proprietární software, který pracuje pod GNU/Linuxem. Až se objeví příští Motif či Qt, budou tyto magazíny před nimi programátory varovat, nebo na ně naopak otiskovat inzeráty?
Podpora obchodu může být pro komunity v mnoha ohledech přínosná. Ovšem získání jejich podpory tím, že budeme mluvit ještě méně o svobodě a principu, může být katastrofální; předchozí nevyváženost mezi rozsahem uživatelů a vzděláním se tak ještě zhoršuje.
,,Svobodný software'' a ,,open source'' popisují víceméně tutéž kategorii software, ale říkají odlišné věci o software a o hodnotách. GNU projekt pokračuje v užívání termínu ,,svobodný software'', aby dal najevo, že nejen technologie, ale hlavně svoboda je důležitá.
Yodova filozofie (Neexistuje ,,pokus'') zní hezky, ale pro mě je neplatná. Většinu své práce jsem dělal s úzkostí, zda na ní mám a v nejistotě, zda dosáhnu cíle, který jsem si vytyčil. Přesto jsem se pokusil, protože mezi mým městem a nepřítelem nebyl nikdo jiný než já. Ke svému překvapení jsem občas uspěl.
Občas jsem neuspěl; některé z mých měst padly. Poté jsem našel další ohrožené město a připravil se na bitvu. Po čase jsem se naučil vyhledávat hrozby a stavět se mezi ně a mé město, vyzývaje ostatní hackery, aby přišli a připojili se ke mně.
Nyní již často nejsem jediný. Je to pro mě úleva a radost, když vidím zástupy hackerů, kteří se pouštějí do téhož, aby pokračovali, a uvědomuji si, že by toto město mohlo přežít -- nyní. Nebezpečí jsou však rok od roku větší a nyní se Microsoft explicitně zaměřil na naši komunitu. Nemůžeme pokládat budoucnost svobody za samozřejmou. Neberte to jako samozřejmost! Jestliže si chcete udržet vaši svobodu, musíte být připraveni ji bránit.
FSF & GNU informace & otázky na gnu@gnu.org. Další možnost jak kontaktovat FSF.
Komentáře k těmto web stránkám na webmasters@www.gnu.org, jiné otázky zasílejte na gnu@gnu.org.
Copyright (C) 1996, 1997, 1998, 1999, 2004 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
Doslovné kopírování a šíření tohoto celého dokumentu na jakémkoliv médiu je dovoleno v případě, že tato podmínka bude zachována.
Updated: $Date: 2005/05/05 19:37:10 $ $Author: novalis $