Pozor museum: Toto je archivní verze blogu. Pro vkládání komentářů přejděte na tento článek v nové verzi blogu.

Kouzlo a svoboda open-source software

Na českém serveru zaměřeném na Linux a open source Root.cz mi vyšel článek Kouzlo a svoboda open-source software.

Kouzlo OpenSourcu

Otevřený software by těžko mohl fungovat bez licencí. Přesto je jejich problematika často opomíjena a málokdo je skutečně čte. V dnešním článku si přiblížíme několik nejpoužívanějších open source licencí.

Bez licencí by se nakládání se softwarem řídilo pouze autorským zákonem (zákon č. 121/2000 Sb.), který v případě softwaru nedovoluje prakticky nic. Smysl licence tedy spočívá v postoupení určitých práv uživateli a vymezení způsobu užívání softwaru.

GNU GPL – General Public License

GPL je nejrozšířenější open source licence a využívá ji 72% open-source projektů. První verze této licence vznikla pro projekt GNU a napsal ji Richard Stallman. GPL dává uživateli právo takto licencovaný software upravovat, kopírovat a šířit, ať už v původní nebo upravené verzi. Licence nezakazuje komerční šíření softwaru ani neomezuje způsob využití softwaru – autor programu do licence např. nemůže připsat, že se program nesmí používat v jaderných elektrárnách – pak už by to nebyla GPL. Tato licence zaručuje svobodu – svobodu pro všechny bez rozdílu.

Licence se šikovně vyrovnává i s přijetím či nepřijetím ze strany uživatele:

Není vaší poviností tuto licenci přijmout, protože jste ji nepodepsal. Nic jiného vám však nedává možnost kopírovat nebo šířit program nebo odvozená díla. V případě, že tuto licenci nepřijmete, jsou tyto činnosti zákonem zakázány. Tím pádem modifikací anebo šířením programu (anebo každého díla založeného na programu) vyjadřujete své podřízení se licenci a všem jejím ustanovením a podmínkám pro kopírovaní, modifikování a šíření programu a děl na něm založených.

GPL je vyvážená v tom smyslu, že nepřiznává jen bezmezná práva, ale ukládá i povinnosti. Pokud např. do svého programu začleníme (cizí) kód vydaný pod GPL licencí, bude i výsledný celek pod GPL licencí. A tím přispívá k rozšiřování svobodného softwaru. Aktuální je dnes třetí verze této licence.

Affero GPL – přitvrdíme

Nová doba si žádá nové licence. Mnoho aplikací už dnes není distribuováno na počítače uživatelů, ale běží na serverech a uživatelé se k nim připojují pomocí webového prohlížeče První verze AGPL byla uvedena v roce 2002 a vycházela z GPLv2. Uplatnění najde hlavně u aplikací poskytovaných po síti (webu). Na tyto aplikace se můžeme dívat dvěma způsoby:

  1. Klasický pohled: k distribuci aplikace dochází pouze od autora programu ke správci serveru, na kterém aplikace běží. Správce aplikaci nainstaluje a provozuje. Tato aplikace server neopouští a okolnímu světu poskytuje pouze své výstupy (např. HTML stránky odesílané pomocí protokolu HTTP). Je to tedy podobná situace, jako když v Gimpu namalujeme obrázek a toto dílo dále šíříme – obrázek není zatížený GPL licencí.
  2. Koncový uživatel sedící např. u webového prohlížeče používá danou aplikaci, a tudíž má nárok na její zdrojové kódy.

Pokud se jako autoři chceme vydat druhou cestou, použijeme pro svůj software místo GPL raději licenci Affero GPL, která je přísnější v tom smyslu, že pokud původní aplikace umožňuje koncovým uživatelům stažení zdrojových kódů, musí i upravené nebo redistribuované verze aplikace tuto možnost zachovat.

Tuto licenci použijeme např. u redakčního systému nebo diskusního fóra a zaručíme tak uživatelům upravených verzí aplikace, že uvidí i změny zdrojového kódu, které provedl někdo jiný.

