Kód z GitHubu v komerčním produktu: licence a co zkontrolovat
MarkdownPermisivní licence MIT, Apache a BSD, copyleftové licence GPL/AGPL, absence souboru LICENSE a kontrola původu kódu přidaného pomocí AI.
Přečíst celý článek
Vyvíjíte produkt a na GitHubu najdete hotový díl: knihovnu, šablonu nebo celý projekt, který dělá přesně to, co potřebujete. Claude navrhne, abyste ho přidali do svého projektu. Pak se zarazíte: kód je sice veřejně dostupný, ale můžete ho opravdu použít, natož prodávat produkt, který ho obsahuje? Může vás jeho autor později žalovat?
Proberu to postupně: proč samotný otevřený kód na GitHubu neznamená svolení, které licence vám dovolují kód použít a prodávat produkt, které podmínky copyleftu mohou vyžadovat odpovídající zdroje zahrnutého díla a jak licenci zkontrolovat za minutu před použitím kódu. Žádné „záleží na situaci“.
Praktické informace o práci s Ailootem najdete v dokumentaci.
Upozornění
Tento materiál slouží jako reference; nejsem právník. Níže popisuji podmínky oblíbených licencí a pravidla s odkazy na primární zdroje, ale svou konkrétní situaci si ověřte podle textu licence a v případě rozsáhlého komerčního produktu také s právníkem. Rozhodnutí je na vás.
Je pravda, že když je kód na GitHubu, můžete ho zdarma používat?
Hlavní poznatek
Ne. To, že je kód dostupný k nahlédnutí, neznamená, že ho smíte použít ve vlastní práci. Ve výchozím nastavení je veškerý kód chráněný autorským právem a nesmíte ho použít, pokud autor samostatně neudělil svolení. Samotné zveřejnění na GitHubu ostatním pouze umožňuje prohlížet si repozitář a vytvořit jeho kopii v rámci GitHubu. Právo zahrnout kód do svého produktu vyplývá z licence, kterou autor k repozitáři připojil. GitHub sám toto právo neuděluje.
Hlavní pastí je zde slovo „otevřený“. Zdrojový kód vidíte, a tak se zdá, že když nebyl skrytý, smíte ho používat. Tato úvaha je chybná. „Otevřený ke čtení“ a „licencovaný k použití“ jsou dvě různé věci.
Ve výchozím nastavení je každé tvůrčí dílo, včetně kódu, chráněné autorským právem od okamžiku svého vytvoření. Dokud autor výslovně neudělí svolení, nesmíte ho používat. Takto to popisuje GitHub na své vlastní stránce s přehledem licencí.
Když vytvoříte tvůrčí dílo (a kód je také tvůrčí dílo), je ve výchozím nastavení chráněno výhradním autorským právem. Pokud nepřipojíte licenci, která stanoví něco jiného, nikdo další nesmí vaše dílo kopírovat, šířit ani upravovat, aniž by riskoval nárok nebo žalobu.
Druhou vrstvu představuje samotný GitHub. Lidé si myslí, že když zveřejněním kódu souhlasili s pravidly GitHubu, mohou také používat cizí kód, který tam najdou. Pravidla říkají přesný opak. Zveřejněním repozitáře autor ostatním umožňuje pouze si ho prohlížet a vytvářet forky, tedy kopie přímo na GitHubu. To neopravňuje k použití kódu ve vlastní práci.
Zveřejněním repozitáře udělujete ostatním uživatelům nevýhradní celosvětovou licenci k používání, zobrazování a reprodukování (vytvářením forků) vašich materiálů prostřednictvím služby a v rámci funkcí GitHubu. Další práva můžete udělit připojením licence.
Klíčová slova jsou v poslední větě: „v rámci funkcí GitHubu“ a „další práva vyplývají z licence“. Fork zůstává na GitHubu. Jakmile chcete kód použít ve vlastním produktu, natož ho prodávat, potřebujete od autora samostatnou licenci. Žádná licence, žádné právo — i když je kód přímo před vámi.
Co rozhoduje o tom, zda můžete použít cizí kód?
Hlavní poznatek
Je to licenční soubor v repozitáři, obvykle nazvaný LICENSE nebo LICENSE.md. Jde o svolení autora, které určuje, co s kódem smíte a nesmíte dělat. Licence odpovídá na tři otázky: můžete kód použít v komerčním produktu, můžete ho upravovat a můžete svůj vlastní zdrojový kód ponechat neveřejný? Různé licence na ně odpovídají různě, takže nejprve zkontrolujte tento soubor a teprve potom otevřete samotný kód.
Vše závisí na jednom souboru. Řádně spravovaný repozitář obsahuje licenční soubor — obvykle LICENSE, někdy LICENSE.md, případně je licence zmíněna přímo v souboru README. Jde o svolení autora, které stanoví podmínky, za nichž smíte kód používat. GitHub obvykle zobrazuje název licence v postranním panelu stránky repozitáře ještě předtím, než otevřete samotný soubor.
Abyste se neztratili v právnickém jazyce, je užitečné číst licenci prostřednictvím tří otázek týkajících se vaší situace:
- Můžete tento kód použít v komerčním produktu, za který lidé platí?
- Můžete kód upravovat podle svých potřeb?
- Musíte následně zveřejnit zdrojový kód svého produktu, nebo ho můžete ponechat neveřejný?
Téměř všechny rozdíly mezi licencemi spočívají v různých odpovědích na třetí otázku. Na první dvě oblíbené otevřené licence nejčastěji odpovídají „ano“: používejte ho, upravujte ho, prodávejte ho. Lidé ale narážejí na to, zda vás licence donutí zveřejnit vlastní kód. Dále si pomocí těchto tří otázek projdeme hlavní typy.
Které licence dovolují použít kód a prodávat produkt?
Hlavní poznatek
Pro komerční produkt jsou nejpohodlnější permisivní licence: MIT, Apache 2.0 a BSD. Dovolují téměř vše: používat kód, upravovat ho, prodávat produkt a ponechat svůj vlastní zdrojový kód neveřejný. Mají jednu povinnost: zachovat text licence a uvedení autorství. Apache 2.0 navíc chrání před patentovými nároky a vyžaduje označit upravené soubory. Pokud má cizí kód některou z těchto licencí, můžete ho v komerčním produktu bezpečně použít.
Začněme dobrou zprávou. Pro člověka, který vyvíjí produkt na prodej, jsou nejlepší volbou licence ze skupiny zvané permisivní. Je jich několik, ale nejběžnější jsou tři: MIT, Apache 2.0 a BSD. Všechny tři odpovídají na první dvě otázky „ano“ a dovolují vám ponechat vlastní zdrojový kód neveřejný.
Nejběžnější a nejjednodušší je MIT. Její text se vejde do jediného odstavce.
Tímto se bezplatně uděluje svolení kterékoli osobě, která získá kopii tohoto softwaru, používat jej bez omezení, včetně práv používat, kopírovat, upravovat, slučovat, zveřejňovat, šířit, poskytovat sublicence a prodávat kopie, za předpokladu, že ve všech kopiích bude uvedeno výše uvedené upozornění na autorská práva a toto upozornění o svolení.
Jednoduše řečeno, MIT vám dovoluje s kódem dělat téměř cokoli, včetně prodeje produktu a ponechání vlastního zdrojového kódu neveřejným. Jedinou povinností je připojit text licence a řádek s uvedením autorství. Například Babel, .NET a Rails jsou vydány pod licencí MIT, takže jste kód pod touto licencí téměř jistě už použili.
Apache 2.0 funguje podobně, ale přidává dva důležité body. Zaprvé výslovnou ochranu před patentovými nároky: autoři kódu slibují, že vás kvůli patentům na tento kód nezažalují. Zadruhé několik dalších formálních požadavků na použití.
Kopie díla nebo odvozených děl můžete reprodukovat a šířit na jakémkoli médiu, s úpravami i bez nich, pokud příjemcům poskytnete kopii této licence, označíte upravené soubory, zachováte upozornění na autorská práva a patenty a přiložíte čitelnou kopii souboru NOTICE, pokud existuje.
BSD (ve verzích se dvěma a třemi doložkami) je v zásadě podobná MIT: používejte ji, upravujte ji, prodávejte ji, zachovejte upozornění na autorská práva. Všechny tři licence jsem zařadil do tabulky, abyste jejich rozdíly viděli na první pohled.
| Licence | Prodej produktu | Ponechání zdrojového kódu neveřejným | Co musíte udělat | Patentová ochrana |
|---|---|---|---|---|
| MIT | ano | ano | zachovat upozornění na autorská práva a text licence | žádné ustanovení |
| Apache 2.0 | ano | ano | upozornění na autorská práva, soubor NOTICE, označit úpravy | ano |
| BSD (2 a 3 doložky) | ano | ano | zachovat upozornění na autorská práva | ne |
Jak to použít v praxi: pokud u cizího kódu vidíte MIT, Apache 2.0 nebo BSD, můžete být klidní: smíte ho použít v komerčním produktu, upravovat ho a ponechat svůj vlastní zdrojový kód neveřejný. Jen nesmíte odstranit licenční soubor a uvedení autorství z převzaté části.
Jak platí povinnosti ke zdrojovému kódu GPL a AGPL?
Hlavní poznatek
GPL a AGPL dovolují komerční použití. Povinnosti GPL vznikají při předávání zahrnutého díla; samotný provoz na serveru bez předání kopie tuto podmínku nespouští. AGPLv3 přidává nabídku zdrojového kódu uživatelům vzdáleně komunikujícím s upravenou verzí. Určete zahrnuté kombinované dílo: oddělené nezávislé komponenty do něj automaticky všechny nepatří.
Copyleft zachovává zahrnuté dílo a odvozeniny pod stejnou licencí při splnění příslušných podmínek. Distribuce zdrojových či binárních kopií zahrnutého nebo kombinovaného odvozeného díla pod GPLv3 vyžaduje dodržení licence a povinností k odpovídajícím zdrojům. Automaticky se nevztahuje na každý nezávislý program stejného produktu či serveru.
U webové služby samotný hosting knihovny GPL na vlastním serveru bez předávání kopií uživatelům nevyžaduje zveřejnit celou službu. Distribuce zahrnuté kombinované aplikace zákazníkům může povinnosti spustit; před rozhodnutím o doprovodných zdrojích ověřte propojení a licenci. Prohlížečový klient dodávaný uživatelům je samostatná distribuční otázka.
AGPLv3 přidává síťovou podmínku: upravíte-li program a uživatelé s verzí komunikují vzdáleně, musí jim výrazně nabídnout odpovídající zdrojový kód. To je přesnější než tvrzení, že hosting jakékoli komponenty AGPL otevírá všechny nezávislé části služby.
U proprietárního produktu prozkoumejte zahrnuté dílo, propojení komponent, distribuci kopií a případnou síťovou interakci AGPL. Nemůžete-li splnit příslušné povinnosti, vyberte kompatibilní permisivní alternativu nebo získejte samostatné svolení. Komerční použití je dovoleno; rozhoduje skutečná licence a propojení.
Co dělat, když repozitář vůbec nemá licenční soubor?
Hlavní poznatek
Absence licenčního souboru znamená, že kód nesmíte používat. Neznamená to „je zdarma“: naopak, bez licence zůstává kód pod plnou ochranou autorských práv autora a nemáte právo ho používat, kopírovat ani upravovat. Svolení k prohlížení a vytváření forků v rámci GitHubu zde nepomůže — nedává vám právo zahrnout kód do svého produktu. Pokud kód opravdu potřebujete, jedinou čistou cestou je napsat autorovi a požádat o svolení, nebo počkat, až licenci přidá.
Častou chybou je předpokládat, že pokud chybí licence, neplatí žádná omezení a kód můžete volně používat. Je to přesně naopak. Chybějící licence neznamená svolení; ve výchozím nastavení znamená, že svolení nemáte. Kód bez licence zůstává pod plnou ochranou autorských práv autora a nesmíte s ním nakládat.
Znovu platí pravidlo, kterým jsme začali: ve výchozím nastavení je kód chráněn autorským právem a bez výslovného svolení ho nesmíte kopírovat, upravovat ani šířit. Možnost prohlížet si ho a vytvářet jeho forky v rámci GitHubu tuto překážku neodstraňuje — nedává vám právo použít kód ve vlastním produktu.
Co dělat v praxi, pokud kód nemá licenci, ale opravdu ho potřebujete:
- Napište autorovi. Přímo v diskusích repozitáře nebo e-mailem se zeptejte, zda můžete kód použít a za jakých podmínek. Někdy autor jen zapomněl přidat licenci a na požádání ji doplní.
- Najděte náhradu. Téměř ke každému úkolu existuje druhý, třetí i desátý podobný repozitář — mezi nimi najdete takový se správnou licencí MIT nebo Apache.
- Nepoužívejte ho. Pokud nemáte svolení a neexistuje náhrada, kód vám nepatří a nesmíte ho vložit do produktu, který chcete prodávat. Pokušení říct si „kdo na to přijde?“ špatně skončí ve chvíli, kdy produkt začne vydělávat a přitahovat pozornost.
Co když Claude do projektu sám přidal cizí kód?
Hlavní poznatek
Jde o samostatný případ a je důležité nezaměňovat ho s přímým kopírováním repozitáře. Když sami přebíráte kód z konkrétního repozitáře, musíte dodržovat jeho licenci. Když Claude nebo jiná AI vygeneruje kód v reakci na vaše zadání, obvykle vytvoří vlastní text sestavený pro daný úkol, místo aby zkopírovala soubor někoho jiného, a otázka se přesouvá k právům ke generovanému kódu. Pokud však AI zřetelně reprodukovala rozpoznatelnou část cizího licencovaného kódu, podmínky licence stále platí. V obou případech se vyplatí zkontrolovat původ.
Je tu ještě druhá rovina, kterou lze snadno zaměnit s první. Něco jiného je navštívit repozitář a zkopírovat z něj soubor: pak se na vás přímo vztahují všechny výše uvedené informace o licenci. Něco jiného je, když pro vás Claude napíše kód na základě zadání.
V běžných případech AI vytvoří vlastní text sestavený pro váš úkol, místo aby zkopírovala soubor někoho jiného. Otázka se pak přesouvá do jiné oblasti: komu patří generovaný kód a můžete ho prodávat? To je rozsáhlé samostatné téma, kterému se věnuji v článku o tom, komu patří kód napsaný pomocí AI.
Je ale třeba pamatovat na výjimku. Někdy AI vytvoří rozpoznatelnou část cizího kódu téměř slovo od slova — celou funkci ze známé knihovny. V takovém případě se licence knihovny uplatní bez ohledu na to, kdo fyzicky stiskl klávesy. Velké hotové bloky, které Claude převzal celé, proto kontrolujte stejně, jako kdybyste je zkopírovali sami.
Jak před použitím kódu zkontrolovat licenci: postup
Hlavní poznatek
Postup je následující: otevřete stránku repozitáře a zkontrolujte název licence v postranním panelu, otevřete samotný soubor LICENSE, určete typ — permisivní (MIT, Apache, BSD), nebo copyleftový (GPL, AGPL) — porovnejte ho se svou situací a rozhodněte se, zda kód použít, nebo hledat náhradu. Pokud žádná licence není uvedena, kód nepoužívejte. Celá kontrola zabere pár minut a měla by proběhnout předtím, než se kód dostane do vašeho projektu, nikoli až potom.
Shrňme si to do krátkého kontrolního seznamu pro prověření jakéhokoli cizího kódu předtím, než ho přidáte do svého projektu. Postupujte od začátku do konce.
Najděte název licence na stránce repozitáře
Otevřete repozitář na GitHubu. Název licence bývá vidět v pravém sloupci nebo pod seznamem souborů — například „MIT License“, „Apache-2.0“ nebo „GPL-3.0“. Pokud je pole prázdné a neexistuje licenční soubor, je to už varovný signál; vraťte se k tomu v posledním kroku.
Otevřete samotný licenční soubor
V seznamu souborů najděte LICENSE, LICENSE.md nebo COPYING a otevřete ho. Ujistěte se, že název odpovídá tomu, co je uvedeno v postranním panelu, a že se licence vztahuje na kód, který používáte, nikoli jen na samostatnou část repozitáře.
Určete typ: permisivní, nebo copyleftový
MIT, Apache 2.0 a BSD jsou permisivní; kód můžete použít v uzavřeném komerčním produktu. GPL a AGPL jsou copyleftové; před určením povinností prověřte zahrnuté dílo, distribuci a případnou síťovou podmínku AGPL. Samotný název neurčuje zahrnutí nezávislých komponent.
Porovnejte licenci se svou situací
Odpovězte na tři otázky: prodáváte produkt, upravujete kód a chcete zdrojový kód ponechat neveřejný? MIT, Apache a BSD se hodí pro uzavřený produkt určený k prodeji. U GPL a AGPL určete, které zahrnuté či kombinované dílo vyžaduje odpovídající zdroje a kdy povinnost vzniká; posuďte splnitelnost těchto podmínek.
Pokud licenci nemá, nepoužívejte ho
Pokud licenční soubor chybí a README neuvádí nic o svolení, kód nesmíte používat. Napište autorovi a požádejte o svolení, nebo najděte rovnocennou náhradu se správnou licencí. „Je veřejně dostupný“ neznamená, že máte svolení.
Tato kontrola se zdá zdlouhavá až do chvíle, kdy váš produkt poprvé vyroste, začne vydělávat a někdo se zeptá na cizí kód, který obsahuje. Dvě minuty na začátku stojí méně než řešení sporu později. Samostatně rozebírám, co s produktem dělat potom, aby po spuštění nezůstal stát: Vytvořil jsem produkt s AI; co dál.
Často kladené otázky
Můžete prodávat produkt, který obsahuje cizí kód z GitHubu?
Ano, pokud má kód permisivní licenci — MIT, Apache 2.0 nebo BSD. Umožňují použít kód v komerčním produktu, prodávat ho a ponechat vlastní zdrojový kód neveřejný. Vyžadují pouze zachování textu licence a uvedení autorství. GPL a AGPL dovolují i komerční použití, povinnosti ke zdrojům ale závisejí na zahrnutém díle a distribuci či příslušné síťové podmínce AGPL. Bez licenčního souboru kód nesmíte použít vůbec.
Co znamená, když repozitář na GitHubu nemá licenci?
Znamená to, že kód nesmíte používat. Chybějící licence znamená ve výchozím nastavení chybějící svolení; neznamená „zdarma“. Kód zůstává pod plnou ochranou autorských práv autora. Možnost prohlížet si repozitář a vytvářet jeho forky v rámci GitHubu vám nedává právo použít kód ve vlastním produktu. Pokud ho potřebujete, napište autorovi a požádejte o svolení, nebo najděte rovnocennou náhradu s otevřenou licencí.
Jaký je pro můj produkt rozdíl mezi MIT a GPL?
MIT vám dovoluje kód používat a upravovat, prodávat produkt a ponechat svůj vlastní zdrojový kód neveřejný — jedinou povinností je zachovat text licence. GPL také dovoluje komerční použití, předání zahrnutého kombinovaného či odvozeného díla ale vyžaduje dodržení povinností k odpovídajícím zdrojům a stejné licenci. Samotný hosting bez předání kopie je odlišný a nezávislé komponenty nejsou zahrnuty automaticky.
Musím něco udělat, když použiji kód pod licencí MIT?
Ano, jednu drobnost: zachovat text licence MIT a řádek s uvedením autorství z kódu, který jste ve svém projektu použili. Obvykle jde o tentýž soubor LICENSE, který je připojený k originálu. MIT nic dalšího nevyžaduje — kód můžete upravovat, prodávat produkt a ponechat svůj zdrojový kód neveřejný.
Co když cizí kód přidal sám Claude, a ne já?
Přesto byste měli zkontrolovat jeho původ. AI obvykle vytvoří vlastní text pro váš úkol a otázka se pak přesouvá k právům ke generovanému kódu — to je samostatné téma. Pokud ale AI téměř slovo od slova reprodukovala rozpoznatelnou část cizího kódu ze známé knihovny, licence této knihovny stále platí. Velké hotové bloky převzaté vcelku kontrolujte stejně, jako kdybyste je zkopírovali a vložili sami.
Zdroje
- choosealicense.com – referenční projekt GitHubu pro výběr licence
- choosealicense.com – co znamená, když licence chybí
- Podmínky služby GitHub, oddíl D (udělení licence ostatním uživatelům)
- Licence MIT (opensource.org)
- Licence Apache 2.0 (apache.org)
- GNU General Public License v3.0 (gnu.org)
- GNU Affero General Public License v3.0 (gnu.org)
Další podrobnosti
Časté otázky
Nutí mě hosting knihovny GPL zveřejnit celou webovou službu?
Samotný hosting bez předávání kopií nespouští distribuční podmínku GPL. Při distribuci zahrnuté kombinované či odvozené aplikace mohou povinnosti ke zdrojům platit pro toto dílo; samostatné nezávislé komponenty nejsou zahrnuty automaticky.
Jakou podmínku přidává AGPLv3 pro webovou službu?
Upravený program AGPL podporující vzdálenou síťovou interakci musí těmto uživatelům nabídnout odpovídající zdrojový kód. Prověřte zahrnutý program a propojení místo předpokladu nulových povinností nebo otevření všech nezávislých služeb.