Často kladené dotazy

Čtete neoficiální překlad originální stránky.

Na této stránce jsou uvedeny běžné otázky a odpovědi na ně, které se týkají licencí a autorských práv, a konkrétně přijetí REUSE. Vezměte prosím na vědomí, že nic z toho není právním poradenstvím.

Obecné

Mám málo času. Můžete mi poskytnout co nejrychlejší shrnutí?

Chceme zlepšit způsob licencování softwarových projektů tak, aby bylo jednoduché, komplexní, jednoznačné a strojově čitelné. Navrhujeme tři kroky, jak toho dosáhnout:

1. Výběr a poskytnutí licencí

Vyberte si pro svůj projekt licenci Free Software. V seznamu Seznam licencí SPDX vyhledejte identifikátor licence SPDX. Stáhněte si text licence pro svou licenci z úložiště license-list-data a vložte jej do adresáře LICENSES/.

2. Do každého souboru přidejte informace o autorských právech a licencích

Poté upravte záhlaví všech souborů tak, aby obsahovalo následující údaje:

# SPDX-FileCopyrightText: [rok] [držitel autorských práv] <[email address]>
#
# SPDX-License-Identifier: [identifier]

3. Potvrďte soulad s pravidly REUSE

Pomocí nástroje REUSE tool můžete některé z těchto kroků automatizovat a zkontrolovat, zda jste vše provedli správně.

Co je SPDX?

SPDX znamená Software Package Data Exchange. Jedná se o projekt nadace Linux Foundation, na němž je postaven systém REUSE. SPDX definuje standardizovaný způsob sdílení informací o autorských právech a licencích mezi projekty a lidmi. Pro REUSE je nejdůležitější, že SPDX spravuje SPDX License List, který definuje standardizované identifikátory pro mnoho licencí.

Autorská práva

Autorské právo je právní konstrukce, která někomu uděluje výhradní práva k tvůrčímu dílu. Nejdůležitější výhradní právo je obsaženo v názvu: právo na výrobu kopií. Pouze držitel autorských práv smí poskytovat lidem nové kopie svého díla. Pro získání autorských práv nemusíte nic dělat. Jakmile vytvoříte tvůrčí dílo, okamžitě na něj získáte autorská práva.

Obvykle je držitelem autorských práv autor, ale často jsou autorská práva převedena na autorova zaměstnavatele.

Creative Commons poskytuje lepší a delší odpověď ve svých často kladených otázkách.

Pokud chcete, aby ostatní mohli váš kód volně používat, studovat a sdílet, musíte jej uvolnit pod licencí.

Obecně doporučujeme používat SPDX-FileCopyrightText: [rok] [copyright držitel] <[kontaktní adresa]>. Můžete se rozhodnout vypustit položky kromě autorských práv držitele autorských práv, které musí být uvedeny vždy. Doporučujeme uvést všechny položky.

Specifikace obsahuje oddíl o přesném formátu oznámení o autorských právech. Viz the specification a the next question.

Ve specifikaci jsou uvedena následující platná oznámení o autorských právech:

SPDX-FileCopyrightText: 2019 Jane Doe <jane@example.com>
SPDX-FileCopyrightText: © 2019 John Doe <john@example.com>
SPDX-FileCopyrightText: Přispěvatelé do příkladového projektu <https://project.example.com>
SPDX-FileCopyrightText: 2023 Alice Hack a (další) přispěvatelé do projektu X <https://git.example.com/alicehack/projectx/CONTRIBUTORS.md>
SPDX-SnippetCopyrightText: (C) Příkladové družstvo <info@coop.example.com>
© Example Corporation <https://corp.example.com>
Copyright 2016, 2018-2019 Joe Anybody
Copyright (c) Alice, některá práva vyhrazena

Z těchto lze vřele doporučit první dva. Ostatní existují především proto, aby byly kompatibilní se stávajícími konvencemi.

Obecně si můžete vybrat ze čtyř možností:

  1. Rok prvního zveřejnění.
  2. Rok posledního zveřejnění.
  3. Všechny roky zveřejnění, buď jako rozsah (např. 2017-2019), nebo jako samostatné položky (např. 2017, 2018, 2019).
  4. Neuvádějte žádný rok.

Záleží jen na vás, kterou možnost si vyberete. Tento článek je dobrým argumentem pro použití roku prvního zveřejnění souboru.

Na které soubory se vztahují autorská práva?

Všechny soubory, které jsou původními autorskými díly, podléhají autorským právům. V podstatě, pokud někdo sedí a píše na klávesnici své vlastní originální myšlenky, pak má autorská práva k výstupu. Běžnými příklady jsou zdrojové kódy, dokumentace, zvukové záznamy a video.

Existují však některé okrajové případy. Například program print(„Ahoj, REUSE!“) pravděpodobně nesplňuje hranici originality. Podobně tuto hranici nemusí splňovat ani datové a konfigurační soubory. Ohledně těchto souborů viz tato otázka.

