Open Source a svobodný software

Historie a filozofie nekomerčního software

Ještě před několika lety se všeobecně soudilo, že dominantním producentem softwaru bude Microsoft a jeho platforma Windows, která v první polovině 90. let získala naprosto dominantní postavení na trhu softwaru pro osobní počítače a začínala se výrazně prosazovat i ve sféře pracovních stanic a serverů. Microsoft si vybudoval tak silnou pozici, že každého konkurenta mohl buď ekonomicky zničit, nebo (častěji) koupit. Ale pak, jakoby odnikud, vystoupilo hnutí Open Source softwaru a ukázalo alternativní cestu vývoje a distribuce programů. Počátky open source ale spadají mnohem hlouběji do historie.

Motivace

V 70. letech minulého století pracoval v AI Lab MIT (Laboratoř pro výzkum umělé inteligence na Massachusetském technologickém institutu) programátor Richard M. Stallman. Jeho úkolem bylo vylepšování systému ITS (the Incompatible Timesharing System), který byl v té době na AI Lab používán na počítačích Digital PDP-10. RMS byl tehdy byl již známý, protože roku 1975 publikoval textový editor Emacs (který se přes svou složitost těší značné oblibě dodnes). V té době bylo běžné sdílení softwaru i se zdrojovými kódy, tak aby mohl být používán a vylepšován každým, kdo o to projeví zájem. R. Stallman o té době napsal: „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.“

Idylické doby skončily počátkem 80. let, kdy značná část programátorů z AI Lab odešla k soukromé softwarové firmě a začala svůj kód chránit patenty. K dovršení všeho Digital opustil platformu PDP-10, v té době již poněkud obstarožní, takže software vyvinutý pro ITS (včetně ITS samotného) přestal být použitelný, a veškerý software na nových počítačích již byl chráněn patenty a licenčními ujednáními, která jej zakazovala zkoumat a upravovat. To se Stallmanovi nelíbilo, byl zvyklý na to, že si mohl upravit cizí kód a jiní lidé mohli upravit jeho kód, pokud to bylo potřeba. Považoval, a stále považuje, toto právo za podobně důležitou výsadu a proto zahájil práci na vývoji a propagaci free softwaru.

Zde se musíme se Stallmanem chvíli zastavit a vysvětlit význam slova free. Jedním z typických znaků angličtiny je fakt, že většina slov má několik významů, které nabývají v závislosti na kontextu. Slovo free má dva hlavní významy může znamenat buď svobodný, nebo zadarmo. Ač se to nezdá je v případě softwaru mezi těmito významy značný rozdíl. Stallman chápe slovo free ve smyslu svobodný; ostatně nejlépe to asi vyjadřuje slogan: ,,free speech, not free beer'' (svoboda slova, nikoli pivo zadarmo). Programy, které jsou zadarmo, nemusí být svobodné, a naopak, i svobodný software můžete prodávat. Nesmíte ale nikomu bránit v úpravách či další distribuci, pokud chcete, aby váš program byl svobodný. Stallman svobodu softwaru chápe jako politickou záležitost, což mu od některých lidí vysloužilo přezdívku „softwarový komunista.“ Dokonce přirovnává opatření organizací podobných naší BSA (zastrašování, policejní razie...) k praktikám v bývalém SSSR, „kde každá kopírka měla hlídače, který zabraňoval nelegálnímu kopírování, a kde si lidé museli informace kopírovat tajně a šířit je ,,z ruky do ruky'' jako samizdat. Je tu samozřejmě rozdíl: motivy pro kontrolu informací v Sovětském Svazu byly politické; v USA je motivem zisk. Ale jsou to skutky, které nás ovlivňují, ne motivy. Jakýkoli pokus o omezení sdílení informací, jedno z jakého důvodu se tak děje, vede ke stejným metodám a stejné bezohlednosti.“

FSF a GNU

