Open source licence – MIT, Apache, GPL a jak vybrat správnou
Srozumitelný přehled open source licencí – permisivní vs. copyleft, MIT, Apache 2.0, GPL, AGPL a MPL. Jak licenci použít a co hlídat u závislostí.
Kód bez licence není „volně k použití“. Podle autorského práva si autor ponechává všechna práva a ostatní ho bez svolení nesmějí legálně kopírovat, upravovat ani šířit – i když je veřejně na GitHubu. Licence je právě to svolení. Tento článek vysvětluje hlavní typy licencí a jak se mezi nimi rozhodnout. Nejde o právní radu; u komerčně důležitých rozhodnutí se poraďte s právníkem.
Dvě hlavní rodiny
Permisivní licence dovolují s kódem dělat téměř cokoli, včetně použití v uzavřeném komerčním softwaru. Požadují hlavně zachování copyrightu a textu licence.
Copyleft licence dovolují použití i úpravy, ale odvozená díla, která šíříte, musí být pod stejnou (kompatibilní) licencí a se zdrojovým kódem. Cílem je, aby software i jeho úpravy zůstaly svobodné.
Přehled nejpoužívanějších licencí
| Licence | Typ | Hlavní podmínky | Patentová doložka |
|---|---|---|---|
| MIT | permisivní | Zachovat copyright a text licence | Ne (výslovně) |
| BSD 2-Clause / 3-Clause | permisivní | Jako MIT; 3-Clause zakazuje použít jméno autora k propagaci | Ne |
| Apache 2.0 | permisivní | Zachovat licenci a NOTICE, označit změněné soubory | Ano |
| MPL 2.0 | slabý copyleft (na úrovni souborů) | Upravené soubory MPL musí zůstat otevřené | Ano |
| LGPL 3.0 | slabý copyleft (knihovny) | Úpravy knihovny otevřít; aplikace, která ji jen používá, může být uzavřená (za podmínek) | Ano |
| GPL 3.0 | silný copyleft | Při šíření celého odvozeného díla zdrojový kód pod GPL | Ano |
| AGPL 3.0 | silný copyleft + síť | Jako GPL, ale povinnost platí i při poskytování přes síť (SaaS) | Ano |
Klíčové rozdíly, které je dobré chápat
„Šíření“ a SaaS
Povinnosti GPL se spouštějí při šíření softwaru (předání binárky, prodej, stažení). Když GPL software jen provozujete na svém serveru jako webovou službu, nešíříte ho – zdrojový kód zveřejňovat nemusíte. Tuto „mezeru“ uzavírá AGPL: pokud uživatelé se softwarem komunikují přes síť, musíte jim nabídnout zdrojový kód včetně vašich úprav.
Patenty
Apache 2.0, MPL 2.0 a GPLv3 obsahují výslovné udělení patentové licence od přispěvatelů a ukončení licence tomu, kdo kvůli patentu žaluje. MIT a BSD to výslovně neřeší. U větších firemních projektů je to jeden z důvodů, proč volí Apache 2.0.
Kompatibilita
Licence nejdou kombinovat libovolně. Několik pravidel:
- Permisivní kód (MIT, BSD, Apache 2.0) lze obvykle začlenit do GPL projektu.
- Apache 2.0 je kompatibilní s GPLv3, ale ne s GPLv2 (podle Free Software Foundation).
- GPL kód nelze začlenit do projektu pod permisivní licencí a šířit ho jako celek pod MIT.
Jak vybrat licenci pro svůj projekt
| Chcete… | Zvolte |
|---|---|
| Maximální rozšíření, nic neřešit | MIT |
| Totéž, ale s patentovou ochranou (firemní prostředí) | Apache 2.0 |
| Aby úpravy vaší knihovny zůstaly otevřené, ale šla použít i v uzavřeném SW | MPL 2.0 nebo LGPL 3.0 |
| Aby všechna odvozená díla zůstala otevřená | GPL 3.0 |
| Totéž i pro SaaS provozovatele | AGPL 3.0 |
Pomocníkem je web choosealicense.com (provozuje GitHub), kde jsou licence porovnané srozumitelně.
Jak licenci správně použít
- Do kořene repozitáře přidejte soubor
LICENSEs plným textem licence (GitHub ho nabídne při vytváření repozitáře nebo přes Add file → Create new file → LICENSE → Choose a license template). - U MIT/BSD doplňte rok a jméno držitele práv.
- Uveďte licenci v metadatech balíčku pomocí SPDX identifikátoru:
// package.json
{ "license": "MIT" }
# pyproject.toml (PEP 639, novější nástroje)
[project]
license = "Apache-2.0"
- Volitelně hlavička v souborech:
// SPDX-License-Identifier: MIT.
Pokud do projektu přijímáte příspěvky, ujasněte si, pod jakou licencí je přispěvatelé poskytují. Běžné je pravidlo „inbound = outbound“ (příspěvek pod stejnou licencí jako projekt), případně DCO (git commit -s) nebo CLA.
Kontrola licencí závislostí
Vaše aplikace přebírá licenční povinnosti od všech závislostí. Zjištění, co používáte:
# Node.js
npx license-checker --summary
npx license-checker --onlyAllow "MIT;ISC;BSD-2-Clause;BSD-3-Clause;Apache-2.0"
# Python
pip install pip-licenses
pip-licenses --format=markdown
Na co dát pozor v komerčním (uzavřeném) produktu:
- GPL a AGPL v závislostech – ověřte, zda a jak vás zavazují.
- Balíčky bez licence (
UNKNOWN,UNLICENSED) – formálně je nesmíte použít. - „Source-available“ licence (BSL, SSPL, Elastic License, Commons Clause) – nejsou open source ve smyslu OSI a obvykle omezují komerční provoz nebo konkurenční služby.
A co kód od AI?
Kód vygenerovaný AI může náhodně připomínat existující kód z veřejných repozitářů. U krátkých obecných úryvků je to běžné a nevýznamné. U delších, specifických bloků (celé algoritmy, neobvyklé funkce) je rozumné ověřit původ, obzvlášť pokud je produkt uzavřený a kód by mohl pocházet z GPL projektu. Licenční podmínky samotných AI nástrojů ohledně vlastnictví výstupu se liší, přečtěte si je u služby, kterou používáte.