Závislosti
Soulad s open source licencemi
Open source můžete používat zdarma, ale ne bez podmínek. Každý balíček má licenci a soulad s open source licencemi znamená vědět, jaké licence ve vašem produktu jsou, a plnit to, co od vás požadují. Většina těchto licencí se do produktu dostane přes závislosti, které nikdo z vašeho týmu nevybral.
Aktualizováno
Tato stránka má obecně informativní povahu a nepředstavuje právní poradenství. O rozhodnutích týkajících se konkrétního produktu se poraďte s právníkem.
Typy open source licencí
| Typ | Příklady | Co obvykle požaduje |
|---|---|---|
| Permisivní | MIT, BSD, Apache-2.0 | Zachovat upozornění na autorská práva a licenci. Apache-2.0 obsahuje i patentová ustanovení. |
| Slabý copyleft | LGPL, MPL-2.0 | Sdílet změny samotné licencované komponenty |
| Silný copyleft | GPL-2.0, GPL-3.0 | Software šířený spolu s ní musí být nabízen za stejných podmínek, včetně zdrojového kódu |
| Síťový copyleft | AGPL-3.0 | Jako silný copyleft a platí i tehdy, když uživatelé se softwarem pracují přes síť |
| Source-available | BUSL, SSPL | Nejde o open source: zdrojový kód je viditelný, ale jeho použití je omezené |
Co je copyleftová licence?
Copyleftová licence vám dovoluje software používat, měnit a sdílet pod podmínkou, že to, co šíříte, zůstane pod stejnými podmínkami. Udržuje tak open source otevřený. Rizikem pro komerční produkt je, že komponenta se silným copyleftem, slinkovaná s vaším kódem, může vyvolat otázku, zda musíte uvolnit i vlastní kód.
Zda to platí, záleží na tom, jak se komponenta používá a jak se produkt dodává. Software, který šíříte zákazníkům, je vystaven víc než interní nástroj a produkt SaaS se podmínkám GPL pro šíření obvykle vyhne, podmínkám AGPL však ne.
Běžná rizika nesouladu
- Tranzitivní licence. Permisivní balíček může záviset na copyleftovém. Kontrola jen přímých závislostí to přehlédne.
- Chybějící upozornění. Většina licencí požaduje zachovat uvedení autorství a zapomenutý soubor s upozorněními je nejčastějším selháním.
- Změněné licence. Projekt může v nové verzi změnit licenci, takže upgrade může změnit vaše podmínky.
- Deklarovaná vs. skutečná. Metadata balíčku mohou být chybná nebo neúplná a převzatý (vendored) kód může mít vlastní licenci.
- Due diligence. Kupující a velcí zákazníci žádají inventář licencí, obvykle v krátké lhůtě.
Jak dodržet licenční podmínky
- Sepište politiku. Rozhodněte, které licence jsou povolené, které vyžadují posouzení a které jsou zakázané, podle typu produktu.
- Vytvořte inventář. SBOM uvádí každou komponentu s její licencí, včetně tranzitivních závislostí.
- Kontrolujte automaticky. Vynucujte politiku v CI, aby nová závislost neprošla už ve chvíli, kdy je přidána, a ne až při auditu.
- Plňte povinnosti. Generujte soubory s upozorněními a poskytujte zdrojový kód tam, kde to licence vyžaduje.
- Uchovávejte záznamy. Ukládejte inventář pro každé vydání, protože otázka se obvykle týká verze, kterou jste už dodali.
Co dělá software pro soulad s licencemi
Soulad s licencemi je standardní součástí analýzy softwarového složení. Nástroje identifikují komponenty, hlásí jejich licence a upozorňují na porušení vaší politiky. Liší se hloubkou:
- Deklarované licence: většina nástrojů čte, co každý balíček deklaruje ve svých metadatech. Je to rychlé a pokrývá to běžný případ.
- Hloubkové skenování licencí: FOSSA a Black Duck analyzují i text licencí v kódu a pomáhají s reporty o uvedení autorství a s právním posouzením. Viz CRACI vs FOSSA a CRACI vs Black Duck.
- Bezplatné nástroje: mnoho generátorů SBOM a skenerů SCA hlásí deklarované licence zdarma. Viz nejlepší nástroje SCA.
Kde má své místo CRACI
CRACI řeší deklarované licence přímo v buildu. Jako váš runner pro GitHub Actions zaznamenává každý balíček, který job stáhne, a každý z nich nese svou deklarovanou licenci, takže copyleftové licence zachytíte dřív, než skončí v produktu. Pravidla licenční politiky mohou build kvůli licenci zablokovat a exporty SBOM ve formátech CycloneDX a SPDX obsahují deklarovanou licenci každé komponenty. CRACI vychází z toho, co balíčky deklarují, takže pokud potřebujete workflow pro právní posouzení nebo analýzu textu licencí, použijte vedle něj specializovaný nástroj.
Soulad s open source licencemi: časté dotazy
Co je soulad s open source licencemi?
Znamená to vědět, které open source licence se vztahují na software, který používáte, a plnit jejich podmínky, například zachovat upozornění nebo sdílet zdrojový kód.
Co je copyleftová licence?
Licence, která vám dovoluje software používat a měnit pod podmínkou, že to, co šíříte, zůstane pod stejnými podmínkami. Nejznámějším příkladem je GPL.
Lze kód pod GPL použít v komerčním softwaru?
Ano, ale pokud šíříte software, který jej obsahuje, možná budete muset nabídnout zdrojový kód tohoto softwaru pod GPL. Záleží na tom, jak je kód zkombinován, proto si pro svůj případ vyžádejte právní radu.
Vztahuje se copyleft na SaaS?
Podmínky GPL se obecně uplatní při šíření, kterému se SaaS obvykle vyhne. AGPL tuto mezeru uzavírá tím, že podmínky rozšiřuje na uživatele, kteří se softwarem pracují přes síť.
Jaká open source licence je pro komerční použití nejbezpečnější?
Nejméně požadují permisivní licence jako MIT, BSD a Apache-2.0. Jejich upozornění však i tak musíte zachovat.
Jak zkontrolovat licence svých závislostí?
Vygenerujte SBOM, který zahrnuje tranzitivní závislosti a deklarované licence, nebo použijte nástroj SCA. Vynucujte svou politiku v CI, aby nová porušení zastavila build.
Zachyťte copyleft dřív, než se dostane do produktu
Zobrazte si deklarovanou licenci každého balíčku, který job v GitHub Actions stáhl, a zablokujte build podle své politiky.
Rezervujte si demo