Linux E X P R E S

Facebook

Proč je tříštění sil ve FOSS nesmysl

opensource.png

Svět svobodného a otevřeného (open source) softwaru (FOSS) je velmi rozmanitý. Evidovaných linuxových distribucí je kolem 350, reálně jich bude ještě více. A nemáme pouze GNU/Linux, ale také FreeBSD, OpenBSD, NetBSD, OpenSolaris a další FOSS operační systémy.


Prakticky v každé kategorii aplikací existuje řada zástupců s různými vlastnostmi - nemáme jeden textový editor, kancelářský balík, desktopové prostředí - máme jich celou řadu. Nezřídka se stane, že se některý projekt rozdělí do více větví, ať už kvůli neshodám mezi vývojáři či rozdílným představám, kudy by se vývoj daného projektu měl ubírat.

V souvislosti s touto různorodostí se objevují názory kritizující tento stav či požadující snížení počtu linuxových distribucí, popřípadě jejich unifikaci do jediné. Já se domnívám, že tyto názory jsou výsledkem jednak příliš subjektivního myšlení, kterému chybí dostatečný nadhled, a jednak nepochopení principů FOSS. V tomto článku osvětlím, proč si to myslím a proč tolik brojím proti podobným názorům.

Zkratka FOSS znamená free and open source software, tedy svobodný a otevřený software.

Princip vývoje FOSS

Abychom mohli situaci kolem rozmanitosti světa FOSS hodnotit, musíme ji nejprve pochopit. K tomu budeme potřebovat vědět, na jakých principech FOSS stojí.

Na začátku FOSS projektu (ať už se jedná o maličký program či o gigantickou linuxovou distribuci) obvykle stojí potřeba nějaké funkcionality, která vede programátora k tomu, aby příslušný software navrhl a začal vyvíjet. Tímto projektem sleduje vývojář své zájmy - tvoří funkcionalitu, kterou potřebuje. Svůj software vydá obvykle už v jeho rané podobě pod FOSS licencí. Tím umožní lidem s podobnou potřebou, aby se do projektu zapojili. Mohou hlásit chyby, navrhovat nové vlastnosti, zasílat finanční příspěvky nebo (pro nás zejména) přispět programováním.

Stejně jako původní vývojář, tak i jeho případní spolupracovníci sledují svým zapojením do projektu své zájmy. Program se jim líbí, považují jej za užitečný, ale třeba by rádi, aby umožňoval něco, co zatím neumožňuje, popřípadě je v něm chyba, kterou by si přáli opravit, apod. Pro ně je výhodné, že nemusí program napsat od začátku, ale pouze doplnit to, co potřebují, popřípadě něco opravit. Naopak pro původního vývojáře je situace výhodná, protože mu jeho program začnou dobrovolníci vylepšovat, navrhovat změny, popřípadě přispívat finančními částkami, apod.

Jak vidíme, obě strany sledují svou aktivitou vlastní záměr - naplňují svoje potřeby. Z toho vyplývá, že dokud FOSS projekt žije, tj. dokud má alespoň nějaké uživatele/vývojáře, pak má svůj smysl - naplňuje potřeby svých uživatelů a vývojářů. Tudíž i kdyby aplikaci/distribuci používal či vyvíjel jeden jediný člověk, pak alespoň pro něj bude mít tento projekt smysl.

Proč taková rozmanitost

Princip vývoje FOSS tedy známe, avšak z toho přímo nevyplývá odpověď na otázku, proč máme takové množství distribucí či relativně podobných programů. Odpověď na tuto otázku je velmi prostá - různí lidé mají různé potřeby. Zatímco jeden člověk může preferovat uživatelsky přívětivou distribuci, která bude všechno nastavovat a provádět za uživatele, jiný člověk (třeba zrovna já) bude preferovat distribuci, kde si bude vše moci nastavit sám, nainstalovat jen to, co opravdu potřebuje, a upravit si ji do podoby, která mu vyhovuje.

Autor tohoto článku pro náš server napsal rozsáhlý a ceněný seriál Správa linuxového serveru.

Totéž platí i v případě aplikací. Někteří preferují intuitivní, uživatelsky přívětivý textový editor jako Gedit nebo Kate, jiní dávají přednost komplexnějším a efektivnějším editorům jako Vim či Emacs.

Tato situace není překvapivá - stačí se podívat kolem sebe. Třeba takový automobil. Nemáme jeden konkrétní model, který by vyhovoval všem, máme jich celou řadu, dokonce i celou řadu typů - osobní, závodní, terénní, nákladní, atd., přičemž u každého typu máme řadu konkrétních modelů s různými komponentami od různých výrobců. Když jdeme nakupovat nějaké potraviny, jsme svědky podobné rozmanitosti - i obyčejné párky mají řadu výrobců a druhů. Stejně tak oděv, obuv, nábytek, atd.