Původní Affero licence z roku 2002 pocházela z projektu Affero, zatímco třetí verze GNU Affero GPLv3 je už dílem organizace FSF. Licence AGPLv3 je kompatibilní s GPLv3, a tudíž je možné kód pod oběma licencemi kombinovat v jednom programu. Více o AGPL licenci v samostatném článku: Affero GPLv3: Vydejte zdrojové kódy síťových aplikací!

Volnější LGPL

Jedním z typických rysů open sourcu je komunita, uživatelé. K čemu by byl program, který by nikdo nepoužíval, že? V případě softwarových knihoven by příliš přísná licence (např. GPL) byla překážkou k jejímu rozšíření (software, který ji používá by musel být také GPL) → neměli bychom pak uživatele, zpětnou vazbu, testery a bez toho by se naše knihovna rozvíjela pomalu nebo vůbec. Z tohoto důvodu se pro knihovny často volí Lesser General Public License (LGPL), která zaručuje trvalou otevřenost kódu vlastní knihovny, ale zároveň dovoluje tuto knihovnu použít i v jinak licencovaném softwaru (i uzavřeném).

Na druhou stranu může docházet k tomu, že open source vývojáři pracují zadarmo a zveřejňují svoje knihovny a vývojáři komerčních uzavřených aplikací tyto knihovny začleňují do svého softwaru (šetří tak čas i peníze) a přitom se od nich směrem k open source komunitě nevrací žádná hodnota – pouze využijí knihovnu a prodávají svůj uzavřený software. Free Software Foundation proto dnes doporučuje zvážit použití GPL licence i pro knihovny: Why you shouldn't use the Lesser GPL for your next library. Knihovny pod GPL licencí (místo LGPL) povedou k tomu, že open source software bude konkurenceschopnější, jelikož proprietární software už nebude zdarma čerpat výhody z práce open source vývojářů. Zatímco komunitě svobodného softwaru tato výhoda zůstane a její členové si budou vzájemně poskytovat software pod GPL licencí.

BSD – kdo je svobodnější?

Tato licence vznikla pro operační systém BSD na univerzitě v Berkeley. Oproti GPL je výrazně stručnější a klade méně podmínek (současně zaručují méně práv). Abychom vyhověli BSD licenci, musíme v kódu i binárním tvaru zachovat informaci o původním autorovi (copyright). Jinak si ale s kódem můžeme dělat téměř cokoli (např. šířit upravené spustitelné verze bez zdrojových kódů).

Můžeme se setkat s několika variantami této licence, původní čtyřbodová, tříbodová nebo dvoubodová. Více v samostatném článku. Dvoubodová a tříbodová varianta je kompatibilní s GPL licencí – můžeme tedy kód vydaný pod BSD licencí zahrnout do svého programu vydaného pod GPL licencí. Výsledné dílo pak bude pod licencí GPL. Opačně to ale neplatí: GPL kód nemůžeme jen tak začlenit do svého BSD programu.

Mezi uživateli se vedou, někdy dost bouřlivé, spory o tom, která licence je „svobodnější“ a vůbec „lepší“ a „pravá“ open source licence. Licence, jakožto smlouva, zaručuje některá práva, což na druhé straně znamená povinnosti. Tento spor lze tedy těžko objektivně rozsoudit – záleží totiž vždy na tom, zda stojíme na straně, které licence přiznává práva, nebo naopak na straně, které licence ukládá povinnosti. Podívejme se na věc z pohledu dvou hlavních skupin – uživatelů a vývojářů.

Pohled vývojáře

Pokud má psaní softwaru sloužit k naší obživě, zvolíme raději přísnější licenci (GPL, Affero) a budeme se vydělávat na duálním licencování. Zvoli-li bychom zde např. BSD licenci, pravděpodobně bychom se nevyhnuli tomu, aby někdo jiný vydělával na naší práci (což může i v případě GPL, ale za přísnějších pravidel). V případě softwarových knihoven je oblíbená licence LGPL, která zaručuje oteřenost kódu dané knihovny (a jejích odvozenin), ale dovoluje použití knihovny i v uzavřeném softwaru, což umožňuje větší rozšíření a oblibu naší knihovny.