Poslední kapkou, která způsobila přetečení Stallmanova poháru trpělivosti, bylo, když mu firma Xerox zamítla přístup ke zdrojovému kódu ovladačů k tiskárně, kterou AI Lab MIT používala a s jejichž funkcí nebyl RMS spokojen. Odešel proto z MIT, aby mu nikdo nemohl bránit zveřejňovat výsledky své práce (přesto ale RMS stále se svolením vedení MIT pracuje a dokonce bydlí v AI Lab), založil Free Software Foundation (FSF) a zahájil projekt GNU. GNU je rekurzivní zkratka pro GNU is Not Unix a označuje (překvapivě) operační systém unixového typu. Jeho vývoj byl zahájen v roce 1984 a předcházelo mu vydání GNU Emacsu – verze Emacsu pro Unix. GNU měl být nejen operační systém, mělo to být kompletní programové vybavení, aby RMS a další lidé z FSF nemuseli používat žádné nesvobodné programy. Poměrně rychle byla vyvinuta základní sada systémových (shell, překladač GCC, debugger GDB, systémová knihovna libc, porty systémových utilit a další) a aplikačních programů (TeX, již zmíněný Emacs a další), ale chyběl kernel, který by umožnil distribuovat GNU samostatně. Přesto se GNU programy velice rychle rozšířily mezi uživateli různých Unixů a pro své kvality se staly poměrně oblíbenými. Roku 1987 FSF publikovala první verzi licenčního ujednání GNU/GPL (General Public License), jejíž hlavní body znemožňují použití kódu chráněného GPL pod jinou licencí, než GPL. Tento fakt je nazýván virovou vlastností GPL a je častým terčem kritik.

Linux, BSD

Jeden ze zlomových okamžiků nastal v roce 1991, kdy si mladý finský student Linus Torvalds začal zkoušet možnosti rozšířeného režimu procesoru i386. Jako základ svých pokusů použil operační systém Minix – malý Unix na platformě 80x86. Výsledkem jeho pokusů bylo jádro nového unixového systému, nazvané Linux, které Linus zveřejnil včetně zdrojových kódů na tehdy ještě nepříliš rozšířeném Internetu. Současně s prvními verzemi Linuxu vznikl i port 4.4BSD na procesory i386 (386BSD), z něhož se později vyvinul FreeBSD. Tehdy se všeobecně soudilo, že BSD se stane nejdůležitějším Unixem na platformě 80x86. Bohužel se objevily nějaké licenční problémy s několika částmi BSD (jednalo se o pouhých 6 souborů!) a to na několik let vydávání FreeBSD defacto znemožnilo. Přesto ale vznikly hned tři svobodné verze BSD Unixu: FreeBSD, které se snaží být komplexním unixovým systémem hlavně na platformě i386, NetBSD, zaměřené na podporu široké škály hardware, a OpenBSD, u kterého byl proveden kompletní bezpečnostní audit zdrojových kódů, což z něj učinilo jeden z nejvíce bezpečných operačních systémů (již několik let nebylo hlášeno uspěšné vzdálené napadení systému se standardní instalací OpenBSD). Linuxu se brzy podařilo z trhu vytlačit malé komerční Unixy a zvrátit trend, který nastal v 80. letech: štěpení unixového světa na nekompatibilní ostrovy jednotlivých poskytovatelů, kteří tak téměř pohřbili jednu ze zásadních vlastností Unixu – přenositelnost. Poskytovatelů, kteří si vzájemně házeli klacky pod nohy a umožnili tak Microsoftu začátkem 90. let ovládnutí trhu produkty, které byly ve srovnání s Unixem a jeho nástroji značně nedokonalé.

Katedrála a tržiště

V druhé polovině 90. let došlo k zásadnímu zlomu v oblasti svobodného softwaru. S masivním nástupem Internetu se značně zvýšila jeho dostupnost, ale hlavně vznikl mocný komunikační kanál, který mnoha lidem umožnil se zapojit do vývoje a testování. V té době se také začala výrazněji oddělovat od FSF skupina lidí, kteří nepovažovali svobodu softwaru za zásadní politický cíl, lidé, kterým nevadilo používat proprietální programy, pokud jim byly užitečné.

Vzniklo tak hnutí Open Source, které sdílí kód z důvodů nikoli politických či ideových, ale prostě proto, že jim otevřený vývoj softwaru připadá jako výhodnější, spolehlivější a rychlejší než uzavřený model. Mezi hlavní postavy tohoto hnutí patří Linus Torvalds a Eric Raymond.

V roce 1998 shrnul základní teze OSS Eric Raymond v eseji Katedrála a tržiště. Vycházel při tom z vlastních poznatků, získaných při vývoji programu Fetchmail.

