Licence třetích stran v aplikaci: seznam a zobrazení
Licence třetích stran jsou licence knihoven, které vaše aplikace používá. Ukážeme si, jak seznam vytvořit a udržovat.
Shrnutí a kontext
Licence třetích stran jsou licence knihoven, frameworků, písem a dalších komponent, které vaše aplikace používá a nenapsali jste je vy. Permisivní licence, třeba MIT a Apache 2.0, vyžadují zachovat upozornění na autorská práva a text licence, takže potřebujete seznam komponent s licencemi a místo, kde ho uživatel najde. Níže najdete postup, jak seznam sestavit z projektového souboru, co o každé komponentě zapsat a kde ho zobrazit.
1. Co vyžadují licence třetích stran
Licence třetí strany určuje, za jakých podmínek smíte cizí komponentu ve své aplikaci použít a šířit. Podmínky se liší podle typu licence, takže seznam komponent s licencemi je základ pro dodržení podmínek open source licencí (open source license compliance).
Rozdíly mezi MIT, Apache 2.0 a GPL podrobně popisuje článek o open source licencích. Pro seznam komponent stačí vědět, do kterého řádku tabulky licence spadá.
| Typ licence | Co vyžaduje při šíření aplikace | Příklady |
|---|---|---|
| Permisivní | Zachovat upozornění na autorská práva a text licence; Apache 2.0 navíc označit změněné soubory a předat obsah souboru NOTICE | MIT, BSD, ISC, Apache 2.0 |
| Slabý copyleft | Zveřejnit úpravy dané knihovny; zbytek aplikace smí zůstat uzavřený | LGPL, MPL 2.0 |
| Silný copyleft | Předat zdrojový kód celého odvozeného díla pod stejnou licencí | GPL, AGPL |
2. Jak sestavit seznam knihoven s licencemi
Seznam knihoven s licencemi sestavíte z projektového souboru, který vypisuje závislosti aplikace, například `package.json`, `pom.xml` nebo `Cargo.toml`. Ručně opisovat licence z repozitářů jednotlivých knihoven není potřeba.
- 1
Vložte projektový soubor do nástroje
Otevřete kontrolu licencí npm a vložte nebo nahrajte `package.json`. Stejný postup nabízejí nástroje pro NuGet, Python, Composer, Rust, Go, Flutter, CocoaPods, Swift, Java a Android, všechny najdete mezi nástroji zdarma. Soubor se zpracuje přímo ve vašem prohlížeči.
- 2
Přidejte soubor s přesnými verzemi
Z `package.json` se načtou přímé závislosti a jejich rozsahy verzí. Pokud k tomu nahrajete také soubor s uzamčenými verzemi, třeba `package-lock.json`, bude seznam obsahovat konkrétní verze, které opravdu instalujete.
- 3
Rozhodněte o vývojových závislostech
Vývojové závislosti jsou ve výchozím stavu vynechané. Zaškrtněte je jen tehdy, když jejich kód patří do aplikace, kterou uživatelům dodáváte.
- 4
Projděte souhrn licencí a upozornění
Nástroj spočítá závislosti, rozdělí licence na permisivní, copyleftové a neznámé a upozorní na balíčky k prověření. Začněte u neznámých a copyleftových licencí (sekce 6).
- 5
Exportujte výsledek
Seznam si můžete stáhnout ve formátu CSV, Markdown nebo CycloneDX. Markdown soubor `THIRD-PARTY-LICENSES.md` slouží k uložení do repozitáře zdrojového kódu.
3. Co o každé komponentě zapsat
U každé komponenty zapište název, verzi, licenci, odkaz a kategorii. Licenci uvádějte identifikátorem ze seznamu SPDX, například `MIT`, `Apache-2.0` nebo `GPL-3.0-or-later`, protože ten jde jednoznačně porovnat i strojově.
| Pole | Co uvést | Příklad |
|---|---|---|
| Název | Název balíčku nebo knihovny | react |
| Verze | Verze, kterou aplikace opravdu obsahuje | 18.3.1 |
| Licence | Identifikátor licence, případně vlastní text | MIT |
| Odkaz | Repozitář nebo stránka balíčku | github.com/facebook/react |
| Kategorie | Framework, knihovna, písmo, ikony a podobně | Framework |
| Popis | Nepovinná poznámka, k čemu komponenta v aplikaci slouží | Uživatelské rozhraní |
4. Kde zobrazit licence třetích stran
Licence třetích stran zobrazte tam, kam má uživatel i podpora snadný přístup: v samotné aplikaci a na veřejné stránce o aplikaci. Soubor v repozitáři nestačí, protože k němu zákazník ani podpora běžně nemají přístup. Jak má vypadat obrazovka s licencemi v aplikaci, to popisuje článek o obrazovce O aplikaci.
V AboutTheApp seznam komponent udržujete v okně Komponenty a licence, které otevřete ikonou Komponenty na kartě aplikace. Tlačítko Import závislostí načte závislosti z projektového souboru a ukáže, které komponenty jsou nové, změněné a beze změny. Uložíte si jen ty, které chcete. Komponentu pak můžete doplnit nebo upravit ručně, včetně její kategorie a popisu.
Každá komponenta může být veřejná nebo neveřejná. Veřejné komponenty zobrazí About page v záložce Komponenty a licence i nepřihlášeným uživatelům. Přímo uvnitř aplikace je ukáže About box ve variantě Autoři a licence. Neveřejné komponenty uvidí jen členové týmu nebo ten, kdo zná odemykací kód.
5. Jak seznam licencí udržet aktuální
Seznam licencí zastará s každou novou závislostí nebo aktualizací knihovny. Po změně projektového souboru proto spusťte Import závislostí znovu: komponenty se stavem Změněná mají jinou verzi nebo licenci než dosud zapsaná, takže vidíte i to, že se licence knihovny změnila.
Pokud aplikaci vytváříte s AI asistentem, zapište si do zadání pravidlo, že asistent nepřidává knihovny bez vašeho souhlasu a kontroly licence. Kde pravidlo uvést, to ukazuje šablona PRD a obecný postup článek o aplikacích postavených s AI. Seznam komponent ve strojově čitelné podobě pro bezpečnostní a licenční nástroje vytvoříte v generátoru SBOM.
6. Na které licence si dát pozor
Největší pozornost vyžadují tři případy: copyleftová licence v uzavřené aplikaci, neznámá licence a komponenta bez licence. U GPL a AGPL musíte při šíření aplikace předat zdrojový kód odvozeného díla, takže ověřte, jestli komponenta opravdu patří do dodávané aplikace.
Neznámá licence znamená, že ji nástroj v registru nenašel nebo ji nedokázal rozpoznat. Otevřete repozitář komponenty a licenci dohledejte v souboru `LICENSE`. Komponenta bez licence smí podle dokumentace GitHubu kopírovat a šířit jen autor, takže se jí vyhněte, dokud autor licenci nedoplní.
Článek slouží pro základní orientaci. Pokud licence ovlivňuje váš obchodní model nebo smlouvy se zákazníky, poraďte se s právníkem.
Časté otázky
Co jsou licence třetích stran?
Jsou to licence knihoven, frameworků, písem a dalších komponent, které aplikace používá a které nevytvořil její autor. Každá licence určuje, za jakých podmínek smíte komponentu použít a šířit.
Musím licence knihoven zobrazit v aplikaci?
Permisivní licence jako MIT a Apache 2.0 vyžadují zachovat upozornění na autorská práva a text licence ve všech kopiích. U distribuované aplikace se to obvykle řeší obrazovkou s licencemi nebo přiloženým souborem. Přesný požadavek určuje text konkrétní licence.
Jak zjistím licence npm závislostí?
Vložte package.json do nástroje na kontrolu licencí npm. Nástroj načte licence z registru, rozdělí je na permisivní, copyleftové a neznámé a výsledek umožní exportovat do CSV, Markdownu nebo CycloneDX.
Co znamená, že má balíček neznámou licenci?
Nástroj licenci v registru nenašel nebo ji nerozpoznal. Otevřete repozitář balíčku a zkontrolujte soubor LICENSE. Dokud licenci neznáte, nevíte, za jakých podmínek smíte balíček šířit.
Patří do seznamu licencí i vývojové závislosti?
Jen pokud jejich kód končí v aplikaci, kterou dodáváte uživatelům. Nástroje na testování nebo sestavení se do ní obvykle nedostanou, proto jsou vývojové závislosti ve výchozím stavu vynechané.
Jaký je rozdíl mezi seznamem licencí a SBOM?
Seznam licencí je přehled pro lidi: komponenta, verze, licence a odkaz. SBOM je strojově čitelný soubor, například ve formátu CycloneDX, který navíc nese identifikátory komponent a zpracovávají ho bezpečnostní a licenční nástroje.
Jak zobrazím licence třetích stran v AboutTheApp?
V okně Komponenty a licence u aplikace naimportujte závislosti z projektového souboru. Veřejné komponenty se zobrazí na About page v záložce Komponenty a licence a v About boxu ve variantě Autoři a licence.
Ve zkratce
Seznam licencí třetích stran sestavíte z projektového souboru, uložíte ho k aplikaci a zobrazíte tam, kde ho uživatel i podpora najdou. Při každé nové knihovně ho aktualizujte.
Chcete mít licence komponent u aplikace?
Založte si zdarma aplikaci v AboutTheApp, naimportujte její závislosti a zobrazte licence na About page i v aplikaci.