[custom_add_property_button]
[custom_sign_button]

6 kritérií, podle kterých vyberete správnou open source licenci

Když píšete Redux aplikaci, dřív nebo později narazíte na potřebu ověřit, že reducery správně transformují stav a async akce volají správné API a dispatchují správné akce. Často se předpokládá, že k tomu potřebujete plnohodnotné testovací prostředí s mockováním a běžícím store. Ale ve skutečnosti můžete dosáhnout vysoké míry jistoty i bez integračního prostředí – stačí testovat čisté funkce a izolovaně ověřovat logiku.

Do rozhodování zahrňte i způsob distribuce. Pokud software poskytujete jen přes síť (například jako webovou službu), některé licence na to pamatují. AGPL je navržena právě pro tento případ – vyžaduje zveřejnění zdrojového kódu i při síťovém použití, což je rozdíl oproti běžné GPL. Pokud provozujete SaaS a nechcete zveřejňovat úpravy, vyhněte se AGPL a zvolte jinou licenci. Naopak pokud je vaším cílem podpořit komunitu a umožnit kontrolu nad tím, jak je kód na serverech upravován, AGPL je vhodná volba. Tento bod bývá často přehlížen, a to zejména u firemních projektů.

Typická chyba je psát testy, které závisí na pořadí provedení. Testy musí být izolované – každý běží sám za sebe a nespoléhá se na stav z předchozího testu. Pokud potřebujete připravit data, udělejte to v metodě, která se volá před každým testem. Vyhněte se také testování implementace – testujte chování, ne to, jak je funkce napsaná. Když později změníte vnitřní kód, testy by měly zůstat beze změny.

Začněte tím, co od uživatelů chcete. Pokud vám jde o co nejširší použití, včetně komerčních projektů, zvolte permisivní licenci (například MIT nebo BSD). Ta umožňuje kód použít, upravit i začlenit do proprietárního softwaru bez povinnosti zveřejnit zdrojové kódy. Naopak pokud chcete zajistit, aby všechny odvozeniny zůstaly otevřené, použijte copyleftovou licenci, jako je GPL. Tím vzniká řetězec, který drží kód svobodný i v rukou dalších vývojářů. Rozhodnout se mezi těmito dvěma světy je první a nejdůležitější krok.

Prvním krokem je důkladná analýza schématu. MySQL umožňuje automatické přetypování řetězců na čísla nebo používá implicitní konverze, které PostgreSQL odmítá. Typickým příkladem je sloupec typu enum – v PostgreSQL se doporučuje převést na varchar s kontrolním omezením, protože enum zde nelze snadno rozšiřovat. Podobně dopadnou sloupce s nulovými hodnotami a prázdnými řetězci: PostgreSQL rozlišuje NULL a prázdný řetězec, zatímco některé aplikace psané pro MySQL je zaměňují.

Důležité je také myslet na sekvence. V MySQL se auto_increment chová jako vlastnost sloupce, v PostgreSQL se používá samostatný objekt sekvence. Pokud data importujete bez nastavení sekvence na správnou hodnotu, může dojít ke konfliktu primárních klíčů hned při prvním vložení nového záznamu. Proto po importu vždy nastavte aktuální hodnotu sekvence na maximum identifikátoru v tabulce. Totéž platí pro všechny tabulky, nejen pro ty největší.

Když testy spustíte, sledujte nejen, jestli projdou, ale také jak dlouho trvají. Unit testy by měly běžet v řádu milisekund. Pokud test trvá sekundy, pravděpodobně testujete příliš velkou jednotku nebo používáte externí služby. V takovém případě použijte testovací dvojníky – fake, stub nebo mock. Ty nahradí závislosti, jako je databáze nebo API, a umožní vám testovat jen samotnou logiku.

Nakonec se zamyslete, jestli Redux potřebujete vůbec. Pro malé aplikace s pár komponentami je lepší použít lokální stav nebo Context API. Redux se vyplatí ve chvíli, kdy máte složité interakce mezi komponentami, potřebujete časově cestovat (debugging) nebo ukládáte stav na server. Pokud ho už používáte, držte se jednoduchosti: málo akcí, jasné reduktory a selektory. Tím udržíte kód udržovatelný i po měsících.

Výběr open source licence bývá často podceňovaným rozhodnutím. Mnoho vývojářů sáhne po té první, kterou znají – obvykle MIT nebo GPL – aniž by si uvědomili, jaké důsledky to bude mít pro ně i pro uživatele jejich kódu. Přitom stačí položit si pět až sedm konkrétních otázek a odpovědi vás spolehlivě dovedou k vhodné licenci. Není to o právnické průpravě, ale o tom, co od šíření kódu skutečně očekáváte.

Jaké konkrétní povinnosti licence ukládá uživatelům? Každá licence s sebou nese povinnosti, které musíte zvládnout vysvětlit. U GPL je to především povinnost poskytnout zdrojový kód, pokud software distribuujete. U LGPL se tato povinnost týká pouze upravených knihoven, nikoliv celé aplikace, která je používá. Permisivní licence zase vyžadují zachování copyrightové hlavičky a často i vyloučení odpovědnosti. Před výběrem si proto zjistěte, jaké jsou přesné podmínky dané verze. Licence se vyvíjejí – verze 2 a 3 GPL se liší v detailech, které mohou být pro váš projekt zásadní.

Please Sign In Before Adding a Property Or Sign Up If You Don't Have An Account