V těchto zdrojích rozlišujeme mezi držitelem autorských práv a autorem. Autor (také známý jako tvůrce) je osoba, která se posadila a vytvořila dílo. Představte si autora jako programátora, spisovatele nebo umělce.

Držitelem autorských práv je osoba, která má k danému dílu výhradní práva. Často je autor a držitel autorských práv jedna a tatáž osoba. Pokud je však autor za vytvoření díla placen svým zaměstnavatelem, je často držitelem autorských práv zaměstnavatel.

Mějte na paměti, že v některých jurisdikcích se slovo “autor” často používá jako synonymum pro “držitele autorských práv”. V jiných jurisdikcích si autoři zachovávají určitá práva ke svému dílu, i když nejsou držiteli autorských práv.

Základní otázka zní: V jakém okamžiku se mám považovat za držitele autorských práv k souboru? To záleží na vašem uvážení. Možná pomůže být důsledný a přidávat značku ke každému souboru, kterého se dotknete, ale možná je cennější dosáhnout v této otázce konsenzu v rámci vašeho projektu.

Licencování

Co je to licence?

Jedním z problémů autorských práv v souvislosti se softwarem je, že ve výchozím nastavení činí software nesdíleným. Licence to mění. Licence definuje podmínky, za kterých držitel autorských práv povoluje příjemci licence software používat.

Pokud licence umožňuje příjemci používat, studovat, sdílet a vylepšovat software, pak se jedná o svobodný software.

Co je to copyleftová licence? Permisivní licence?

Existují dvě široké kategorie licencí svobodného softwaru: copyleft a permisivní licence.

Licence copyleft vám dává právo používat, studovat, sdílet a vylepšovat software pod jednou přísnou podmínkou. Pokud v programu provedete jakékoli změny a sdílíte svou verzi programu s někým jiným, musíte své změny sdílet pod stejnou licencí jako originál. Známou licencí copyleft je GNU General Public License verze 3.

Permisivní licence vám dává stejná práva svobodného softwaru, ale neobsahuje tuto podmínku. Je možné, že někdo vezme software s permisivní licencí, provede v něm změny a změněnou verzi si ponechá jako proprietární. Známou permisivní licencí je Apache License, verze 2.

Jakou licenci si mám vybrat?

Vždy si vyberte licenci svobodného softwaru, tj. licenci, která příjemci poskytuje svobodu software používat, studovat, sdílet a vylepšovat. Kromě toho je volba licence na vás. Pokud přispíváte do existujícího projektu, měli byste své změny uvolnit pod stejnou licencí jako projekt. Jinak mají Free Software Foundation, choosealicense.com a joinup.eu několik dobrých doporučení. Všimněte si, že každý z těchto zdrojů klade důraz na jinou hodnotu a přichází s vlastními předsudky.

Pokud si ceníte svobody, měli byste především zvolit licenci, která váš software zachová jako Svobodný Software.

Jaké jsou licenční výjimky a co s nimi mám dělat?

Licenční výjimky jsou dodatky nebo změny licence, které často umožňují určité použití kódu, které by podle původní licence nebylo povoleno. Často se používá u překladačů, kde se část kódu překladače může dostat do výsledné binární verze. Výjimka se může vzdát práv na části kódu, které skončí v binárních souborech.

S výjimkami se zachází téměř stejně jako s licencemi. Chcete-li zkombinovat licenci s výjimkou, označte soubor následující značkou: SPDX-Licence-Identifier: GPL-3.0-or-later WITH GCC-exception-3.1.

Seznam běžných výjimek najdete na adrese SPDX License Exceptions.

Jak funguje kompatibilita licencí?

Licence svobodného softwaru se často liší v detailech, ale vždy vám dávají právo software používat, studovat, sdílet a vylepšovat. Mnoho licencí je kompatibilních, což znamená, že v jednom projektu můžete používat kód z více licencí a přitom současně dodržovat podmínky každé z nich.

Některé licence jsou méně permisivní než jiné, což znamená, že kombinované dílo obsahující kód pod oběma licencemi musí fakticky respektovat podmínky nejméně permisivní licence.

Některé licence mají vzájemně se vylučující požadavky. Například licence CC-BY-NC-4.0 má klauzuli, která zakazuje použití díla ke komerčním účelům, a licence GPL-3.0-or-later má klauzuli, která říká, že nesmíte ukládat další omezení, která nejsou v licenci GPL. Protože licence GPL nemá žádnou klauzuli týkající se komerčních účelů, nelze tyto dvě licence respektovat současně a jsou považovány za neslučitelné.

Otázka, které licence jsou přesně kompatibilní, je obtížná a závisí také na tom, co chcete. Integrace díla, které je licencováno jinak, může znamenat nutnost respektovat licenční podmínky, které nechcete respektovat.