Open source software může být i vedlejším efektem naší činnosti nebo zábavou, pak nejčastěji volíme GPL (případně Affero) licenci, pokud chceme, aby náš software byl vždy otevřený a aby každý uživatel výsledků naší práce měl přístup ke zdrojovým kódům, nebo licenci BSD, pokud usilujeme o co největší rozšíření našeho softwaru (i za cenu toho, že někdo kód uzavře a nezveřejní změny).

Pohled uživatele

Pro uživatele je na první pohled nejpříjemnější dvoubodová či třibodová BSD licence, která mu ukládá nejméně povinností a omezení. Může např. jako programátor začlenit zdrojový kód do své uzavřené aplikace. Když se ale uživateli dostane do rukou program ve spustitelném (binárním) tvaru, byl by pravděpodobně radši za GPL licenci, protože pak může po distributorovi (od kterého binárku obdržel) požadovat zdrojové kódy a ten je musí vydat.

Tyto role u otevřeného softwaru často splývají a člověk je jak uživatelem, tak vývojářem daného programu.

Prodej softwaru

Svobodný software (podmnožina otevřeného softwaru) bývá často vnímán jako bezplatný software. Ale není tomu tak – Free software a freeware jsou dvě odlišné kategorie:

Free software“ is a matter of liberty, not price. To understand the concept, you should think of „free“ as in „free speech,“ not as in „free beer.“

Svobodný software nám dává právo ho šířit, ale neukládá nám šíření jako povinnost. Můžeme tak například ve své firmě používat upravené Linuxové jádro a tyto změny neposkytnout nikomu dalšímu. Zda software šířit nebo nešířit je naše svobodné rozhodnutí – a toto rozhodnutí můžeme podmínit zaplacením nějaké částky. Nejenže GPL licence šíření softwaru za úplatu nezakazuje, ale GNU ho dokonce doporučuje:

„Rozšiřování svobodného softwaru je příležitostí, jak získat prostředky pro jeho vývoj. Nepromarněte ji!“

Na druhou stranu je ale potřeba říci, že osoba, které jsme GPL software prodali, má stejná práva – může tento software šířit dále, stejně jako my. To ale nevylučuje např. zakázkový vývoj aplikace pod GPL licencí – zákazník pak tento software může používat ve všech svých pobočkách, aniž by musel dokupovat další a další licence jako u proprietárního softwaru. A pro další rozvoj daného softwaru si může najmout klidně jinou firmu, jelikož má k dispozici zdrojové kódy aplikace – zbavuje se tak závislosti na výhradním dodavateli. Ještě častější bývá, že zákazník zaplatí vývoj určité funkcionality aplikace, kterou využívá.

Duální licencování

Přísnější licence navíc poskytují větší prostor pro duální licencování, které nám umožní získat více finančních prostředků pro rozvoj našeho svobodného softwaru. Budeme ho nabízet pod GPL licencí (nebo AGPL v případě webové aplikace) a zájemcům budeme prodávat komerční licenci, která nebude klást podmínky na šíření úpravených zdrojových kódů uživatelům.

Při vydávání programu pod komerční licencí si musíme dát pozor na autorské právo. K uzavření zdrojových kódů potřebujeme splnit alespoň jednu z těchto podmínek:

  • Jsme výhradními autory dané aplikace, všech jejích částí. Vydáním aplikace pod svobodnou licencí totiž nezanikají naše autorská práva, a tak tento krok můžeme učinit (pouze už není v našich silách stáhnout z oběhu dřívější verze kódu vydané pod GPL licencí – tento kód už si žije vlastním GPL životem).
  • Nejsme jediným autorem, ale od přispěvatelů jsme přijímali kusy kódu, pod pouze takovou licencí, která toto uzavření umožňuje – např. BSD nebo Public Domain.
  • Spoluautoři nám svoje příspěvky ke kódu posílali pod GPL licencí, ale podaří se nám získat jejich souhlas. V tomto případě budou pravděpodobně chtít podíl na zisku z prodeje komerčních licencí.

