Nebojte se licence Affero GNU GPL

Když vyšla svobodná licence GNU Affero GPL verze 3 spolu se svojí sestrou, licencí GNU GPL verze 3 , strhla se kolem ní vlna emocí a bouřlivá diskuse. Affero GPL je téměř identická se svou sestrou s výjimkou bodu 13, který zaceluje jednu trhlinu v záměru GNU GPL.

Uvědomme si na úvod, co je vlastně cílem GNU GPL – zajistit svobodu uživatelů, tj. dát všem uživatelům programu čtyři základní svobody (používat program za jakýmkoliv účelem, studovat funkci programu a upravovat jej, šířit původní a šířit pozměněnou verzi programu). Aby mohla GNU GPL tento požadavek splnit, musí obsahovat jisté restrikce, které zabrání uzavření díla a odebrání svobod uživatelů.

Samotné restrikce GNU GPL jsou navázány na právní akt distribuce/šíření programu. Pokud se jedná o koncového uživatele, ten může využívat své první svobody (používat program za jakýmkoliv účelem) dle libosti – dokonce ani nemusí s GNU/GPL souhlasit – její podmínky se na něj nevztahují, dokud nezačne program šířit. Teprve pak se na něj GPL začne vztahovat a neumožní mu odebrat svobody uživatelům, kteří si daný program od dotyčného opatří.

Pokud se jedná o klasickou desktopovou aplikaci, pak před tím, než ji můžete používat, je nutné ji stáhnout, nainstalovat a spusit – aplikace pak běží fyzicky na vašem počítači. Ten, kdo vám aplikaci poskytl, daný program distribuoval/šířil, tudíž se na něj vztahuje GPL a vy od něj musíte získat všechny základní svobody, včetně přístupu ke zdrojovému kódu.

Problém ovšem nastává u webových aplikací. Když umístím webovou aplikaci šířenou pod GNU/GPL na svůj webový server a poskytnu uživatelům možnost aplikaci používat, podobně jako vy nyní používáte WordPress (který je mimochodem šířený zrovna pod GNU/GPL) pro zobrazení tohoto článku, neprovádím šíření/distribuci daného programu, tudíž nemusím vyhovět restrikcím GPL a zjistit svobodu svým uživatelům. A tady tedy licence GNU/GPL ve svém poslání selhává.

Pokud používáte nemodifikovanou verzi nějaké webové aplikace, a získáte její název (což je ne vždy úplně jednoduché, zvláště když někteří webmasteři mají tendenci likvidovat patičky, které obvykle původ programu jasně určí), můžete si ji obvykle někde na Webu stáhnout, nainstalovat a používat. Ovšem to, zda-li se jedná o nemodifikovanou verzi nebo naopak nějak upravenou, se s jistotou nedozvíte (bez náhledu do zdrojového kódu).

Pokud upravím klasickou desktopovou aplikaci šířenou pod GNU/GPL a modifikovanou verzi distribuuji/šířím, pak musím dostát podmínkám GNU/GPL a modifikovaný zdrojový kód poskytnout zájemcům z řad svých uživatelů. Pokud upravím webovou aplikaci, umístím ji na svůj server a umožním její veřejné použití (ať již zdarma či za poplatek), pak se ovšem šíření/distribuce aplikaci nedopouštím, a tudíž mě nic nenutí, abych modifikovaný zdrojový kód zpřístupnil svým uživatelům. Z takové aplikace tak de facto mohu udělat proprietární software – lidé si sice teoreticky mohou stáhnout původní aplikaci, na které jsem postavil svoje řešení, ale k mým úpravám se nedostanou.

A právě tento problém řeší licence Affero GPL, která obsahuje bod 13, kde se píše:

Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License.

Pokusím se o amatérský překlad s pomocí českého překladu GNU GPL:

Bez ohledu na jakákoliv jiná ustanovení této Licence, pokud upravíte Program, vaše upravená verze musí viditelně nabídnout všem uživatelům přistupujícím k němu vzdáleně prostřednictvím počítačové sítě (pokud vaše verze takový přístup umožňuje) příležitost získat Úplný zdrojový kód vaší verze poskytnutím přístupu k Úplnému zdrojovému kódu ze síťového serveru bezplatně, prostřednictvím standardních nebo obvyklých metod usnadňujících kopírování softwaru. Tento Úplný zdrojový kód musí obsahovat Úplný zdroj jakéhokoliv díla chráněného verzí 3 GNU General Public License, které je zahrnuto na základě následujícího odstavce.