Pokud jde konkrétně o licenci GNU GPL, mohou vám při řešení kompatibility pomoci tento článek o GNU a seznam licencí GNU.

Je důležité si uvědomit, že funkce REUSE nepomáhá řešit kompatibilitu licencí. Cílem systému REUSE je pomoci vám komplexně deklarovat vaše licenční metadata, nikoli kontrolovat, zda jsou tato metadata správná nebo platná. K tomu potřebujete jiné nástroje a postupy.

Kam jinam mohu vložit údaje o své licenci?

Označení všech jednotlivých souborů značkami SPDX-License-Identifier přispívá k jednoznačnému sdělení licenčních informací vašeho projektu, ale pomáhá také sdělit licenční informace v přirozeném jazyce. V README svého projektu můžete uvést shrnutí licenčních informací nebo jednoduše přesměrovat čtenáře do adresáře LICENSES/.

Kromě toho mnoho hostingových webů očekává, že uvedete licenční informace o svém balíčku. Například soubor pyproject.toml nástroje REUSE deklaruje všechny licence, které používá, ve formátu očekávaném balíčkovací infrastrukturou Pythonu.

Mám pouze jeden licenční soubor. Mám ještě vytvořit adresář LICENSES?

Ano. Může se to zdát zbytečné, ale zabrání to budoucím zmatkům, až bude přijat kód s jinou licencí. Díky tomu, že jsou všechny licence uloženy v jediném adresáři, může uživatel vašeho programu snadno mrknutím oka najít všechny licence, které musí dodržovat.

Kromě toho si však můžete ponechat soubor LICENSE/COPYING, pokud chcete. Viz tato otázka.

Mám do licenčních souborů vkládat hlavičky s komentáři?

Licenční soubory byste neměli upravovat. Viz tato otázka.

Mám upravit své licenční soubory?

Licenční soubory byste nikdy neměli upravovat. Pokud používáte existující licenci, měli byste ji vždy doslovně zkopírovat.

Některé licence, jako například licence MIT a rodina licencí BSD, obsahují řádek “Copyright (c) [rok] [držitel autorských práv]”. O tom, jak s těmito licencemi zacházet, se dočtete v této otázce.

Existuje mnoho důvodů, proč byste neměli měnit texty licencí, ale pokud je měníte, měli byste pro tuto licenci použít jiný identifikátor SPDX. Viz tato otázka.

Pokud zjistíte, že některé informace jsou nesprávné, můžete je upravit. V opačném případě je obvykle dobré ponechat oznámení o autorských právech a prohlášení o vyloučení licence nedotčená. Neexistuje však žádná univerzální odpověď.

Mohu z minifikovaného kódu (např. JavaScriptu) odstranit informace o licenci a autorských právech?

Můžete, ale pravděpodobně byste neměli. Mnoho minifierů má možnost, která umožňuje zachovat komentář v záhlaví. Pokud je tato možnost k dispozici, měli byste ji použít, zejména pokud používáte licenci, která nařizuje zahrnout zřeknutí se licence.

Musím do svého repozitáře zahrnout jak GPL-3.0-or-later, tak GPL-3.0-only?

Členové rodiny GPL jsou v seznamu licencí SPDX uvedeni zvlášť jako -only a -or-later, i když texty licencí jsou totožné. Pokud máte kód pouze pod jednou z těchto licencí, doporučujeme uvést pouze tuto licenci.

Pokud máte kód pod licencí -only i pod licencí -or-later, doporučujeme uvést obě licence zvlášť.

Pokud používám výhradně licenci LGPL-3.0 nebo pozdější, měl bych do ní zahrnout také text GPL-3.0 nebo pozdější?

Text licence LGPL je dodatkem k textu licence GPL. Pokud poskytnete navazujícím uživatelům pouze text licence LGPL, neposkytnete jim ve skutečnosti úplnou licenci. Z tohoto důvodu byste měli v adresáři LICENSES/ poskytnout také licenci GPL-3.0 nebo pozdější. Linter REUSE si může stěžovat, že žádný z vašich souborů nepoužívá licenci GPL-3.0-or-later. To vyřešíte tak, že vyberete jeden soubor, který bude licencován pod LGPL-3.0-or-later OR GPL-3.0-or-later.

Pomáhá mi REUSE s licencemi mých závislostí?

Ne, to je mimo oblast působnosti programu REUSE. Pokud potřebujete zkontrolovat, zda váš projekt respektuje licence všech svých závislostí, nebo zda jste nechtěně nezapojili závislost s nežádoucí licencí, potřebujete jiné nástroje a postupy. Pomoci vám mohou některé nástroje uvedené na stránce porovnání.

Jak mohu …

… nainstalovat nástroj REUSE?

Pokyny k instalaci a doprovodnou dokumentaci k nástroji naleznete na adrese https://reuse.readthedocs.io/en/stable/readme.html#install. Stručně řečeno:

$ pipx install reuse
$ pipx ensurepath
$ reuse --help

… vytvořit softwarovou soupisku

Nainstalujte nástroj pro opakované použití a spusťte reuse spdx -o reuse.spdx v kořenovém adresáři projektu pro vytvoření dokumentu SPDX.

… přidat informace o autorských právech a licencích do souboru, který nelze komentovat?

Binární soubory, jako jsou obrázky nebo videa, nebo některé textové soubory, například JSON, nelze komentovat záhlavím REUSE, ale přesto by měly obsahovat informace o autorských právech a licencích.

Existují dva způsoby přiřazení informací k takovému souboru:

  1. Přidejte vedle něj soubor s příponou .license (např. cat.jpg.license pro soubor s názvem cat.jpg) a zapište do něj hlavičku komentáře. Obsah původního souboru bude následně ignorován, což se může v některých případech hodit.
  2. Soubor licencujte pomocí REUSE.toml, konfiguračního souboru REUSE.

… hromadné licencování celých adresářů?

Pokud je to možné, měli byste ke každému souboru přidat záhlaví REUSE. V některých případech je však nežádoucí nebo nemožné přidat záhlaví REUSE ke každému souboru v adresáři. Například:

  • Soubory nesmíte upravovat (protože se jedná o testovací soubory nebo pocházejí od třetí strany).
  • Přidání souborů .license by narušilo systém sestavování, zejména v případě obrázků a videa.

Soubory můžete licencovat globálně pomocí souboru REUSE.toml, který je obvykle umístěn v kořenovém adresáři projektu, ale může být umístěn kdekoli vzhledem k souborům. Příklad souboru je uveden níže:

verze = 1

# Jednoduchý glob všech souborů v resources/img/
[[annotations]]
path = "resources/img/*"
SPDX-FileCopyrightText = "2024 Jane Doe <jane@example.com>"
SPDX-License-Identifier = "CC0-1.0"

# Všechny soubory v resources/vid/ s více držiteli autorských práv
[[annotations]]
path = "resources/vid/*"
SPDX-FileCopyrightText = [
    "2024 Jane Doe <jane@example.com>",
    "2024 John Doe <john@example.com>"
]
SPDX-License-Identifier = "CC-BY-4.0"

# Rekurzivní glob všech souborů a adresářů v adresáři tests/resources/,
# a informace o REUSE těchto souborů jsou přepsány.
[[annotations]]
path = "tests/resources/**"
precedence = "override"
SPDX-FileCopyrightText = "2024 Jane Doe <jane@example.com>"
SPDX-License-Identifier = "CC0-1.0"

# Dva soubory vytvořené počítačem.
[[annotations]]
path = [
    "poetry.lock",
    "requirements.txt"
]
SPDX-FileCopyrightText = "NONE"
SPDX-License-Identifier = "CC0-1.0"

Specifikace REUSE podrobněji dokumentuje, jak lze REUSE.toml použít.

… přepsat chybné informace REUSE?

Je možné, že soubor obsahuje nesprávné značky autorských práv nebo licencí. Může to být záměrně, nebo máte dobré důvody tyto soubory neupravovat. Máte několik možností, jak dát programu REUSE pokyn, aby chybné informace ignoroval a místo nich použil správné informace.

  1. Uvnitř souboru použijte značky REUSE-IgnoreStart a REUSE-IgnoreEnd.
  2. Použijte soubor .license k přepsání obsahu souboru.
  3. Použijte soubor REUSE.toml s klíčovou hodnotou precedence = "override".

… přidat do souboru dodatečné informace REUSE bez úpravy záhlaví?

Existuje specifický rohový případ, kdy soubor může obsahovat platné informace REUSE (obvykle držitelé autorských práv), ale není žádoucí, abyste ručně upravovali hlavičku komentáře tohoto souboru, přestože by se na tento soubor mělo vztahovat více informací. Dobrým příkladem tohoto rohového případu jsou soubory .po poskytované překladateli. Ty mohou, ale nemusí obsahovat informace o autorských právech a licencích, v závislosti na překladatelském softwaru a nastavení překladatele.

Další informace můžete přidat pomocí klíčové hodnoty precedence = "aggregate" v souboru REUSE.toml. Příklad vypadá takto:

[[annotations]]
path = "po/*.po"
precedence = "aggregate"
SPDX-FileCopyrightText = "Přispěvatelé do mého projektu"
SPDX-License-Identifier = "GPL-3.0-or-later"

Ve výše uvedeném příkladu se k držitelům autorských práv souboru (pokud existují) přidá “Contributors to My Project” a k licencím souboru (pokud existují) se přidá “GPL-3.0-or-later”.

… kopírovat cizí práci?