V čem je tedy problém

Rozmanitost na poli FOSS není ojedinělá, vychází z rozdílnosti lidských potřeb, jejíž následky vidíme všude kolem sebe - nejenom v rámci FOSS. Přitom to, co vidíme všude kolem sebe, bereme za samozřejmost a nijak se nad tím nepozastavujeme, zatímco u FOSS to někteří vnímají jako problém. V čem tedy onen problém spočívá? Přístupů kritiků této situace je několik. Rozeberme si je postupně, jeden po druhém.

Tříštění sil

Častým argumentem, možná dokonce tím nejčetnějším, je tříštění sil - místo aby všichni pracovali na jednom projektu, rozdělují se síly FOSS vývojářů mezi mnoho různých, ale i relativně podobných projektů. Tento argument vychází z pohledu na vývojáře FOSS jako na množinu lidí se stejným cílem, kteří místo toho, aby spolupracovali a dosáhli tak rychleji a snadněji svého cíle, pracují každý na svém, a tak vlastně tříští síly.

FOSS vývojáři ale nemají stejný cíl. Jak už jsme si vysvětlili výše, různí lidé mají různé potřeby, různé cíle. Proto také každý vývojář pracuje na takovém projektu, který má pro něj největší smysl. Ano, skutečně dochází k tomu, že mnoho práce se tak opakuje, třeba správa balíčků v rámci distribucí. To je ovšem cena, kterou se daní vývojáři rozhodli zaplatit. Každý hledá ve své práci optimální řešení, snaží se dosáhnout svého cíle s minimálním vynaložením sil. Pokud se vývojáři rozhodnou nepřevzít existující řešení, ale postavit svoje vlastní, mají k tomu patrně nějaký důvod - stávající řešení jim prostě z toho či onoho důvodu nevyhovují.

Je to právě odlišnost cílů, která argumenty o tříštění sil vyvrací. K tomu, aby se o tříštění sil skutečně jednalo, bychom museli nalézt dva totožné projekty, projekty se stejným cílem a stejnou představou vývojářů o jejich dosažení. Pokud se však podíváte na dva libovolné podobné projekty pozorně, zjistíte, že se něčím odlišují, mají různé cíle, různé představy o jejich dosažení a plní různé požadavky.

Plýtvání časem

Plýtvání časem je sebestřednější a agresivnější variantou argumentu o tříštění sil. Zastánce tohoto názoru hodnotí něčí strávený čas podle vlastních subjektivních kritérií. Jinými slovy - netrávíš-li svůj volný čas tak, jak chci já, hodnotím tvůj čas jako ztracený. Takový pohled je zcestný - vývojářem investovaný čas není ztracený - přináší užitek, a to danému vývojáři, stejně jako všem dalším účastníkům (uživatelům a vývojářům) daného projektu. To, že nepřináší užitek danému kritikovi, je věc jiná - ne však neočekávaná. Jak už bylo řečeno, lidé mají různé potřeby, nelze se zavděčit všem.

Redukce počtu distribucí

Zaujetí pro redukci počtu distribucí vychází ze subjektivního pohledu konkrétního člověka, který má jistou strukturu potřeb, kterým vyhovuje určitá distribuce, zatímco zbylá většina distribucí je pro něj nezajímavá. To, co bývá často opomíjeno, je to, že pro jiné tato distribuce význam i smysl má.

Některé názory říkají, že méně distribucí by pro GNU/Linux znamenalo více uživatelů. Já si to nemyslím. Podívejme se třeba na FreeBSD - jedná se bezesporu o prvotřídní unixový operační systém, který je oproti GNU/Linuxu vyvíjen centrálně, úzkou elitní skupinou vývojářů. Podle teorie „méně variant = více uživatelů“ bychom čekali, že bude mít větší úspěch než GNU/Linux. Přesto je jeho tržní podíl výrazně nižší než v případě GNU/Linuxu.

Navzdory centrálnímu vývoji FreeBSD vzniklo dokonce několik „distribucí“ FreeBSD - DesktopBSD, PC-BSD, MidnightBSD a možná ještě nějaké další, o kterých zatím nevím. Opět se tu podepisuje to, na co narážím už po několikáté, a sice rozmanitost potřeb mezi různými lidmi. GNU/Linux vítězí nad FreeBSD v popularitě třeba právě proto, že nabízí takovou rozmanitost - uživatelé si mohou vybrat z mnoha variant a přiblížit se tak mnohem více svému optimu, vývojáři mají takové spektrum distribucí, že mnohem snadněji najdou takovou, jež bude vyhovovat jejich potřebám, nebo mají šanci si postavit svou vlastní.