Příklady duálního licencování:

  • Qt – toolkit pro tvorbu GUI (uživatelského rozhraní). Šířen pod GPL licencí (verze 2 i 3). Pokud na něm chceme založit nějakou svoji aplikaci s uzavřeným kódem (resp. s jinou licencí než GPL), zakoupíme si komerční licenci. Naopak pro vývoj svobodných aplikací použijeme GPL verzi a nemusíme platit nic. Na Qt je založeno jedno z nejoblíbenějších desktopových prostředí KDE.
  • MySQL – SŘBD (DBMS) dnes vlastněný firmou Sun Mircosystems. Tento databázový systém je šířen jednak pod licencí GPLv2 a jednak je možné zakoupit i jeho komerční verzi (obsahuje i další přidanou hodnotu).

Poměrně nedávno Nokia oznámila, že knihovna Qt bude šířena i pod LGPL licencí. Tento krok bývá vysvětlován tak, že zatímco Trolltech (autor Qt, koupený Nokií) vydělával na duálním licencování, Nokia vydělává na prodeji mobilů a je tedy v jejím zájmu, aby existoval dostatek (klidně i uzavřených) aplikací pro její mobilní platformu Qt Extended.

Porovnání licencí

Shrňme si teď nejdůležitější vlastnosti jednotlivých licencí. Právo na jedné straně (např. uživatele) znamená vždy povinnost na straně druhé (např. distributora) a naopak.

table { border: 1px solid; } td { border: 1px solid; } .ano { color: green; } .ne { color: red; }

Licence Právo upravovat program Právo šířit kopie programu (původní i upravené) Závislý kód musí být vydán pod stejnou licencí Uživatel spustitelné verze má právo na zdrojový kód Uživatel síťového softwaru má právo na zdrojový kód Povinnost propagovat autora
GPL ANO ANO ANO ANO NE NE
Affero GPL ANO ANO ANO ANO ANO NE
LGPL ANO ANO NE ANO NE NE
BSD ANO ANO NE NE NE NE
Původní BSD ANO ANO NE NE NE ANO

Všechny tyto licence nám dávají právo upravovat zdrojový kód a šířit ho dále (ať upravený či neupravený). Zároveň nám ale neukládají povinnost zveřejňovat provedené změny, pokud binární tvar programu nešíříme dále (výjimka viz Affero licence).

Závislým kódem zde rozumíme kód programu, do kterého jsme začlenili cizí kód pod určitou licencí. Licence GPL má tzv. „virální charakter“, což znamená, že když do svého programu začleníme část GPL kódu, musí být i zbytek programu pod touto licencí. Tato vlastnost je mnohými nenáviděna a mnohými opěvována, podle toho, jak se to komu hodí. V principu ale přispívá k udržitelnosti open sourcu jakožto modelu distribuce softwaru.

Pokud se vám dostane do rukou spustitelná (binární) froma programu vydaného pod GPL, máte právo požadovat zdrojové kódy. Affero GPL toto právo rozšiřuje i na případy, kdy je program poskytovaný po síti (např. webová aplikace).

Původní (čtyřbodová) BSD licence obsahovala ustanovení týkající se propagace:

Všechny propagační materiály zmiňující vlastnosti nebo použití tohoto softwaru musejí obsahovat následující text: Tento produkt zahrnuje software vytvořený <VLASTNÍKEM PRÁV> a přispěvatelů.

 

kvůli kterému nebyla kompatibilní s licencí GPL (tento BSD kód nešlo použít v GPL programu) – GPL licence totiž nedovoluje omezovat šíření softwaru nad rámec podmínek v ní uvedených. Novější BSD licence toto ustanovení už neobsahuje a říká se jí trojbodová.

 

Závěr

Je třeba mít na paměti, že volba licence je výhradním právem autora. Uživatelé mohou licenci buď přijmout nebo nepřijmout (nepoužívat software), podobně jako si mohou, ale nemusí koupit komerční software. Pokud autor není zcela rozhodnutý, je lepší volit „přísnější“ licenci, protože kdykoli později může vydat software pod „volnější“ licencí a přiřknout uživatelům dodatečná práva, zatímco jednou poskytnutá práva už nelze odebrat. Uživateli nezbývá než brát software pod takovou licencí, pod kterou je nabízen, případně může autora slušně požádat, jestli by nechtěl program licencovat i jinak.

Zdroje a odkazy

Průměr: 5 (1 hlas)