Pokud vám někdo jiný poskytl svou práci k použití a kopírování, můžete jeho práci začlenit do svého projektu. Když vložíte dílo do některého ze souborů ve svém projektu, měli byste přidat značku SPDX-FileCopyrightText pro držitele autorských práv a značku SPDX-License-Identifier pro licenci (licence), pod kterou bylo dílo zpřístupněno.

Pokud byla práce licencována jinak než váš projekt, měli byste ověřit, zda jsou licence kompatibilní, a přidat nové licence do svého projektu.

… kopírovat dílo vydané pod pseudonymem nebo přezdívkou?

Jako držitele autorských práv můžete uvést pseudonym. Některé projekty příspěvky pod pseudonymem neumožňují.

Než začnete, vždy se nejprve ujistěte, že informace o autorských právech a licencích najdete jinde. Některé projekty obsahují tyto informace pouze v kořenovém adresáři nebo v souboru README.

Pokud žádné upozornění na autorská práva nenajdete, můžete se pokusit přidat je sami tak, že zjistíte držitele autorských práv od autora. Více informací o tomto rozlišení naleznete v tato otázka. V případě pochybností se obraťte na autora a požádejte ho o vysvětlení.

Je možné, že si autor přeje zůstat v anonymitě, což je jeho právo. Jako držitele autorských práv můžete napsat NONE nebo NOASSERTION.

Pokud dílo nemá licenci, znamená to, že nemáte právo ho kopírovat. Pokud se domníváte, že se jedná o chybu a autor zjevně chtěl, abyste toto dílo mohli kopírovat, měli byste autora kontaktovat a požádat ho o poskytnutí licence. Neváhejte je odkázat na adresu https://reuse.software.

… vyloučit soubor z testování shody REUSE?

Pokud je soubor artefaktem sestavení a používáte systém Git, jednoduše se ujistěte, že je soubor zahrnut v souboru .gitignore. Totéž platí pro ostatní mechanismy ignorování VCS.

V opačném případě nelze soubory z testování shody s nařízením REUSE vyloučit. To by bylo zcela v rozporu s účelem systému REUSE: zajistit, aby každý soubor obsahoval značku autorských práv a licence.

Pokud chcete soubor opravdu vyloučit, zvažte, zda pro něj nepoužít licenci CC0-1.0. Tím soubor zařadíte do public domain nebo ekvivalentní licence vaší země.

Pokud máte celý adresář, který chcete “vyloučit” z testování shody s REUSE, můžete použít REUSE.toml.

… vyloučit některé řádky z testování shody REUSE?

Chcete-li, aby nástroj ignoroval určitou sekci obsahující řetězce, které mohou být falešně detekovány jako prohlášení o autorských právech nebo licenci, můžete ji zabalit do dvou komentářů REUSE-IgnoreStart a REUSE-IgnoreEnd.

Vezměte prosím na vědomí, že toto nesmí být použito k ignorování platných informací o autorských právech a licencích vámi nebo třetí stranou. Bloky ignorování se musí používat pouze pro označení bloků, které mohou vyvolat falešně pozitivní detekce a chyby.

Příklad souboru, který obsahuje příkazy nebo dokumentaci matoucí nástroj REUSE:

# SPDX-FileCopyrightText: 2021 Jane Doe
#
# SPDX-License-Identifier: GPL-3.0-or-later

echo "SPDX-FileCopyrightText: $(date +'%Y') John Doe" > file.txt
echo "SPDX-License-Identifier: MIT" >> file.txt

Takto lze oddíl ignorovat:

# SPDX-FileCopyrightText: 2021 Jane Doe
#
# SPDX-License-Identifier: GPL-3.0-or-later

# REUSE-IgnoreStart
echo "SPDX-FileCopyrightText: $(date +'%Y') John Doe" > file.txt
echo "SPDX-License-Identifier: MIT" >> file.txt
# REUSE-IgnoreEnd

… zabývat se soubory, na které se nevztahují autorská práva?

Některé soubory, například soubory generované kódem nebo konfigurační soubory, které neobsahují žádné tvůrčí vyjádření, nemusí být chráněny autorským právem. REUSE však nařizuje uvádět licenční informace u každého jednotlivého souboru, takže zde dochází ke konfliktu. Protože nepovolujeme vyloučení souborů, musí být u takových souborů zaznamenány určité informace.

Máte dvě možnosti:

  1. Pro tento soubor jednoduše použijte běžná autorská práva a licenci. Nic vám nebrání v tom, abyste si “nárokovali” autorská práva na svá vlastní díla, i když by soud hypoteticky mohl takové soubory shledat neautorskými.
  2. Zřekněte se autorských práv pomocí licence CC0-1.0 nebo jiné podobné public domain dedikace.

Můžete se rozhodnout použít značku autorských práv, například SPDX-FileCopyrightText: NONE, abyste potvrdili, že neexistuje žádný držitel autorských práv.