Názory o zlepšení situace v případě redukce počtu distribucí stojí na falešném předpokladu, že v případě redukce počtu distribucí by redukcí uvolnění vývojáři přeběhli k některé z přeživších distribucí, tedy že by se snížil počet distribucí, ale počet vývojářů by zůstal konstantní, čímž by si zbylé distribuce přilepšily. Proč si myslím, že je tento předpoklad chybný? Uvažme, že v současné době pracuje vývojář na distribuci, která vyhovuje jeho potřebám. Pracuje na ní právě proto, že mu tato práce přináší užitek. V momentě, kdy mu distribuci zrušíme, zrušíme mu i jeho optimum, kterého dosáhl při vývoji své distribuce. Místo toho mu dáme na výběr z několika sice existujících, ale pro něj neoptimálních (nebo méně optimálních) variant.

Tyto zbylé varianty již nebudou mít jím požadované vlastnosti. Je pravděpodobné, že jím požadované vlastnosti nebude třeba vůbec možné do žádné ze zbylých distribucí implementovat, protože budou v rozporu s cíli a představami vývojářů těchto distribucí. Lze předpokládat, že za těchto okolností ztratí důvod se na vývoji zbylých distribucí jakkoliv podílet.

Celá tato teorie je beztak jedna velká hypotéza, protože neexistuje reálná možnost jak někomu zrušit distribuci, kterou vyvíjí, a nařídit mu, aby s vývojem skončil; alespoň ne ve svobodné, demokratické zemi. Nehledě na to, že podobné tendence silně zavání totalitou.

Jedna distribuce vyhovující všem

Požadavek o redukci počtu distribucí berou někteří poněkud radikálněji a mají za to, že jediná distribuce by byla optimálním řešením. Jediná distribuce vyhovující všem je však čirý nesmysl. Jak už bylo řečeno, různí lidé mají různé požadavky, přičemž mnoho z těchto požadavků jde proti sobě. Pokud tedy stavím nějakou distribuci, musím se rozhodovat. Každé takové rozhodnutí potěší ty, jejichž požadavky splním, ale naopak rozezlí ty, kteří mají požadavky protichůdné. Nelze se tedy zavděčit všem, ne jedinou distribucí.

Maximalizujte společenský užitek

Setkal jsem se i s názorem, že vyvíjet další FOSS operační systém je „mrhání časem“ a že by byl společenský užitek větší, kdyby se daný vývojář přidal k některé z majoritních linuxových distribucí. To je podle mého klasický případ nepochopení FOSS. FOSS není charita ani komunismus, není to spolek lidí, kteří se snaží věnovat svůj volný čas tomu, aby maximalizovali společenský užitek. Věnují svůj volný čas tomu, aby maximalizovali užitek svůj.

Další věcí je - kdo a na základě čeho rozhodne o tom, co je společensky prospěšné a co nikoliv? Kdo dokáže předem s jistotou říci, zda-li ten či onen projekt nepřejde časem v něco masově používaného? Linux, kupříkladu, byl na počátku maličkým projektem určeným programátorské elitě. Projekt GNU byl na svém počátku myšlenkou jediného člověka…

Kdybychom měli být důslední, museli bychom se ptát, jestli je vůbec vhodné věnovat se vývoji nějaké linuxové distribuce, když bychom se mohli věnovat majoritnímu operačnímu systému, který používá podstatně více lidí…

Ono je to ošemetné, protože argument se společenským užitkem v první řadě hodnotí práci daného vývojáře jako „společensky neprospěšnou“. Dále více či méně říká „nelíbí se mi, na čem pracuješ, nepřipadá mi to užitečné, pracuj na něčem jiném, pokud možno na tom, co chci já (nebo co já hodnotím jako společensky prospěšné)“.

Tenhle či onen projekt je zbytečný

Jisté názory nesměřují ani tak k celkové situaci, jako spíše ke konkrétním projektům, které někteří označují za zbytečné. Opět, promítá se zde subjektivní dojem (já ten program nepotřebuji) do objektivní roviny (když ten program nepovažuji za užitečný já, nemůže ho za užitečný považovat nikdo jiný). To však není pravda - viz výše. Každý žijící FOSS projekt má svůj smysl a význam - pro své vývojáře a uživatele. Je-li FOSS projekt mrtvý, nemusí mi to vadit, protože na něm nikdo nepracuje a nepoužívá jej. Zkrátka a dobře, pokud já nepovažuji nějaký projekt za užitečný, to přece ještě vůbec neznamená, že ho jiní za užitečný nepovažují. A pokud někdo daný projekt používá, pak nemůže být zbytečný.

