Permisivní licence, nebo copyleft? Co rozhoduje při výběru
Simulace dat a vazeb v pra
První konkrétní krok: oddělte reprezentaci od identity. Nikdy neposílejte klientům interní databázové klíče jako primární identifikátor v URL. Místo „/objednavky/4711" použijte stabilní, veřejný identifikátor, který si sami generujete a který přežije migraci tabulek. Když se datový model změní – sloučíte tabulky, přejdete na UUID, rozdělíte entitu – veřejné ID zůstane stejné a klienti nic nepoznají.
Pro datové vstupy použijte fixture soubory nebo továrny na testovací data. Místo ručního vytváření objektů v každém testu definujte šablony s výchozími hodnotami a v konkrétních testech měňte jen to, co je podstatné. Vazby mezi daty simulujte pomocí jednoduchých struktur, které respektují referenční integritu. Například místo skutečné databáze použijte kolekci v paměti, která se na začátku testu naplní a na konci vyčistí. Pokud testujete chování při výpadku, simulujte chyby – vyhoďte výjimku, nastavte časový limit nebo vracejte neúplná data.
Začněte tím, že vezmete každou položku v backlogu sprintu a rozepíšete ji na konkrétní kroky. Ne na fáze typu „analýza, vývoj, testování", ale na činnosti, které zaberou jeden až dva dny. Pokud se krok nedá dokončit do dvou dnů, je příliš velký a musí se rozdělit dál. Cílem je dostat se na úroveň, kde každý člen týmu dokáže říct, co přesně bude dělat a co bude mít na konci hotové.
Pozor na časové limity uvnitř samotné úlohy. Pokud úloha po dvou sekundách vzdá práci, test s delším čekáním ji nezachrání. Nastavte limity konfigurovatelně a v testech je zkraťte nebo naopak prodlužte podle potřeby. Zároveň logujte každý přechod stavu, protože při pádu testu je z logu hned vidět, ve které fázi se úloha zasekla.
Dál zkontrolujte slučitelnost s licencemi závislostí. Permisivní kód lze obvykle vložit do copyleftového projektu, opačně to neplatí. Některé licence nejsou slučitelné vůbec a výsledkem je právně neřešitelný mix. Projděte seznam závislostí, u každé si poznamenejte licenci a hledejte konflikty ještě před prvním vydáním. Stejně tak ověřte licenci u souborů, které jste převzali z jiných projektů – jeden soubor pod neslučitelnou licencí stačí k problému.
Jak zjistit, co vlastně potřebujete Nejdřív si napište, jakým způsobem chcete, aby projekt žil. Pokud stavíte nástroj, který mají firmy zabudovat do svých produktů, permisivní licence odstraňuje právní tření. Pokud jde o knihovnu, kterou chcete udržet otevřenou navždy, copyleft je silnější záruka. U serverových aplikací narazíte na slabý copyleft, který se váže na distribuci, ne na pouhé provozování služby. Rozdíl mezi distribucí a poskytnutím přes síť je klíčový a lidé ho pletou nejčastěji.
Základní dělení je mezi permisivními licencemi a copyleftem. Permisivní licence dovolují kód použít i v uzavřených produktech, stačí zachovat autorská oznámení a text licence. Copyleft naopak vyžaduje, aby odvozené dílo zůstalo pod stejnou licencí, takže kód nelze uzavřít. První skupina usnadňuje šíření, druhá chrání svobodu díla i v dalších verzích. Neexistuje lepší varianta, jen vhodnější pro konkrétní záměr.
Výběr licence není formalita na konci projektu. Určuje, co s vaším kódem mohou dělat ostatní, jestli se vaše úpravy musí vrátit komunitě a jaké slučitelnosti dosáhnete při kombinování s cizími knihovnami. Rozhodněte se dřív, než začnete přijímat příspěvky od lidí mimo tým. Zpětně měnit licenci je možné jen se souhlasem všech, kdo do projektu přispěli, což je v praxi často nemožné.
Pokud si nejste jistí, zvolte jednoduchou a rozšířenou licenci, které rozumí právníci i firmy. Složitá vlastní licence odradí přispěvatele i uživatele. Až se rozhodnete, zapište volbu do souboru v kořeni, přidejte krátkou hlavičku do zdrojových souborů a poznamenejte licenci i do dokumentace. Tím vznikne jasný stav, na kterém se dá stavět další vývoj.
Časté chyby: chybějící soubor s licencí v kořeni repozitáře, uvedení licence jen v dokumentaci, nebo naopak text, který si autor vymyslel. Licence musí být přesná, celá a neměnná, bez vlastních dodatků. Další chyba je předpoklad, že zveřejněním kódu se licence aplikuje sama. Bez výslovného určení platí jen to, co dovoluje autorské právo, tedy téměř nic. Nepodceňujte ani otázku contributor license agreement u větších projektů.