Ve své eseji Raymond definoval dva základní modely vývoje programů – stavba katedrály a tržiště. Budování katedrály je složitý proces, který vyžaduje přesné rozdělení úloh a je náročný na koordinaci. V týmech, vyvíjejících software je tomu podobně, každý člen má pevně vymezené pole úkolů a kompetencí. Naproti tomu tržiště, středověký bazar, zdálky připomíná chaos; chaoticky vypadá i tento způsob psaní programů, kdy stovky a tisíce přispěvatelů posílají svůj kousek kódu nebo patch do archivu, z něhož se použitelný a kvalitní program nakonec vyloupne jakoby zázrakem. Dlouho byl styl tržiště považován za vhodný pouze pro menší projekty, ale Linux dokázal a dokazuje, že i operační systémy je možné vyvíjet „na tržišti.“

Raymond ve své eseji formuloval několik základních tezí a pravidel pro vývoj programů stylem tržiště. První říká, že každý dobrý program řeší potíže samotného programátora. Jinak formulováno: „programátora něco svědí, on se podrbe a započne tak dobré softwarové dílo“. A druhé pravidlo praví: „dobří programátoři vědí, co psát, ti velcí vědí, co přepsat (a znovu použít).“ Jádro Linuxu vzniklo přepsáním jádra Minixu, jako základ Fetchmailu Raymond použil program popclient. Tento původní program slouží jako jakési lešení, po němž se program šplhá, časem je úplně odstraněno, ale v počátku vývoje je nezbytné. Časem se snad v každém programu dostaneme na místo, kdy nás okolnosti nutí část programu úplně přepsat, protože se kód stává nesrozumitelným a znemožňuje elegantní a jednoduché řešení některých problémů. Raymond radí: „Počítejte s tím, že aspoň jednou budete muset vše přepsat, stejně vás to nemine.“ Neboli: problému opravdu porozumíte až ve chvíli, kdy se ho pokusíte vyřešit. I když se toto řešení časem neukáže jako optimální, může napovědět.

Esej Katedrála a tržiště definovala několik základních stádií vývoje Open Source projektu. Prvním z nich je založení projektu, naprogramování základních částí. Publikování zárodku programu, který nemusí pracovat dobře, ale přesto na něm začíná být zřejmé, že pracovat dobře bude. Že se z toho neohrabaného programu v dohledné době stane něco užitečného. Raymond to nazval „uvěřitelný příslib.“ Ten má přilákat další spolupracovníky a pokud se to podaří, nastane druhá fáze (a projekt začíná žít na tržišti); původní autor se stane kordinátorem, místo vytváření programového kódu vytváří a udržuje komunitu vývojářů a uživatelů. Množství přispěvatelů rychle roste a úměrně tomu se vyvíjí i celý projekt. Program je zveřejňován velice často (například nová verze jádra Linuxu ve vývojové řadě vychází každých několik dnů, v roce 1991 se doba mezi jednotlivými verzemi jádra pohybovala dokonce v řádu hodin), a to i když je velice pravděpodobné, že bude obsahovat množství chyb. Proč? Časté vydávání nových verzí udržuje v komunitě pocit, že dílo „žije“ a problémy jsou rychle řešeny. Uživatelé se snaží přispět ke společnému dílu, hlásí chyby, navrhují možná řešení problémů, píší kód nových funkcí. Program testuje mnoho lidí, kteří mohou objevit mnohem víc chyb, než je v silách jakéhokoli testovacího týmu. Slovy Erica Raymonda: „Má původní formulace tohoto jevu zněla: každý problém bude pro někoho řešitelný. Linus ovšem upozornil, že člověk, který problému porozuměl a vyřešil ho, nemusí být a většinou nebývá ten, kdo jej první charakterizoval. Linus říká: „Někdo nalezne problém a někdo jiný mu rozumí. A já dokonce tvrdím, že nalézt problém je náročnější.“ Důležité ale je, že nalezení i vyřešení většinou proběhne rychle.“ Což se liší od přístupu stavitelů katedrál, kteří dlouhou dobu před vydáním testují a ladí své dílo – aby brzo po vydání zjistili, že spoustu chyb přehlédli. Masivně paralelní vývoj je obrovskou výhodou otevřeného software v konkurenci s proprietálními programy. I na menších projektech se podílí stovky lidí, programátorů a testerů, u těch velkých (jako například jádro Linuxu) jde počet vývojářů do tisíců, což jsou počty, které si žádná firma nemůže dovolit.