Bez ohledu na jakákoliv jiná ustanovení této Licence, máte povolení k linkování či kombinování jakéhokoliv chráněného díla s dílem licencovaným pod verzí 3 GNU General Public License do jediného kombinovaného díla a ke zveřejnění výsledného díla. Podmínky této Licence budou nadále platit pro část, která je chráněným dílem, ale dílo, se kterým je dílo zkombinováno, zůstane chráněné verzí 3 GNU General Public License.

Na příslušný překlad se samozřejmě nevztahuje žádná záruka, nicméně z daného bodu vyplývá to, že ti, kteří nabídnou přístup k dané modifikované aplikaci prostřednictvím počítačové sítě, musí zpřístupnit modifikovaný zdrojový kód také svým uživatelům.

Spolu s tím tento bod licence GNU Affero GPL verze 3 umožňuje kombinování díla s dílem šířeným pod GNU GPL verze 3, ve které je odpovídající bod:

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.

Tady si vypůjčím kousek z výše zmíněného překladu licence GNU GPL do češtiny, který provedl Tibor Peták:

Bez ohledu na jakákoli jiná ustanovení této Licence, máte povolení k propojení či kombinování jakéhokoliv chráněného díla s dílem licencovaným podle 3. verze Obecné veřejné licence GNU Affero do jediného kombinovaného díla a výsledné dílo zveřejnit. Podmínky této Licence se budou nadále vztahovat na část, která je chráněným dílem, ale, pokud jde o interakci prostřednictvím sítě, na kombinované dílo jako takové budou platit zvláštní požadavky odstavce 13 Obecné veřejné licence GNU Affero.

Tudíž, pokud sloučím dílo šířené pod GNU GPL s dílem šířeným pod Affero GPL, výsledek si někdo stáhne, modifikuje a nabídne uživatelům ke stažení, musí poskytnout svým uživatelům zdrojový kód jak části chráněné Affero GPL, tak části chráněné GNU GPL.

Původně se uvažovalo o tom, že by se příslušné rozšíření licence Affero stalo součástí GNU GPL, ale od toho se upustilo v obavě negativního přijetí GNU GPL verze 3. Proto vznikla verze 3 licence Affero.

Já osobně příliš nerozumím, proč někteří odmítají Affero, zatímco GPL respektují. Affero pouze zaceluje trhlinu v záměru licence GPL, kterou vytvořily webové aplikace. Pokud se jedná o klasické desktopové aplikace, obě dvě licence se chovají úplně stejně. Asi je to nakonec tak, že si lidé na onu trhlinu v zvykli a začali ji považovat za korektní stav, a nyní, když to Affero změnila, je to zaskočilo.

Mýty o Affero GPL

O Affero GPL koluje několik mýtů, které bych se rád pokusil vyvrátit:

Do webové aplikace je nutné doprogramovat prohlížení zdrojového kódu

U některých reakcí mi přišlo, že někteří vnímali požadavek licence Affero jako vytvoření speciální funkcionality v programu – a to takové, která by zobrazila zdrojový kód, patrně přímo dané stránky. To je samozřejmě nesmysl. Affero pouze říká, že je nutné zdrojáky zveřejnit, nikoliv, že uživatelům musí být nabídnuto, aby si prohlédli zdrojový kód aktuálně zobrazené stránky, pokud možno s přístupovými údaji do databáze, apod.

Affero jde snadno obejít

V jedné reakci jsem viděl návrh, kde samotná modifikace programu spočívá v tom, že program jen zavolá nějaký externí, proprietární modul. Něco takového je samozřejmě v rozporu s Affero – ta požaduje zveřejnění úplného zdrojového kódu, a ten samozřejmě zahrnuje i takový modul. Stejně tak odvozené dílo (což takový modul je) musí být pod stejnou licencí, tudíž se i na něj vztahuje nutnost poskytnout jeho zdrojový kód uživatelům.

Firmy se nebudou hrnout do úprav programů chráněných Affero

Je možné, že firmy budou preferovat jiné licence, stejně jako patrně preferují liberálnější licence typu MIT, BSD, apod., ale účelem Affero není nabídnout firmám možnost zotročit své uživatele. Cílem je zachování svobod uživatelů, a to i za tuto cenu.

Přesto si myslím, že Affero nebude úplně bez firemního využití a přispívání do kódu. Zejména pak, bude-li aplikace dobrá a pro firmu nebude mít smysl tajit zdrojáky či úpravy.

Affero negativně ovlivní bezpečnost

