Kód z GitHubu v komerčnom produkte: licencie a čo skontrolovať
MarkdownPermisívne licencie MIT, Apache a BSD, copyleft licencie GPL/AGPL, chýbajúci súbor LICENSE a kontrola pôvodu kódu pridaného pomocou AI.
Prečítať celý článok
Vytvárate produkt a na GitHube nájdete hotovú časť: knižnicu, šablónu alebo celý projekt, ktorý robí presne to, čo potrebujete. Claude navrhne, aby ste ho začlenili do svojho projektu. A potom sa zarazíte: kód je zrejme verejne dostupný, ale môžete ho skutočne použiť, a už vôbec môžete predávať produkt, ktorý ho obsahuje? Môže sa autor neskôr obrátiť proti vám?
Prejdem to postupne: prečo otvorený kód na GitHube sám osebe neznamená povolenie, ktoré licencie vám umožňujú používať kód a predávať produkt, ktoré copyleft podmienky môžu vyžadovať zodpovedajúce zdroje pokrytého diela a ako si pred použitím kódu za minútu overiť licenciu. Žiadne „záleží na situácii“.
Praktické informácie o práci s Ailootom nájdete v dokumentácii.
Upozornenie
Tento materiál slúži na informačné účely; nie som právnik. Nižšie opisujem podmienky populárnych licencií a pravidlá a uvádzam odkazy na primárne zdroje, no svoju konkrétnu situáciu si overte podľa textu licencie a pri veľkom komerčnom produkte aj s právnikom. Rozhodnutie je na vás.
Je pravda, že ak je kód na GitHube, môžete ho používať zadarmo?
Hlavné posolstvo
Nie. To, že je kód dostupný na zobrazenie, neznamená, že ho smiete použiť vo svojej práci. Východiskovo je všetok kód chránený autorským právom a nesmiete ho používať, pokiaľ vám autor osobitne neudelil povolenie. Samotné zverejnenie na GitHube umožňuje ostatným iba prezerať si repozitár a vytvoriť jeho kópiu v rámci GitHubu. Právo začleniť tento kód do svojho produktu vyplýva z licencie, ktorú autor pripojil k repozitáru. GitHub vám ho sám neudeľuje.
Hlavnou pascou je tu slovo „otvorený“. Zdrojový kód vidíte, takže sa zdá, že keď nebol skrytý, smiete ho používať. Takáto úvaha je nesprávna. „Otvorený na čítanie“ a „licencovaný na používanie“ sú dve rozdielne veci.
Východiskovo je každé tvorivé dielo vrátane kódu chránené autorským právom od chvíle svojho vzniku. Kým autor výslovne neudelí povolenie, nesmiete ho používať. Takto to opisuje GitHub na svojej referenčnej stránke o licenciách.
Keď vytvoríte tvorivé dielo (a kód je tiež tvorivé dielo), východiskovo je chránené výlučným autorským právom. Ak nepripojíte licenciu, ktorá stanovuje inak, nikto iný nesmie vaše dielo kopírovať, distribuovať ani upravovať bez rizika nároku alebo súdneho sporu.
Druhou vrstvou je samotný GitHub. Ľudia si myslia, že keď zverejnením kódu súhlasili s pravidlami GitHubu, môžu odtiaľ používať aj kód iných ľudí. Pravidlá hovoria presný opak. Zverejnením repozitára autor ostatným povoľuje iba jeho zobrazenie a vytvorenie forku — teda kópie priamo v rámci GitHubu. To neoprávňuje na použitie kódu vo vašej vlastnej práci.
Zverejnením repozitára udeľujete ostatným používateľom nevýhradnú celosvetovú licenciu na používanie, zobrazovanie a reprodukovanie (vytvorením forku) vašich materiálov prostredníctvom služby v rámci funkcií GitHubu. Ďalšie práva môžete udeliť pripojením licencie.
Kľúčové slová sú v poslednej vete: „v rámci funkcií GitHubu“ a „ďalšie práva vyplývajú z licencie“. Fork zostáva na GitHube. Keď chcete použiť kód vo svojom produkte, a už vôbec ho predávať, potrebujete od autora samostatnú licenciu. Bez licencie nemáte právo — aj keď máte kód priamo pred očami.
Čo rozhoduje o tom, či môžete použiť cudzí kód?
Hlavné posolstvo
Je to licenčný súbor v repozitári, zvyčajne pomenovaný LICENSE alebo LICENSE.md. Ide o autorovo povolenie, ktoré určuje, čo s kódom smiete a nesmiete robiť. Licencia odpovedá na tri otázky: môžete kód použiť v komerčnom produkte, môžete ho upravovať a môžete ponechať svoj vlastný zdrojový kód uzavretý? Rôzne licencie odpovedajú rôzne, preto treba najprv skontrolovať tento súbor a až potom otvárať samotný kód.
Všetko závisí od jedného súboru. V riadne udržiavanom repozitári je licenčný súbor — zvyčajne LICENSE, niekedy LICENSE.md, prípadne sa licencia spomína priamo v README. Ide o autorovo povolenie, ktoré stanovuje podmienky používania kódu. GitHub zvyčajne zobrazuje názov licencie v bočnom paneli stránky repozitára ešte pred otvorením samotného súboru.
Aby ste sa nestratili v právnickom jazyku, je užitočné čítať licenciu cez tri otázky týkajúce sa vašej situácie:
- Môžete tento kód použiť v komerčnom produkte, za ktorý ľudia platia?
- Môžete kód upraviť podľa svojich potrieb?
- Musíte potom sprístupniť zdrojový kód svojho produktu, alebo ho môžete ponechať uzavretý?
Takmer všetky rozdiely medzi licenciami spočívajú v rôznych odpovediach na tretiu otázku. Na prvé dve populárne otvorené licencie najčastejšie odpovedajú „áno“: používajte ho, upravujte ho, predávajte ho. Ľudia však narážajú na to, či vás licencia prinúti sprístupniť vlastný kód. Ďalej si pomocou týchto troch otázok prejdeme hlavné typy licencií.
Ktoré licencie vám umožňujú používať kód a predávať produkt?
Hlavné posolstvo
Pre komerčný produkt sú najvýhodnejšie permisívne licencie: MIT, Apache 2.0 a BSD. Umožňujú takmer všetko: používať a upravovať kód, predávať produkt a ponechať svoj vlastný zdrojový kód uzavretý. Je tu jedna povinnosť: zachovať text licencie a uvedenie autorstva. Apache 2.0 navyše chráni pred patentovými nárokmi a vyžaduje označiť upravené súbory. Ak má cudzí kód jednu z týchto licencií, môžete ho bezpečne použiť v komerčnom produkte.
Začnime dobrou správou. Pre človeka, ktorý vytvára produkt na predaj, sú najlepšou voľbou permisívne licencie. Existuje ich viacero, no najbežnejšie sú tri: MIT, Apache 2.0 a BSD. Na prvé dve otázky odpovedajú všetky tri „áno“ a umožňujú vám ponechať vlastný zdrojový kód uzavretý.
Najbežnejšia a najjednoduchšia je MIT. Jej text sa zmestí do jedného odseku.
Týmto sa bezplatne udeľuje povolenie každej osobe, ktorá získa kópiu tohto softvéru, používať ho bez obmedzení vrátane práv používať, kopírovať, upravovať, spájať, publikovať, distribuovať, udeľovať sublicencie a predávať jeho kópie, za predpokladu, že oznámenie o autorských právach uvedené vyššie a toto oznámenie o povolení budú zahrnuté vo všetkých kópiách.
Jednoducho povedané, MIT vám umožňuje robiť s kódom takmer čokoľvek vrátane predaja produktu a ponechania vlastného zdrojového kódu uzavretého. Jedinou povinnosťou je zahrnúť text licencie a riadok s uvedením autorstva. Napríklad Babel, .NET a Rails sú vydané pod licenciou MIT, takže ste už takmer určite použili kód s touto licenciou.
Apache 2.0 funguje podobne, ale pridáva dva dôležité body. Po prvé, výslovnú ochranu pred patentovými nárokmi: autori kódu sľubujú, že vás nebudú žalovať za patenty na tento kód. Po druhé, niekoľko ďalších formálnych požiadaviek na používanie.
Dielo alebo odvodené diela môžete rozmnožovať a distribuovať v akomkoľvek médiu, s úpravami alebo bez nich, za predpokladu, že príjemcom poskytnete kópiu tejto licencie, označíte upravené súbory, zachováte oznámenia o autorských právach a patentoch a pripojíte čitateľnú kópiu súboru NOTICE, ak existuje.
BSD (vo verziách s 2 a 3 klauzulami) je v zásade podobná MIT: používajte ju, upravujte ju, predávajte ju a zachovajte oznámenie o autorských právach. Všetky tri licencie som zhrnul do tabuľky, aby ste rozdiel videli na prvý pohľad.
| Licencia | Predaj produktu | Ponechanie zdrojového kódu v uzavretej podobe | Čo musíte urobiť | Patentová ochrana |
|---|---|---|---|---|
| MIT | áno | áno | zachovať oznámenie o autorských právach a text licencie | bez ustanovenia |
| Apache 2.0 | áno | áno | oznámenie o autorských právach, súbor NOTICE, označenie úprav | áno |
| BSD (2 a 3 klauzuly) | áno | áno | zachovať oznámenie o autorských právach | nie |
Ako to uplatniť vo vlastnom prípade: ak na cudzom kóde vidíte MIT, Apache 2.0 alebo BSD, môžete byť pokojní: smiete ho použiť v komerčnom produkte, upravovať ho a ponechať svoj vlastný zdrojový kód uzavretý. Len nesmiete odstrániť licenčný súbor a uvedenie autorstva z prevzatej časti.
Ako sa uplatňujú povinnosti zdrojového kódu GPL a AGPL?
Hlavná myšlienka
GPL a AGPL povoľujú komerčné použitie. Povinnosti GPL vznikajú pri odovzdaní pokrytého diela; bežná serverová prevádzka bez odovzdania kópie nie je týmto spúšťačom. AGPLv3 pridáva ponuku zdrojov používateľom vzdialene komunikujúcim s upravenou verziou. Určte pokryté kombinované dielo: samostatné nezávislé komponenty doň automaticky všetky nepatria.
Copyleft pri príslušných podmienkach udržiava pokryté dielo a odvodeniny pod rovnakou licenciou. GPLv3 pri distribúcii zdrojových či objektových kópií pokrytého alebo kombinovaného odvodeného diela vyžaduje splnenie licencie a povinností zodpovedajúcich zdrojov. Automaticky nepokrýva každý nezávislý program produktu či servera.
Samotné hostovanie knižnice GPL na vlastnom serveri bez kópií používateľom nevyžaduje zverejnenie celej webovej služby. Distribúcia pokrytej kombinovanej aplikácie zákazníkom môže povinnosti spustiť; pred určením potrebných zdrojov posúďte integráciu a licenciu. Klient prehliadača dodávaný používateľom je samostatná distribučná otázka.
AGPLv3 pridáva sieťovú podmienku: ak program upravíte a používatelia s touto verziou komunikujú vzdialene, musí im výrazne ponúknuť svoj zodpovedajúci zdrojový kód. To je presnejšie než tvrdenie, že hostovanie ľubovoľného komponentu AGPL otvorí každú nezávislú časť služby.
Pri proprietárnom produkte preskúmajte pokryté dielo, spojenie komponentov, distribúciu kópií a sieťovú interakciu AGPL. Ak povinnosti neviete splniť, vyberte kompatibilnú permisívnu náhradu či získajte samostatné povolenie. Komerčné použitie je povolené; otázkou je súlad so skutočnou licenciou a integráciou.
Čo robiť, ak v repozitári vôbec nie je licenčný súbor?
Hlavné posolstvo
Ak chýba licenčný súbor, kód nesmiete používať. Neznamená to, že „je zadarmo“: naopak, bez licencie zostáva kód plne chránený autorským právom autora a nemáte právo ho používať, kopírovať ani upravovať. Povolenie na zobrazenie a vytvorenie forku v rámci GitHubu tu nepomáha — nedáva vám právo vložiť kód do svojho produktu. Ak kód naozaj potrebujete, jediným čistým riešením je napísať autorovi a požiadať o povolenie alebo počkať, kým licenciu pridá.
Častou chybou je predpokladať, že ak licencia chýba, neplatia žiadne obmedzenia a kód možno voľne používať. Je to naopak. Chýbajúca licencia neznamená povolenie; východiskovo znamená, že povolenie nemáte. Kód bez licencie zostáva plne chránený autorským právom autora a nesmiete sa ho dotknúť.
Opäť platí pravidlo, ktorým sme začali: kód je východiskovo chránený autorským právom a bez výslovného povolenia ho nesmiete kopírovať, upravovať ani distribuovať. Možnosť zobraziť ho a vytvoriť fork v rámci GitHubu túto prekážku neodstraňuje — nedáva vám právo používať kód vo vlastnom produkte.
Čo robiť v praxi, ak kód nemá licenciu, ale naozaj ho potrebujete:
- Napíšte autorovi. Priamo v sekcii diskusií repozitára alebo e-mailom sa opýtajte, či môžete kód používať a za akých podmienok. Niekedy autor len zabudol pridať licenciu a po požiadaní ju doplní.
- Nájdite náhradu. Takmer na každú úlohu existuje druhý, tretí aj desiaty podobný repozitár — medzi nimi nájdete taký, ktorý má riadnu licenciu MIT alebo Apache.
- Nepoužívajte ho. Ak nemáte povolenie a neexistuje náhrada, kód vám nepatrí a nemôžete ho vložiť do produktu, ktorý plánujete predávať. Pokušenie myslieť si „kto na to príde?“ sa zle skončí práve vtedy, keď produkt začne zarábať a priťahovať pozornosť.
Čo ak cudzí kód do projektu pridal priamo Claude?
Hlavné posolstvo
Ide o odlišný prípad a je dôležité nezamieňať si ho s priamym kopírovaním repozitára. Keď si sami vezmete kód z konkrétneho repozitára, musíte dodržiavať jeho licenciu. Keď Claude alebo iné AI vygeneruje kód ako odpoveď na vašu požiadavku, zvyčajne vytvorí vlastný text zostavený pre danú úlohu, nie kópiu cudzieho súboru, a otázka sa presúva k právam na vygenerovaný kód. Ak však AI zjavne reprodukovalo rozpoznateľnú časť cudzieho licencovaného kódu, podmienky licencie stále platia. Oplatí sa preveriť pôvod v oboch prípadoch.
Aj tu je druhá vrstva, ktorú si ľahko pomýlite s prvou. Niečo iné je navštíviť repozitár a skopírovať z neho súbor: vtedy sa na vás priamo vzťahuje všetko vyššie uvedené o licencii. Iné je, keď vám Claude napíše kód ako odpoveď na požiadavku.
V bežných prípadoch AI vytvorí vlastný text zostavený pre vašu úlohu, namiesto toho, aby skopírovalo cudzí súbor. Otázka sa potom presúva do inej oblasti: komu patrí vygenerovaný kód a môžete ho predávať? Je to rozsiahla samostatná téma, ktorej som sa venoval v článku o tom, komu patrí kód napísaný pomocou AI.
Treba však pamätať na jednu výnimku. Niekedy AI vytvorí rozpoznateľnú časť cudzieho kódu takmer slovo za slovom — celú funkciu zo známej knižnice. V takom prípade sa licencia knižnice stále uplatňuje bez ohľadu na to, kto fyzicky stlačil klávesy. Veľké hotové bloky, ktoré Claude prevzal celé, preto treba preveriť rovnako, ako keby ste ich skopírovali sami.
Ako skontrolovať licenciu pred použitím kódu: postup krok za krokom
Hlavné posolstvo
Postup je takýto: otvorte stránku repozitára a skontrolujte názov licencie v bočnom paneli, otvorte samotný súbor LICENSE, určte typ — permisívna licencia (MIT, Apache, BSD) alebo copyleft licencia (GPL, AGPL) — porovnajte ho so svojou situáciou a rozhodnite sa, či kód použijete alebo nájdete náhradu. Ak licencia úplne chýba, kód nepoužívajte. Celá kontrola trvá pár minút a mala by prebehnúť pred tým, než sa kód dostane do vášho projektu, nie až potom.
Zhrňme to do krátkeho kontrolného zoznamu na preverenie akéhokoľvek kódu tretích strán pred jeho začlenením do projektu. Postupujte zhora nadol.
Nájdite názov licencie na stránke repozitára
Otvorte repozitár na GitHube. Názov licencie býva viditeľný v pravom stĺpci alebo pod zoznamom súborov — napríklad „MIT License“, „Apache-2.0“ alebo „GPL-3.0“. Ak je prázdny a neexistuje licenčný súbor, už je to varovný signál; vráťte sa k tomu v poslednom kroku.
Otvorte samotný licenčný súbor
V zozname súborov nájdite LICENSE, LICENSE.md alebo COPYING a otvorte ho. Uistite sa, že názov zodpovedá tomu, ktorý je uvedený v bočnom paneli, a že sa licencia vzťahuje na kód, ktorý používate, nielen na samostatnú časť repozitára.
Určte typ: permisívna licencia alebo copyleft
MIT, Apache 2.0 a BSD sú permisívne licencie; kód môžete použiť v uzavretom komerčnom produkte. GPL a AGPL sú copyleft; pred určením zdrojových povinností overte pokryté dielo, distribúciu a sieťovú podmienku AGPL. Samotný názov neurčuje pokrytie nezávislých komponentov.
Porovnajte licenciu so svojou situáciou
Odpovedzte na tri otázky: predávate produkt, upravujete kód a chcete ponechať zdrojový kód uzavretý? MIT, Apache a BSD sú vhodné pre uzavretý produkt na predaj. Pri GPL a AGPL určte pokryté či kombinované dielo vyžadujúce zodpovedajúce zdroje a spúšťaciu podmienku; posúďte možnosť jej splnenia.
Bez licencie kód nepoužívajte
Ak chýba licenčný súbor a README nehovorí nič o povolení, kód nesmiete používať. Napíšte autorovi a požiadajte o povolenie alebo nájdite rovnocenný kód s riadnou licenciou. „Je verejne dostupný“ neznamená, že máte povolenie.
Táto kontrola sa zdá zdĺhavá až do chvíle, keď váš produkt prvýkrát vyrastie, začne zarábať a niekto sa opýta na kód tretích strán, ktorý obsahuje. Dve minúty na začiatku stoja menej než riešenie sporu neskôr. Samostatne opisujem, čo robiť s produktom potom, aby po uvedení na trh nezostal stáť: Vytvoril som produkt s AI; čo ďalej.
Často kladené otázky
Môžete predávať produkt, ktorý obsahuje cudzí kód z GitHubu?
Áno, ak má kód permisívnu licenciu — MIT, Apache 2.0 alebo BSD. Umožňujú vám používať kód v komerčnom produkte, predávať ho a ponechať svoj vlastný zdrojový kód uzavretý; vyžadujú iba zachovanie textu licencie a uvedenia autorstva. Aj GPL a AGPL povoľujú komerčné použitie, no zdrojové povinnosti závisia od pokrytého diela a distribúcie či príslušnej sieťovej podmienky AGPL. Bez licenčného súboru kód vôbec nesmiete používať.
Čo znamená, ak repozitár na GitHube nemá licenciu?
Znamená to, že kód nesmiete používať. Východiskovo platí, že bez licencie nemáte povolenie; neznamená to „zadarmo“. Kód zostáva plne chránený autorským právom autora. Možnosť zobraziť repozitár a vytvoriť jeho fork v rámci GitHubu vám nedáva právo používať kód vo svojom produkte. Ak kód potrebujete, napíšte autorovi a požiadajte o povolenie alebo nájdite rovnocenný kód s otvorenou licenciou.
Aký je rozdiel medzi MIT a GPL pre môj produkt?
MIT vám umožňuje kód používať a upravovať, predávať produkt a ponechať svoj vlastný zdrojový kód uzavretý — jedinou povinnosťou je zachovať text licencie. GPL tiež povoľuje komerčné použitie, no odovzdanie pokrytého kombinovaného či odvodeného diela vyžaduje zodpovedajúce zdroje a rovnakú licenciu. Samotné hostovanie bez odovzdania kópie je odlišné a samostatné nezávislé komponenty nie sú pokryté automaticky.
Musím niečo urobiť, ak používam kód pod licenciou MIT?
Áno, jednu drobnosť: zachovať text licencie MIT a riadok s uvedením autorstva z kódu, ktorý ste použili vo svojom projekte. Zvyčajne ide o ten istý súbor LICENSE, ktorý je pripojený k originálu. MIT nevyžaduje nič ďalšie — môžete kód upravovať, predávať produkt a ponechať zdrojový kód uzavretý.
Čo ak cudzí kód pridal priamo Claude, a nie ja?
Aj tak by ste mali skontrolovať jeho pôvod. AI zvyčajne vytvorí vlastný text pre vašu úlohu, takže otázka sa presúva k právam na vygenerovaný kód — to je samostatná téma. Ak však AI takmer slovo za slovom reprodukovalo rozpoznateľnú časť cudzieho kódu zo známej knižnice, licencia tejto knižnice stále platí. Veľké hotové bloky prevzaté celé kontrolujte rovnako, ako by ste kontrolovali vlastnú kópiu.
Zdroje
- choosealicense.com - referenčný projekt GitHubu na výber licencie
- choosealicense.com - čo znamená, keď chýba licencia
- Podmienky používania služby GitHub, časť D (Udelenie licencie ostatným používateľom)
- Licencia MIT (opensource.org)
- Licencia Apache 2.0 (apache.org)
- Všeobecná verejná licencia GNU, verzia 3.0 (gnu.org)
- Všeobecná verejná licencia GNU Affero, verzia 3.0 (gnu.org)
Viac podrobností
Otázky a odpovede: Kód z GitHubu v komerčnom produkte: licencie a čo skontrolovať
Núti hostovanie knižnice GPL zverejniť celú webovú službu?
Samotné hostovanie bez odovzdania kópií nie je distribučný spúšťač GPL. Pri distribúcii pokrytej kombinovanej či odvodenej aplikácie môžu povinnosti platiť pre toto dielo; nezávislé komponenty nie sú pokryté automaticky.
Akú dodatočnú podmienku pridáva AGPLv3 webovej službe?
Upravený program AGPL so vzdialenou sieťovou interakciou musí týmto používateľom ponúknuť zodpovedajúce zdroje. Posúďte pokrytý program a integráciu namiesto predpokladu žiadnych zdrojov alebo otvorenia každej nezávislej služby.