Časem projekt přechází do další fáze. Program je již velice vyspělý a lidé začnou odhlašovat z konferencí, na nichž probíhá komunikace vývojářů a testerů. Odůvodňují to tím, že program již nepotřebuje jejich další práci. Většina z nich si najde nějaký jiný, slibný a zajímavý program, kterému pomohou.

Poslední fáze, ke které může dojít, nastane, když i sám autor a koodinátor projektu ztratí motivaci pokračovat v díle. Pro tento případ Raymond radí: „Když ztratíte zájem o program, vaší poslední povinností je předat jej schopnému nástupci.“

Styl tržiště je ve světě otevřeného softwaru častý, ale přesto není používán vždy. Například valná část GNU byla napsána způsobem stavění katedrál, BSD systémy jsou vyvíjeny poměrně uzavřeným kruhem programátorů (FreeBSD vyvíjí asi 300 vývojářů a 16 členný tým koordinátorů, kteří sestavují oficiální verzi systému).

Open Source a komerční sféra – soužití...

V roce 1998 došlo ještě k jedné, z hlediska Open Source softwaru velice důležité události: společnost Netscape, která se svým webovým prohlížečem Navigator začala ztrácet pozice ve válce browserů s Internet Explorerem od Microsoftu (tehdy ve verzi 4), se rozhodla uvolnit zdrojové kódy Navigatoru. Toto rozhodnutí mělo dva dopady. Prvním byl vznik prohlížeče Mozilla, a druhým nový způsob vývoje komerčního softwaru. Ten spočívá v tom, že společnost založí Open Source projekt a jednou za čas vezme aktuální verzi programu, zahrne do něj proprietální úpravy a vydá jej jako komerční produkt. Podobný model vývoje zvolila v roce 2000 i společnost Sun se svým kancelářským softwarem StarOffice (respektive OpenOffice.org).

... i konflikty

Netscape, Sun a další ukázali alternativní, a jak se zdá i poměrně úspěšnou cestu vývoje komerčního SW. Ale přesto je stále rozšířenější „tradiční“ model. Uzavřený vývoj, na jehož konci je černá krabička, kterou uživatel může používat, ale nesmí otevřít.Některé firmy se cítí ohroženy svobodným softwarem, a tak se snaží proti němu bojovat (někdy i dosti nečistým způsobem). To s sebou nese další negativní jevy, jako uzavírání a pozměňování specifikací či používání nedokumentovaných utajovaných datových formátů, které jsou často nekompatibilní se staršími verzemi (*.doc je toho zářným příkladem). Firmy se snaží uzamknout své uživatele, zablokovat jim možnost snadného přestupu k jinému programu a nutí je často (samozřejmě za peníze) upgradovat. Což je přesně to, čemu se Richard Stallman bránil a co ho vedlo k založení FSF: omezování svobody uživatele.

Licence

Open Source programy jsou sice zadarmo a kdokoli si je může dle libosti upravovat, neznamená to ale, že by nepodléhaly (na rozdíl od Public Domain SW) nějaké licenci. Je samozřejmé, že takových licencí je celá řada. První takovou licencí je již zmiňovaná GNU/GPL. Jaké jsou její charakteristiky? GPL zavádí pojem „copyleft“. Jak je patrné, jedná se o určitý protiklad ke copyrightu. FSF vysvětluje, že zatímco copyright je určen k tomu, aby uživateli svobodu (upravovat a redistibuovat program) bere, copyleft tuto svobodu chrání tím, že bere možnosti ji omezit. Programy chráněné GPL bývají označovány jako copyleftované.

Základní body GPL říkají:

Pokud si chcete přečíst celý text GPL, je k dispozici na http://www.fsf.org/licenses/translations.html

Protože GPL je poměrně striktní (například zakazuje používat copyleftované knihovny v proprietálním SW) a stala se terčem častých kritik, FSF vydala volnější verzi LGPL (Lesser GPL), která již umožňuje kombinování svobodného a nesvobodného kódu.

