5. února 2024

Svobodný software: nejlepší způsob tvorby softwaru

Běžný software je možné rozdělit na tři různé druhy: placený software, software zdarma a svobodný software. Z názvů prvních dvou druhů docela jasně vyplývá hlavní vlastnost takového softwaru. Pod názvem svobodný software si však nedokážeme ihned představit, o co se přesně jedná, a právě na tento druh softwaru bych se chtěl zaměřit v tomto článku.

Co je to svobodný software?

Prvně bych vás chtěl seznámit s anglickým názvem pro svobodný software, free software. Je ale potřeba zmínit, že slovem free není myšlena cena softwaru, ale svoboda, kterou tento software svým uživatelům dává. Je ovšem ale pravdou, že svobodný software je také většinou k dispozici zdarma.

Pro vysvětlení svobodného softwaru budu vycházet z jeho definice na stránkách projektu GNU. Podle ní se jako svobodný označuje software, který svým uživatelům dává čtyři základní svobody:

  • Svoboda spustit program za jakýmkoliv účelem (svoboda 0).
  • Svoboda studovat, jak program pracuje a přizpůsobit ho svým potřebám (svoboda 1). Předpokladem k výše uvedenému je přístup ke zdrojovému kódu.
  • Svoboda redistribuovat kopie, abyste pomohli vašemu kolegovi (svoboda 2).
  • Svoboda vylepšovat program a zveřejňovat zlepšení, aby z nich mohla mít prospěch celá komunita. (svoboda 3). Předpokladem k výše uvedenému je přístup ke zdrojovému kódu.

V praxi to znamená, že můžete takový software libovolně spouštět, prozkoumávat, upravovat, vylepšovat a sdílet, což je mimo jiné možné právě díky přístupu k jeho zdrojovému kódu.

Je docela možné, že i přesto, že jste pojem svobodný software neznali, jej aktivně používáte. Mezi nejznámější svobodný software patří například mobilní operační systém Android, linuxové jádro, prohlížeč Firefox, nahrávací software OBS Studio, grafické editory GIMP, Inkscape a Krita nebo dokonce editor 3D grafiky Blender.

Výhody

V této části bych se chtěl zamyslet nad výhodami, který tento druh softwaru přináší.

Jednou z těch významnějších výhod je možnost prohlížení zdrojového kódu, díky které se můžeme sami přesvědčit o tom, jestli daný software nedělá něco nekalého. I pokud bychom kódu nerozuměli, tak pravděpodobně již někdo jiný kód procházel a možná vznikly i různé bezpečnostní audity daného softwaru. Obecně si tedy můžeme být u svobodného softwaru jistější, že opravdu respektuje naše soukromí a neodesílá naše data do rukou třetích stran. Oproti tomu u proprietárního (uzavřeného) softwaru musíme důvěřovat jeho výrobci, jelikož jinou možnost jednoduše nemáme.

Velkou nevýhodou uzavřeného softwaru je to, že pokud se výrobce rozhodne jej přestat vyvíjet, tak je jen malá šance, že jej budeme stále moci používat třeba za 5 nebo 10 let. Důvodem může být nekompatibilita s novými operačními systémy nebo i závislost na některých online službách, které už byly vypnuty. U svobodného softwaru může jeho vývoj převzít téměř kdokoliv, kdo jej bude chtít vyvíjet či udržovat a umí programovat. Díky tomu bychom si i dnes mohli zahrát například 30 let starou hru, protože by se nejspíš našel někdo, kdo by jí udržoval hratelnou i v současnosti.

Svobodný software nám také umožňuje jej libovolně upravovat ke svým potřebám a bez omezení jej distribuovat dál. Pokud by o tyto dodatečné funkce navíc měli zájem i původní vývojáři, tak většinou není problém je přidat i do "hlavní" verze, z čehož poté benefituje celá uživatelská základna.

Hlavními výhodami svobodného softwaru je tedy vyšší bezpečnost, transparentnost a nezávislost na původním výrobci. Další výhodou je také jakási "nesmrtelnost" daného softwaru, jelikož jej může kdokoliv převzít a pokračovat v jeho vývoji. Většina těchto projektů má kolem sebe také aktivní komunitu, která se více či méně podílí na vývoji a může pomoci s různými problémy.