Důvodem, proč tyto soubory musí být licencovány, je skutečnost, že rozumné názory na hranici originality se mohou lišit. Vy můžete soubor považovat za tak nevýznamný, že si nezaslouží informace o licenci, ale nižší proud může nesouhlasit a domnívat se, že daný soubor spadá pod autorská práva, což jim v podstatě znemožňuje jeho použití, pokud licence neexistuje.

Je důležité si uvědomit, že licence můžete použít pouze na svá vlastní díla. Pokud je autorem souboru někdo jiný, měli byste v záhlaví uvést jeho autorská práva a licenci. Pokud takové informace nejsou, měli byste se obrátit na autora.

… samostatně deklarovat autorská práva a licenci k části souboru?

Může se stát, že do většího souboru zkopírujete kód třetí strany. Do hlavičky souboru můžete přidat autorská práva a licenci nebo můžete kolem tohoto nového bloku kódu přidat řádkové komentáře.

Takto anotovaný blok snippetu musí začínat symbolem SPDX-SnippetBegin, který označuje jeho začátek, a končit symbolem SPDX-SnippetEnd, který označuje konec snippetu.

Upozorňujeme, že značky SPDX musí uvnitř fragmentů začínat znakem SPDX-Snippet, což znamená, že (jediné) správné upozornění na autorská práva ve fragmentu je SPDX-SnippetCopyrightText. Výjimkou je SPDX-License-Identifier.

Příklad:

# SPDX-SnippetBegin
# SPDX-License-Identifier: MIT
# SPDX-SnippetCopyrightText: 2023 Jane Doe <jane@example.com>

{$snippet_code_goes_here}

# SPDX-SnippetEnd

Snippety se mohou vnořovat, což se označuje dvojicemi SPDX-SnippetBegin/SPDX-SnippetEnd uvnitř jiných dvojic, stejně jako se v matematických výrazech vnořují závorky. V případě vnořených fragmentů se má za to, že značky souboru SPDX se vztahují na nejvnitřnější fragment. Příklad:

# SPDX-SnippetBegin
# SPDX-License-Identifier: MIT
# SPDX-SnippetCopyrightText: 2023 Jane Doe <jane@example.com>

{$snippet_code_under_MIT}

# SPDX-SnippetBegin
# SPDX-License-Identifier: BSD-2-Clause
# SPDX-SnippetCopyrightText: Copyright Example Company

{$snippet_code_under_BSD-2-Clause}

# SPDX-SnippetEnd

{$more_snippet_code_under_MIT}

# SPDX-SnippetEnd

Za dobrou praxi se také považuje bližší určení původu úryvku, například komentářem typu “Třída Foo je zkopírována z projektu Bar”.

Možnou alternativou k použití fragmentů je vyjmout blok kódu ze souboru a ponechat jej ve vlastním souboru.

… použít licenci, která není na seznamu licencí SPDX?

Pokud máte vlastní nebo upravenou licenci, která není uvedena v seznamu licencí SPDX, umístěte svou licenci do souboru LICENSES/LicenseRef-MyLicense.txt. Pokud svou licenci pojmenujete s předponou LicenseRef-, budou nástroje, které umí SPDX, schopny vaši licenci rozpoznat.

V tomto příkladu může záhlaví souborů, na které se vztahuje tato vlastní licence, vypadat následovně:

# SPDX-License-Identifier: LicenseRef-MyLicense
# SPDX-FileCopyrightText: 2017 Jane Doe <jane@example.com>

To může být také nutné při práci s více různými variantami přizpůsobitelných textových souborů licencí, například MIT nebo BSD.

Upozornění: Důrazně doporučujeme používat zavedené a schválené licence.

… použít vlastní licenční výjimku?

Není možné vytvořit vlastní výjimku. Místo toho můžete vytvořit vlastní licenci, která vloží výjimku.

… správně deklarovat multilicenci?

Všechny licence byste měli vždy zahrnout do adresáře LICENSES/.

Správný licenční výraz SPDX, který se na soubor vztahuje, závisí na záměru. Pokud je veškerý kód uvnitř souboru licencován pod více licencemi a nabyvatel licence si může vybrat, pod kterou licencí dílo spotřebuje, použijte SPDX-License-Identifier: MPL-1.1 OR GPL-2.0-or-later OR LGPL-2.1-or-later, jak to dělají části Firefoxu.

Pokud je veškerý kód v souboru licencován pod více licencemi a uživatel musí dodržovat všechny licence současně, použijte SPDX-License-Identifier: A AML, jak lze nalézt v Simple DirectMedia Layer (SDL).

Pokud je veškerý kód v souboru licencován pod jednou nebo druhou licencí (například veškerý kód je pouze pod GPL-2.0, ale jedna funkce je pod MIT), použijte snippets.

Více informací o výrazech SPDX najdete ve specifikaci.