Velice oblíbená je BSD licence:

  1. redistribuce ve formě zdrojového kódu musí zachovat informaci o autorských právech, seznam podmínek používání a poznámku o tom, že autor není zodpovědný za případné problémy vzniklé používáním jeho produktu

  2. redistribuce v binární podobě musí uvést informaci o autorských právech, podmínky používání a onu poznámku v dokumentaci a/nebo v jiných materiálech přiložených k distribuci

  3. všechny reklamní materiály hovořící o vlastnostech nebo použití tohoto software musí obsahovat následující sdělení:

    Tento produkt obsahuje software vyvinutý na Kalifornské univerzitě v Berkeley a jejími přispěvateli.

  4. ani jméno Kalifornské univerzity ani jméno přispěvatelů nesmí být použito ke schvalování či prosazování produktů založených na tomto software bez specifického, předem daného písemného povolení

Kromě originální BSD licence vznikla celá řada tzv. BSD-like licencí, které se od originálu liší jen zněním reklamního textu z bodu 3. Ten byl ale v konfliktu s GPL licencí (omezoval, i když velice specificky, práva uživatele) a jevil se poměrně neprakticky (neustálé narůstání délky reklamního sdělení), proto byl z BSD licence vypuštěn.

Kromě těchto existuje celá řada dalších, více či méně volných licencí, kromě licencí na software jsou i specializované licence na dokumentaci (GNU/FDL) a další díla. Vyčerpávající, i když ne úplný seznam naleznete na stránce http://www.fsf.org/licenses/license-list.cs.html.

Závěr

V současnosti se otevřený software velice rozšiřuje. Podařilo se odbourat zažitý předsudek, že když je něco zadarmo, je to podřadné kvality. Naopak, mnoho Open Source produktů ukázalo, že i software „zadarmo“ může snést přísné srovnání s „profesionálními“ programy. Apache je nejrozšířenějším webovým serverem na světě (na Apache běží více než 65% webových stránek na celém světě!), Linux se dokázal prosadit mezi nejvíce nasazované serverové systémy, FreeBSD je nasazeno například na webových serverech Yahoo.com. Také úřady v mnoha zemích přecházejí na používání svobodného software (kvůli bezpečnosti, spolehlivosti, možnosti úprav a v neposlední řadě i ceně) a otevřených formátů (je nepřípustné odepírat někomu přístup k informacím jen na základě toho, že nepoužívá software ABC verze x.y). Bohužel se tento trend v ČR zatím moc neprosazuje.

Velice působivý příměr, který svědčí o logičnosti kvality svobodného softwaru, je srovnání s vědou a výzkumem: vědec získává prestiž a uznání tím, že publikuje své teorie a experimentální data, nechává je podrobit se náročnému zkoumání od ostatních členů vědecké obce. Stejně tak hacker (myšleno v původním slova smyslu, tedy vyjímečně schopný programátor) si mezi členy kominity získává respekt tím, že produkuje kvalitní kód, o čemž se může každý na vlastní oči přesvědčit. V historické perspektivě se ukazuje, že kontrola práce jinými nezávislými odborníky je nejjistější cestou pro dosažení vysoké spolehlivosti.

Darwinovy evoluční zákony platí i ve světě softwaru: přežijí jen silní a vytrvalí. Prosadí se jen ten software, který má přínos pro svého uživatele. Je jisté, že Open Source v současnosti představuje pro mnohé tradiční producenty SW vážnou hrozbu a konkurenci, ale stejně tak je jisté, že je nutí k vývoji lepších programů. Který model se nakonec prosadí: uzavřený nebo otevřený? Není Open Source model ohrožením pro programátory, kteří v důsledku masivního nástupu otevřeného SW přijdou o práci? Podle mého názoru přežijí oba modely, a programátoři i nadále budou mít co jíst. Většinu (asi 75%) software totiž tvoří tzv. vertikální SW, programy nebo informační systémy psané na zakázku a rozšířené maximálně v několika kopiích. A hlavně – softwarový průmysl je průmysl služeb, i když se nám mnozí snaží namluvit, že je to průmysl výroby, takže existuje obrovský prostor pro komerční provoz technické podpory nebo úprav na zakázku.

Použitá literatura:

Okna software dokořán, Softwarové noviny 02/1999, str. 26

GNU Manifest, Richard M. Stallman

GNU projekt, Richard M. Stallman

Definice svobodného software, FSF

Katedrála a tržiště, Eric S. Raymond

Žít s otevřenou myslí, Eric S. Raymond

Stručná historie hackerství, Eric S. Raymond

www.root.cz

www.abclinuxu.cz

www.blackhole.cz

www.gnu.org

Citace v textu pocházejí z děl R. Stallmana a E. Raymonda uvedených výše.