\"/
\"/ \"/    

Svobodný software a základní otázka programování

Ladislav Lhotka, CESNET, z.s.p.o.
Ročník XV - číslo 3, únor 2005
Citace: L. Lhotka. Svobodný software a základní otázka programování. Zpravodaj ÚVT MU. ISSN 1212-0901, 2005, roč. XV, č. 3, s. 12-16.
verze pro tisk: PDF
Tematické zařazení: Software obecně - principy, tvorba
Článek je součástí seriálu Svobodný software
 předchozí článek | následující číslo 

V minulém pokračování seriálu o svobodném softwaru vyzval Dalibor Lukeš ze společnosti Microsoft ke korektní diskusi o rozdílech mezi svobodným a komerčním softwarem._Tuto příležitost si ovšem nemohu nechat ujít, pokusím se ale vyhnout obvyklým kliše a půjdu na věc trochu zeširoka.

Ještě než začnu, rád bych upozornil na to, že samotná existence takové výzvy svědčí o významném posunu v postojích Microsoftu. Není tak dávno doba, kdy jeho představitelé Linux a open source software totálně bagatelizovali ("Linux - myslíte tu hračku zkrachovalých studentů?"). Nejen článek pana Lukeše, ale i mnohé jiné mediální aktivity Microsoftu svědčí o tom, že v Redmondu již pasovali Linux a open source na seriózní konkurenty, které už jen tak mávnutím ruky nezaženou. Zdá se, že nyní spíše zpochybňují novost a revolučnost myšlenky svobodného softwaru, jako by to i pro Microsoft byla už dávno stará vesta. V jedné věci s panem Lukešem plně souhlasím: takové tvrzení skutečně zní podezřele. Možná, že Microsoft opravdu nabízí některé své produkty pod licencemi schválenými Open Source Initiative, programy v rámci tzv. Shared Source ale do této kategorie rozhodně nepatří. Článek na webových stránkách zmíněné nadace OSI1 má zajisté dostatečně výmluvný název - Shared Source: A Dangerous Virus.

Programování - umění nebo byznys?

Zdá se mi, že u kořene fundamentálního rozporu mezi světy svobodného a komerčního softwaru je ve skutečnosti dilema, které pro tento účel prohlásím - jistě poněkud nadneseně - za základní otázku programování: Je vývoj softwaru umění nebo byznys?

Každý, kdo kdy něco významnějšího naprogramoval, zná ten skvělý pocit, když jeho softwarový opus začne konečně fungovat a testování se stává požitkem přinášejícím nikoli už nové chyby, ale jen další a další důkazy geniality programu a jeho tvůrce. Pocity jsou to jistě podobné těm, které má malíř nad dokončeným obrazem či matematik, který právě napsal QED. Obzvlášť uspokojivý případ nastává, pokud autor může své dílo vnímat jako relativně složitý celek, který sám navrhl a za nějž svým způsobem osobně ručí. Tady je asi potřeba hledat hlavní složku motivace hackerů, kvůli níž jsou ochotni pracovat po nocích a třeba zadarmo.

Moderní softwarový průmysl naproti tomu zavedl týmový model vývoje softwaru, kdy se složitý program postupně skládá z příspěvků velkého počtu programátorů, z nichž každý má přesně zadán malý úkol (např. napsat funkci s definovanými vstupy a výstupy). Rozdrobením celého díla se ovšem nutně drolí i ono autorské uspokojení. Úspěšné komerční softwarové projekty nepochybně disponují jinými motivačními nástroji, ale vlastní programování se stává masovou výrobou na virtuálním běžícím pásu. Potlačená kreativita týmových programátorů se občas projeví v podobě žertovných prográmků skrytých uvnitř seriózních aplikací (viz třeba letový simulátor propašovaný do jedné verze Excelu).

Dalibor Lukeš správně píše, že principům týmové spolupráce jsou podřízeny i velké projekty svobodného softwaru - jinak to totiž ani nejde. Velký rozdíl je ale v tom, že u skutečných open source projektů vzniká dělba práce zdola - každý účastník si sám určuje, na čem bude pracovat a jak rychle. Takový přístup má ovšem svou nevýhodu v tom, že začasté není možno spolehlivě stanovit termín, k němuž bude nějaká verze programu dokončena. V praxi to ale velký problém nebývá - pokud nějaký modul citelně zaostává nebo jinak nevyhovuje, najde se obvykle dost rychle někdo, kdo jej dodělá nebo reimplementuje. Mimochodem, komerční software na tom není s dodržováním termínů také nijak slavně.