… se vypořádat s licenčními texty, které obsahují prohlášení o autorských právech, jako je MIT/BSD?

Některé licenční texty, například licence MIT nebo BSD, lze upravit tak, aby obsahovaly vlastní upozornění na autorská práva.

Pokud zveřejňujete kód pod takovou licencí, doporučujeme přidat text licence do projektu bez jakýchkoli úprav. Dobrým způsobem, jak získat neupravený text licence, je použití pomocného nástroje REUSE (např. reuse download MIT). Namísto vkládání upozornění na autorská práva do samotného textu licence přidáte prohlášení o autorských právech do souborů projektu podle běžných osvědčených postupů REUSE.

Při opakovaném použití kódu z více zdrojů, které používají licenci MIT/BSD, rychle narazíte na problém. Licence MIT i rodina licencí BSD obsahují klauzuli, která vyžaduje, aby redistributor (tedy vy) reprodukoval oznámení o autorských právech a text licence. Například projekt A a projekt B mohou oba používat licenci MIT, ale skutečné licenční soubory se budou lišit, protože v nich budou vložena různá upozornění na autorská práva. Pokud chcete znovu použít kód z obou těchto projektů, nemusíte si být jisti, kam umístit své kopie licenčních souborů těchto projektů.

Doporučujeme dvě možnosti:

  1. Nejpragmatičtějším řešením je umístit neupravený text licence (tj. šablonu textu licence bez upozornění na autorská práva) do složky LICENSES/. Do odpovídajících souborů zdrojového kódu, které jste znovu použili, pak jako obvykle vložíte upozornění na autorská práva z upstreamového projektu.
  2. Důkladnějším a pracnějším řešením je považovat jakýkoli z těchto licenčních textů s upravenými poznámkami o autorských právech za vlastní licenci s použitím LicenseRef. Pokud však pod těmito licencemi opakovaně používáte kód od mnoha třetích stran, může se stát, že budete mít těchto vlastních licencí hodně.

Některé soubory jsou upravovány mnoha lidmi a v záhlaví je uveden velmi dlouhý seznam držitelů autorských práv. To může být esteticky nepříjemné, ale není to nesprávné.

Pokud se nechcete zabývat tolika upozorněními na autorská práva, některé projekty, jako například Chromium, tento problém obcházejí tím, že jako značku autorských práv používají “Copyright (c) 2013 The Chromium Authors”. Můžete o tom uvažovat, ale pak byste měli mít seznam držitelů autorských práv a autorů v samostatném souboru ve svém projektu.

Proč REUSE

Opravdu musím ve všech souborech uvádět záhlaví o licenci a autorských právech? Proč by mě to mělo zajímat?

Velké projekty se složitými autorskými právy a licencemi mohou z REUSE získat nejvíce, protože z chaosu vytvoří pořádek a vyřeší nejasné licencování. Vložení záhlaví do každého souboru je nutným zlem pro dosažení tohoto pořádku a přehlednosti. Tato metadata musí někde být a podle našeho názoru by měla být co nejblíže datům - jako záhlaví v každém souboru.

Ale i menší projekty nebo projekty s jednoduchým licencováním mají z REUSE prospěch. V dobrém i zlém je licencování základním kamenem hnutí svobodného softwaru. Umožňuje sdílení a v případě copyleftu nám umožňuje zachovat svobodný software. Správné licencování je důležité, jinak lidé nebudou moci váš software používat, a REUSE je jednoduchá součást, která vám s tím pomůže.

Navíc, i když je váš projekt jednoduchý teď, nemusí tomu tak být vždy. Pokud zkopírujete nějaký kód z jiného projektu, který má jinou licenci, jste často povinni jej správně připsat a/nebo uvést doprovodný text licence. Díky včasnému zavedení REUSE je mnohem snazší rozeznat váš kód od kódu třetí strany a správně tyto věci sledovat.

A konečně, provádění REUSE je malou službou ostatním. Jako softwarový inženýr můžete být frustrující, když najdete nějaký kód, který je účelově vytvořen pro problém, který se snažíte vyřešit, ale nejste schopni zjistit, jak je to s licencí tohoto kódu, což v podstatě znemožňuje jeho opětovné použití. REUSE vám pomůže pomoci ostatním vývojářům při opakovaném použití vašeho kódu, což je jeden z velkých přínosů svobodného softwaru.

Jsem zvyklý dělat věci jinak; nemohu prostě pokračovat v tom, co jsem dělal vždycky?

Někteří lidé se při prvním setkání s REUSE setkají s několika věcmi, které se velmi liší od toho, na co jsou zvyklí. Chybí jim dlouhé právní poznámky v horní části souborů, postrádají soubor COPYING/LICENSE v kořenovém adresáři úložiště, myslí si, že soubory .license zahlcují adresář, nebo jim připadá velmi zvláštní, že i bezvýznamné nekódové soubory dostávají licenční hlavičky. Odlišnost REUSE se v tomto směru může zdát zvláštní.