Je to velký problém u začátečníků

Ne, není. Velký problém u začátečníků jsou jednak třetí strany (viz dále), a pak odlišnost GNU/Linuxu od toho, na co jsou zvyklí (a související nutnost pochopit nové prostředí). Třetími stranami myslím výrobce hardwaru, softwaru, státní správu, školství a další instituce, které působí na uživatele a tlačí jej k používání majoritního systému. Výrobci hardwaru/softwaru, kteří nemyslí na nemajoritní operační systémy, státní správa, která s občany komunikuje pomocí uzavřených formátů, školství, které nevychovává uživatele výpočetní techniky, nýbrž uživatele majoritního systému, atd. Druhým hlavním problémem je odlišnost GNU/Linuxu od majoritního operačního systému, tedy odlišná architektura, filozofie práce s ním (typicky správce balíčků), atd.

Toto jsou u začátečníků hlavní problémy. Výběr distribuce souvisí s druhým bodem (nutnost se seznámit s odlišným prostředím GNU/Linuxu) a nevidím v něm žádnou nepřekonatelnou překážku. Začátečník si určitě nebude vybírat ze 350 distribucí, ale z několika málo variant těch nejznámějších. Řada z nich nejspíše přijde ke konkrétní distribuci dříve, než se dozví, že jich existuje více. Ano, může to být matoucí, ale to není až tak velký problém a je to daň za možnost volby. A to není nutně negativum.

Výrobci hardwaru/softwaru mají problém s množstvím distribucí

Jádro (Linux) je společné pro všechny (linuxové) distribuce, takže výrobci hardwaru nemusí moc myslet na jejich rozmanitost. Pokud vydají specifikace svého hardwaru, nemusí pak ovladač vyvíjet vůbec, o to se rádi postarají vývojáři Linuxu (popř. dalších FOSS systémů). U softwaru opět nemusí být problém - pokud se jedná o FOSS, distributoři softwaru integrují do svých repozitářů sami, pokud se jedná o proprietární software, nabízí se cesta podobná jako v případě MS Windows - potřebné verze knihoven (resp. závislosti) se přibalí spolu s programem. U dosavadních zástupců proprietárního softwaru pro GNU/Linux to funguje dobře. Problém s výrobci hardwaru/softwaru je spíše v neochotě podporovat nemajoritní operační systém, než že by nerozdýchali rozmanitost GNU/Linuxu.

Ostatně výrobci proprietárního softwaru pro GNU/Linux beztak svůj produkt testují nanejvýš s několika mainstreamovými distribucemi, rozhodně nevyvíjí pro všechny distribuce. A pokud mají problém s vývojem pro více než jednu distribuci, měli by tento problém i v situaci, kdy by se počet distribucí redukoval na 10, ale i 5, 3 či dokonce 2. K tomu ovšem nejspíše nikdy nedojde.

V čem je opravdu problém

Obvykle se za těmito argumenty skrývá jedna ze dvou možností. Ta obvyklejší je, že dotyčný má vlastní představu o tom, jak by to či ono mělo být, ale když se rozhlédne, vidí nespočet lidí pracujících na jiných projektech než na těch, které odpovídají jeho představám. V tom pak vidí problém - kdyby všichni vývojáři pracovali na jeho vizi, dosáhl by sám optima. Už mu ale nedochází, že vývojáři FOSS jsou lidé se svými vlastními představami, které se snaží realizovat. Nikoliv lidé, kteří čekají na vůdce, který jim řekne, kam se mají ubírat. Je to de facto poněkud sebestředný pohled na FOSS - užitečné je to, co já považuji za užitečné, a všechno ostatní může přestat existovat, protože já to nepotřebuji.

Druhou možností, která jde mnohdy ruku v ruce s tou první, bývá nepochopení FOSS či dokonce deformace myšlení vlivem nucené jednoty v rámci současného majoritního operačního systému (a související představa, že tak to má být).

Řešení

Jak říká staré přísloví: „Nehas, co tě nepálí“. Distribuce či projekty, které se vám nezamlouvají, prostě nepoužívejte. Naopak používejte a podporujte projekty, které se vám zamlouvají. Projekty, které nepřináší užitek právě vám, přináší užitek někomu jinému.

Rozmanitost světa FOSS je přímým následkem principů, ze kterých FOSS vychází - principy svobody a otevřenosti, možnosti se zapojit, vylepšovat, ale také štěpit a tvořit nové na existujícím základě. Sjednocení aplikací, distribucí nebo jiných projektů do jediného, je nejenom nereálné, ale je také popřením principů, na kterých FOSS stojí.

Diskuze (9) Nahoru