A pak je tu ještě jeden zásadní rozdíl: do vývoje open source softwaru (aspoň v jeho ryzí podobě) nemůže mluvit nikdo z marketingu! Pravý hacker je totiž jen zcela výjimečně ochoten psát věci, o jejichž správnosti není vnitřně přesvědčen. Cesta komerčního softwarového projektu je naproti tomu až příliš často dlážděna líbivostí na úkor funkčnosti a mnohými ohavnými kompromisy, které vyplývají buď z ultrakonzervativních požadavků na zpětnou kompatibilitu anebo z tzv. zákaznické poptávky. Tím ovšem nechci říci, že by vývojáři OSS zcela nedbali na atraktivitu programu, zpětnou kompatibilitu a požadavky uživatelů, jen tyto požadavky nejsou absolutním imperativem - neboť svobodné programy není třeba žádným zákazníkům rychle vnutit. Vývojové komunity open source tak mají daleko volnější ruce a když na to přijde, prosadí i velmi nepopulární změny. Příkladem může být Linux před nějakými osmi lety, kdy se i přes poměrně velký povyk uživatelů a části vývojářů přešlo z binárního formátu a.out na ELF. Takováto lokální zemětřesení sice nejsou příjemná a mohou způsobit přechodný odliv uživatelů, v delší časové perspektivě se však obvykle ukážou jako velmi pozitivní.

Někdy to ale funguje i obráceně: je-li to účelné, může svobodný program zůstat i dlouhou dobu beze změn, jako jakýsi pevný bod ve vesmíru. Příkladem může být třeba program TeX, v němž je vysázen i tento článek. S výjimkou oprav chyb (velmi řídkých) zůstal TeX již téměř dvacet let beze změn. Softwarová firma, která by vytvořila takový program, by ovšem byla odsouzena k záhubě: představte si, že by si od ní dvacet let nikdo nekoupil žádný upgrade!

Softwarové ekosystémy

Představitelé Microsoftu poměrně často hovoří o tom, jak okolo svého softwaru uvědoměle budují ekosystém nezávislých dodavatelů dalšího doplňkového softwaru a služeb. Hmm... Dlouhá léta jsem pracoval mezi biology a jen málo věcí jsme si uvědomil tak jasně jako to, že ekosystém nelze naplánovat, budovat, ani řídit. To, co Microsoft buduje, se ve skutečnosti mnohem více podobá monokulturní zemědělské velkovýrobě, a proto není divu, že jejich "ekosystém" také trpí podobnými neduhy, jakými jsou třeba virové epidemie.

Podle mého názoru má naopak svět open source softwaru řadu rysů společných s autentickými ekosystémy. Především je tu cosi jako druhová diverzita, na niž sice jako uživatelé i programátoři mnohdy žehráme, která ale podporuje svobodnou soutěž myšlenek a výrazně zvyšuje stabilitu celého systému. Buďme proto rádi, že máme různé licence, Perl i Python, vi i Emacs, GNOME i KDE a tak dále. Že je tam i plevel? Jistě, ten najdete ale na každé louce.

Další výrazným rysem ekosystému OSS je jeho ohromná decentralizace a geografická rozptýlenost. Nejde mi teď zase ani tak o hlavní vývojáře významných projektů, kde nějaká centrální figura či skupina obvykle existuje, jako spíš o ono podhoubí bezejmenných uživatelů, z nichž v případě potřeby vzejdou noví vývojáři, tedy to, čemu se anglicky říká tak pěkně - grassroots. V tom také vidím hlavní příčinu úspěchu (či možná samotného přežití) svobodného softwaru v konkurenci s komerčním: Marketingoví analytici sepisují své komparativní studie, softwaroví giganti na jejich základě vytvářejí strategie a masírují zákazníky, jenže sotva zaznamenají dílčí úspěch, vyroste někde jinde pět nových výhonků svobodného softwaru. Objeví-li se na trhu nějaký nepříjemný komerční konkurent, mají velké firmy v rukávu řadu postupů, jak si s ním poradit (počínaje masivní PR kampaní a konče akvizicí). U konkurenčních open source programů tyto postupy obvykle nefungují - hraje se totiž podle jiných pravidel.