Nevýhody

Abych nezmiňoval pouze pozitivní stránky svobodného softwaru, chtěl bych se zamyslet i nad jeho hlavními nevýhodami.

Přestože je dostupnost zdrojových kódů obvykle považována za výhodu z hlediska bezpečnosti, může se jednat o dvousečnou zbraň - útočníkům to může usnadnit hledání chyb, které by zneužily. Méně používaný svobodný software může provázet také nejistota ohledně budoucího vývoje, a to především, pokud jej spravuje jediný člověk. Nevýhodou menších projektů může být také absence podpory nebo rozumné dokumentace.

Financování

V předchozích částech jsme si shrnuli svobodný software a jeho hlavní výhody i nevýhody. Možná si teď ale pokládáte otázku, jak se vůbec vývojářům vyplatí svobodný software vyvíjet, když jej dávají všem k dispozici zdarma.

V případě placeného softwaru je zdroj finančních prostředků na jeho vývoj zřejmý, jsou jím prodávané licence. U softwaru zdarma to už nemusí být zřejmé na první pohled, ale většinou bývá zdrojem financí vložená reklama, prodej placené verze s více funkcemi nebo přímo sběr uživatelských dat a často i jejich prodej.

Svobodný software, narozdíl od softwaru zdarma, neobsahuje reklamu a rozhodně by nemohl prodávat uživatelská data, jelikož by se to rychle zjistilo. Bylo tedy pro něj potřeba vymyslet jiné způsoby financování, které jsem na základě vlastních pozorování rozdělil do čtyř následujících kategorií.

  • Příjem finančních darů
    • Vývojáři svobodného softwaru od uživatelů často přijímají dobrovolné dary, které jim umožňují pokračovat v práci na softwaru. Této strategie využívají jak jednotliví vývojáři, pro které je tvorba svobodného softwaru koníčkem, tak i velké projekty, které běžně sponzorují i firmy potřebující jejich software.
    • Příklady: Thunderbird, GIMP, Blender, KDE
  • Placený cloud nebo funkce navíc
    • Různé projekty nabízí placený provoz svého svobodného softwaru v cloudu, čímž zákazníkům odpadá nutnost spravovat vlastní infrastrukturu. Někdy bývají za poplatek nabízeny také dodatečné funkce, jako je například synchronizace dat mezi více zařízeními.
    • Příklady: Plausible, GitLab, Jitsi Meet
  • Placená podpora a školení
    • Dalším způsobem financování svobodného softwaru je nabízení placené podpory a konzultací. Tato služba poskytuje zákazníkům přístup k odborným znalostem a pomáhá s řešením technických problémů nebo optimalizací softwaru pro konkrétní potřeby.
    • Příklady: komerční linuxové distribuce (RHEL, SUSE), Nextcloud, MariaDB
  • Pomoc s testováním a vývojem
    • Některé firmy zveřejňují svobodný software, aby využily pomoc komunity s testováním a vývojem. Tímto způsobem mohou získat cennou zpětnou vazbu a případná vylepšení softwaru. Na softwaru poté mohou vydělávat nepřímo, například prodejem zařízení.
    • Příklady: Android Open Source Project, Steam Proton

Pravděpodobně budou existovat i jiné formy financování vývoje svobodného softwaru, častá je také kombinace výše uvedených způsobů. Z výše uvedeného je zřejmé, že i software respektující svobodu uživatele může být dlouhodobě udržitelný, když se vymyslí vhodné způsoby jeho financování.

Závěr

V tomto článku jsem vás seznámil s pojmem svobodný software, s jeho výhodami oproti uzavřenému softwaru, nevýhodami i možnostmi financování jeho vývoje.

Jak jste si mohli všimnout již v úvodu, svobodný software nalezneme na spoustě místech a dost pravděpodobně jej již v některých případech i používáte. Osobně jsem si svobodný software oblíbil kvůli jeho výhodám a momentálně ho využívám ve většině případů.

Díky dostupnému zdrojovému kódu, transparentnosti, možnosti spolupráce a svobodě v úpravách a šíření se podle mého názoru jedná o velmi zajímavý typ softwaru, který přináší prospěch všem, kteří jej vyvíjí i používají.

Filip Znachor
Vytvořeno s v Českých Budějovicích