Dostupnost zdrojového kódu u řady FOSS webových aplikací je relativně běžnou věcí – řada jednotlivců i firem nasazuje webové aplikace bez modifikací nebo bez výraznějších modifikací. Tudíž, dostupnost zdrojového kódu pro řadu použití nebude problém o nic více než u jiných FOSS aplikací. Nehledě na to, že schovávání zdrojáků je spíše security by obscurity.

Jediný problém může být v amatérských modifikacích, které vytvoří bezpečnostní trhlinu z neznalosti. To ovšem dostupnost zdrojáků neovlivní – ta trhlina tam bude, ať budou zdrojáky veřejné nebo ne. Když na ni cracker nepřijde studiem zdrojáků, přijde na ni třeba náhodou nebo pečlivým průzkumem. Navíc dostupnost zdrojáků dává možnost, že se na ně někdo podívá a třeba na chybu upozorní nebo ji opraví.

Affero nelze používat interně ve firmě bez zveřejnění zdrojáků zaměstnancům

Ano, tohle je nejspíše pravda. Jelikož je speciální podmínka Affero navázána na modifikaci, pak v případě úpravy programu je firma povinna zpřístupnit zdrojový kód všem uživatelům přistupujícím k programu přes počítačovou síť, což zahrnuje i vlastní zaměstnance.

Jinou otázkou může být, co by se stalo, pokud by zaměstnavatel nutil zaměstnance podepsat NDA nebo podobnou smlouvu týkající se daného díla, kde by se zaměstnanec zavázal, že dílo nezveřejní. Pokud se jedná o samotné vývojáře, které pro firmu pracují, tak na ty by se mohl vztahovat bod 2 licence Affero:

You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.

A jeho český překlad od Tibora Petáka:

Pro účely exkluzivních úprav díla výhradně ve váš prospěch, nebo vytvoření prostředků k spuštění těchto děl, můžete chráněná díla zveřejnit pouze v případě, že v souladu s podmínkami této licence zveřejníte všechny materiály, ke kterým nevlastníte autorská práva. A ti, kteří tvoří a spouštějí chráněná díla za vás, musí tak činit výhradně vaším jménem, s vaším usměrňováním a pod vaší kontrolou, v podmínkách, které jim mimo vztahu s vámi zakazují tvořit jakékoli kopie vašeho materiálu, ke kterému jste držitelem autorských práv.

Problémem je, že v případě, kdy si zaměstnanec stáhne zdrojový kód, toto ustanovení se na něj nevztahuje – dochází tím k šíření (convey), se všemi důsledky, které z toho vyplývají, včetně bodu 10:

Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License.
[…]
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License.
[…]

Tedy česky, dle překladu licence GNU GPL do češtiny, který provedl Tibor Peták:

Po každé, když zveřejňujete (convey) chráněné dílo, získává příjemce od původního poskytovatele licence licenci pro spouštění, úpravu nebo šíření (propagate) daného díla v souladu s ustanoveními této Licence.
[…]
Nesmíte klást žádné překážky výkonu zaručených práv příjemce vyplývajících z této Licence.
[…]

Pokud by zaměstnavatel nutil zaměstnance vzdát se práv vyplývajících ze stažení zdrojového kódu programu chráněného Affero licencí, pak by tím tuto licenci jednoznačně porušil se všemi důsledky, které z toho vyplývají. Totéž se samozřejmě vztahuje na případného provozovatele veřejné webové služby. Z toho vyplývá, že nemůžete podmínit přístup k webové službě tím, že se uživatelé předem vzdají výhod, které pro ně z licence Affero GPL vyplvýají. Pokud tak učiníte, porušíte Affero GPL a ztrácíte možnost daný program modifikovat i využívat.

Na Affero se nedá vydělat

Na GNU Affero se dá u webových aplikací vydělat úplně stejně jako v případě desktopových aplikací chráněných licencí GNU GPL.

Závěr

Abych to shrnul. Affero GPL je licence zcela v duchu záměru stojícím za licencí GNU GPL, a sice zajistit svobodu pro uživatele daného softwaru, a to i v případě webových služeb, se kterými původní licence GNU GPL nepočítala a u kterých se stalo odebírání svobod uživatelům svobodného softwaru chráněném GNU GPL dlouholetou praxí. Tuto praxi je nyní možné s příchodem Affero GPL ukončit a postavit webové aplikace do roviny s desktopovými aplikacemi chráněnými licencí GNU GPL.

Přirozeně, výběr licence by se měl vždy řídit záměrem, který vývojář nebo organizace má. Nicméně, pokud uvažujete o svobodných copyleftových licencích jako třeba o GNU GPL, vezměte v potaz také Affero GPL a uvažte, jestli by vašim potřebám nevyhovovala více.