Znamená to, že open source software je antikomerční a tím pádem nebezpečný pro zdraví ekonomiky? Nemyslím si to. Dokud se bude vůbec nějaký software používat, bude také trvat potávka po odbornících, kteří jej dokážou udržovat v chodu a opravovat či rozvíjet. Rozdíl je jen v tom, že tam, kde softwarové firmy vytvářejí své ekosystémy - ve skutečnosti ovšem jimi přísně kontrolované řetězce poskytování know-how - nastupují se svobodným softwarem nezávislí experti nebo firmy. Know-how v podobě zdrojových kódů je v tomto případě k dispozici veřejně a bez omezení, a tak má každý svůj úspěch či neúspěch zcela ve svých rukou.

Obdobný vývoj jsme ostatně už mohli v menším pozorovat na trhu superpočítačů koncem minulého století. Když linuxové klastry odeslaly do šrotu předražené hračky typu Cray nebo Connection Machine, náročné výpočty nejen neustaly, ale naopak se díky mnohem lepší dostupnosti a škálovatelnosti technologií PC a Ethernetu výrazně rozšířily. Seznamu 500 nejvýkonnějších superpočítačů2 dnes klastry PC s Linuxem jednoznačně dominují.

Otevřené standardy

Volně dostupný zdrojový kód, který je charakteristickým, byť ne jediným znakem open source softwaru, automaticky implikuje otevřenost všech implementovaných postupů, protokolů a programových rozhraní. Veřejné standardy vydávané organizacemi ISO, IEEE, IETF a dalšími umožňují implementovat softwarové komponenty, které sice nejsou open source, ale přesto mohou hladce spolupracovat s komponentami jiných výrobců. Pokud jde o otevřené standardy, přesouvá se proto podle mého názoru ohnisko sporu trochu jinam - mezi malé softwarové firmy a velké monopoly. Nemusím jistě dodávat, která z těchto dvou stran má na existenci otevřených standardů větší zájem. Dalibor Lukeš ovšem tvrdí, že "drtivá většina produktů [Microsoftu] podporuje obecně používané otevřené standardy...". Stejně jako v případě polepšeného hříšníka pod kazatelnou feldkuráta Katze je i zde na místě opatrnost.

Nedávno jsem shodou okolností narazil na stránkách Microsoftu pro vývojáře (které jsou mimochodem velmi pěkné a přehledné) na následující výrok3: "Internet Protocol version 6 (IPv6) is a networking protocol that allows Windows users to communicate with other users over the Internet.". Kouzlem nechtěného se tu tak dostáváme k jádru pudla - užitečnost otevřených protokolů a standardů je poměřována nikoli všeobecnými výhodami plynoucími z interoperability zařízení a programů různých výrobců, ale tím, jaké výhody poskytují uživatelům Windows (ergo jejich oblíbenému dodavateli). Nedejme se mýlit: otevřené standardy jsou pro průmyslové giganty (nejen softwarové) vždy nanejvýš sňatkem z rozumu.

Komplikované softwarové systémy se dnes obvykle skládají z řady relativně nezávislých komponent (knihoven, protokolových vrstev apod.), které spolu vzájemně spolupracují. Jsou-li všechny komponenty založeny na otevřených standardech a aplikačních programových rozhraních, lze každou komponentu nahradit konkurenční implementací, popřípadě vyvinout komponenty nové pro řešení analogických úloh. Takový softwarový systém vytváří zdola síť vazeb, umožňujících dobrat se určitého cíle více alternativními cestami, s využitím komponent různých dodavatelů. Pokud se ale stane, že některá komponenta nabude monopolního postavení, má její vlastník obvykle silnou tendenci rozšiřovat svůj vliv i na okolní komponenty. Nejčastěji tomuto účelu slouží taktika "embrace and extend": implementace dříve otevřeného standardu se rozšíří poupraví tak, aby spolupracovala jen s okolními komponentami vlastní provenience. V případě Microsoftu jsme byli opakovaně svědky podobných praktik, vzpomeňme například "vylepšování" protokolu HTML či úpravy protokolu Kerberos 5. V tomto místě se dostáváme zpět k významu svobodného softwaru - v něm totiž něco podobného z principu není možné. Aigrain [1] z toho dovozuje, že přinejmenším u uzlových bodů softwarové infrastruktury (základní komunikační proto koly, PKI apod.) je potřeba dosáhnout trvalé otevřenosti nejen standardů, ale i jejich implementací. Navrhuje proto, aby vlády podporovaly použití copyleftových licencí (GPL) a chránily klíčové prvky softwarové infrastruktury jako jiné veřejné statky.