Jedním z hlavních cílů projektu REUSE je co největší kompatibilita se stávajícími osvědčenými postupy. Výslovně však porušuje některé staré tradice. Věříme, že díky tomu je REUSE lepší. Díky tomu, že prolamuje nové hranice, je REUSE jednodušší, komplexnější a jednoznačnější, než kdybychom se snažili zachovat kompatibilitu se starými tradicemi.

Nic vám však nebrání přidat do záhlaví dlouhé legální fráze nebo umístit soubor COPYING do kořene adresáře. Tyto věci si můžete udělat podle svých představ. Některým dalším aspektům REUSE se však vyhnout nelze. REUSE tvrdí, že každý jednotlivý soubor by měl obsahovat licenční informace, takže i ty nejmenší soubory obsahují licenční metadata. Tyto věci prostě neodmyslitelně patří k cíli REUSE a doufáme, že se tyto výstřednosti brzy stanou samozřejmostí, takže už nebudou působit tak zvláštně.

Proč REUSE nepoužívá pole metadat v obrázcích, SVG, textových dokumentech atd.?

Některé formáty souborů podporují ukládání informací o metadatech v samotném souboru a některé dokonce obsahují pole pro autorská práva a licence. Ty však v systému REUSE z praktických důvodů nepodporujeme:

  1. Pro lidi i stroje není vždy triviální tyto informace rozpoznat. Záměrem systému REUSE je usnadnit vyhledávání informací o licencích a autorských právech.
  2. Některé nástroje upravují pole metadat, například aby zmenšily soubory nebo odstranily potenciálně citlivé osobní údaje. To může také vymazat vaše nebo cizí informace o autorských právech a odhalit tuto chybu je obtížné.
  3. U některých typů souborů existují konkurenční a nestandardizované metody ukládání metadat.

Tato otázka také souvisí s otázkou proč nemůžeme používat správu verzí pro záznam autorských práv.

V jiné otázce rozlišujeme mezi držiteli autorských práv a autory, což není vždy totéž. Kontrola verzí obvykle zaznamenává pouze autorství, což ji činí nevhodnou pro úkol zaznamenávat autorská práva.

Další překážkou je, že historie správy verzí může obsahovat chyby a oprava takové chyby by vyžadovala přepsání historie, což by způsobilo, že by všichni přispěvatelé museli znovu stáhnout nový kmen.

Dalším problémem správy verzí je, že příkaz blame, který se obvykle (nesprávně) používá ke zjištění autorství řádek po řádku, zobrazuje pouze autora poslední revize v daném řádku, i když šlo o tak triviální věc, jako je oprava překlepu nebo přesun bloku kódu na jiné místo.

Co se stalo s .reuse/dep5?

REUSE v současné době používá REUSE.toml pro hromadné licencování souborů. Před verzí 3.2 specifikace však REUSE používalo .reuse/dep5, téměř doslovnou kopii DEP5/debian/copyright.

Ve verzi 3.2 je .reuse/dep5 zastaralý, ale stále podporovaný, i když se vzájemně vylučuje s REUSE.toml. Pomocí reuse convert-dep5 můžete automaticky převést soubor .reuse/dep5 na sémanticky ekvivalentní soubor REUSE.toml.

.reuse/dep5 byl z různých důvodů zrušen ve prospěch REUSE.toml:

  • debian/copyright nikdy nebyl účelovou shodou pro REUSE. Debian používá tento soubor k ucelenému prohlášení o licencích balíčku; REUSE jej používá k vyplnění licenčních mezer.
  • .reuse/dep5 nejednoznačně určoval licenční informace souboru, pokud byly tyto informace deklarovány jak v samotném souboru, tak v .reuse/dep5. Které informace se použijí? Ve verzi 3.2 jsou tyto informace explicitně agregovány. Přidání nového klíče pro explicitní deklaraci priority by bylo obtížné, protože…
  • .reuse/dep5 je obtížné analyzovat. V Pythonu existuje modul python-debian, ale jeho formát je nestandardní a nepružný. Jedním z hlavních cílů REUSE je být strojově čitelný a tento vlastní formát tomuto cíli neprospíval.
  • TOML je flexibilnější. Můžete zapsat libovolnou hodnotu klíče, což může být užitečné pro vlastní pracovní postupy.
  • TOML se píše mnohem snadněji. Vývojáři již vědí, jak psát TOML, a nemusí si zvykat na vlastní formát.
  • REUSE.toml může být umístěn kdekoli vzhledem k souborům a může se vnořovat. To je velká pomoc pro projekty typu monorepo nebo monorepo.

Z důvodu kompatibility zůstane soubor .reuse/dep5 podporován navzdory svému zastarání po značně dlouhou dobu; přinejmenším do roku 2029.