Příklon Microsoftu k otevřeným standardům dokládá Dalibor Lukeš faktem, že Word a Excel ukládají svá data do souborů ve formátu XML. To je ovšem velmi kuriózní závěr. Samotný jazyk XML přece ještě neznamená přenositelnost dokumentů! V duchu stejné logiky by bylo možné tvrdit, že dorozumění mezi lidmi je automaticky zaručeno tím, že všichni mluvíme ústy. Dokud nebude zveřejněno jejich dokumentované schéma, tedy přesný syntaktický a sémantický popis, zůstanou formáty MS Office uzavřenými a proprietárními. Jak dokládají poměrně nedávná jednání Microsoftu se státem Massachusetts4 může být hrozba přechodu významných zákazníků na open source software (v tomto případě OpenOffice) vhodnou pákou, která Microsoft donutí formát MS Office doopravdy otevřít.

Závěr aneb nepřítel je jinde

Mediální i ekonomické soupeření mezi svobodným a komerčním softwarem je jistě velmi zajímavé, není ale úplně šťastné chápat je jako souboj dobra se zlem. Neupírejme komerčnímu softwaru jeho úspěchy a buďme rádi, že se slibně rozvíjí i v Česku, dejme tomu namísto výroby ocelových ingotů. Jak jsem se snažil zdůvodnit, open source software je svým komerčním protějškem ohrožován daleko méně, než je tomu naopak. Věřím, že postupem času se poměr mezi oběma protipóly ustálí v nějakém rozumném ekvilibriu, ku prospěchu uživatelů i programátorů.

Všem Rychlým šípům svobodného softwaru by ovšem mělo být zřejmé, že Bratrstvo kočičí pracky je ve skutečnosti někde jinde. Opravdovým nepřítelem jsou totiž softwarové patenty. Ty přímo ohrožují nejen open source software, ale taky malé softwarové firmy, které jsou - tak jako v jiných oborech - hlavním zdrojem inovace. Na rozdíl od USA dosud Evropa poměrně jednoznačně vylučovala patentování matematických postupů a počítačových programů. Pod tlakem silných lobby se ale situace může brzy změnit.

I když ani v tomto případě Microsoftu nějakou tu osminku másla na hlavě neupřeme, hlavními aktéry na poli softwarových patentů jsou jiní giganti, a to jak počítačového průmyslu, tak také showbusinessu. Hlavní protagonistou uzákonění softwarových patentů v EU je zdánlivě překvapivě firma IBM, která se jinak open source softwaru staví velmi přívětivě. Důvod je ovšem nasnadě: IBM disponuje portfoliem přibližně deseti tisíc patentů a armádou právníků, což mu umožňuje - na rozdíl od malých firem - využívat nepřehledného minového pole softwarových patentů k prosazování svých zájmů.

Můžeme být protentokrát vděčni našim polským přátelům, kteří na poslední chvíli zablokovali přijetí propatentové směrnice v Radě EU. Určitě to však nebylo poslední kolo, a tak bychom měli hledat všechny možné způsoby, jak přesvědčovat i naše politiky o škodlivosti softwarových patentů. Je to o to naléhavější, že rozhodující korupční potenciál je přesně na opačné straně barikády. Velmi významnou roli na straně odpůrců softwarových patentů hraje mezinárodní internetová komunita, a tak doufám, že ani její česká část se nenechá zahanbit. Dobrá, napřed tedy zvolme Největším Čechem Járu Cimrmana, ale pak už bychom se měli začít softwarovým patentům vážně věnovat. Nikdo jiný to totiž za nás neudělá.

Literatura

[1] AIGRAIN P. A framework for understanding the impact of GPL copylefting vs. non copylefting licenses. Free/Open Source Research Community, 2002.
http://opensource.mit.edu/papers/aigrain2.pdf
... zpět do textu
setting
1 http://www.opensource.org/advocacy/shared_source.php
... zpět do textu
2 http://www.top500.org
... zpět do textu
3 http://www.microsoft.com/resources/documentation/WindowsServ/2003/all/techref/en-us/w2k3tr_ipv6_how.asp
... zpět do textu
4 http://www.crn.com/sections/breakingnews/dailyarchives.jhtml?articleId=57701551
... zpět do textu
Zpět na začátek
ÚVT MU, poslední změna 14.11.2011