Co dělat s open source licencí u kódu převzatého od klienta?

Z Mazovia

Test reduceru začni tím, že zavoláš funkci se dvěma argumenty: výchozím stavem a akcí. Porovnej výsledek pomocí hluboké rovnosti. Nezapomeň testovat i neznámou akci – reducer musí vrátit původní stav, ne undefined. Častá chyba je mutace: vývojář upraví pole přes push a test projde, protože stejná reference zůstane. Proto po každém testu ověř, že se původní objekt nezměnil, ideálně tak, že si před voláním uložíš kopii a porovnáš ji.

Typická chyba je vnořovat Grid do Gridu tam, kde stačí Flexbox, a naopak. Další častý problém: nastavit výšku rodiče přes height: 100%, ale zapomenout, že rodič výšku nemá. Pak align-items: center nic nevycentruje. Řešením je min-height: 100dvh na obalu a place-items: center na Gridu. Jednotky dvh berou v potaz lišty mobilních prohlížečů, což vh nedělá.

Kde Grid končí a začíná Flexbox Flexbox je určený pro rozložení v jednom směru. Hodí se na navigaci, tlačítkovou lištu, řádek s ikonou a textem, nebo na centrování obsahu. Použijte display: flex, gap místo okrajů a flex-wrap: wrap, aby se prvky zalomily, když je místa málo. Klíčové je flex: 1 1 240px — položka roste, smršťuje se a základní šířku si drží. Naopak flex: 1 bez základu způsobí, že se dlouhý text roztáhne přes celou šířku a krátký zůstane v úzkém sloupci.

Poslední pravidlo se týká komunikace. Větve, které na sebe navazují, držte krátké a slučujte v pořadí, v jakém vznikaly. Pokud dvě větve mění stejné místo, domluvte se předem, kdo sloučí první, a teprve pak upravte tu druhou. Větvení není jen technická operace, ale dohoda mezi lidmi. Když pravidla platí pro všechny stejně, přestane být slučování stres a stane se rutinou.

Výsledkem by měl být seznam závislostí s licencí, původem a povinnostmi, doplněný o rozhodnutí, co použít, co nahradit a co vyřadit. Před převzetím kódu si vyžádejte písemné prohlášení klienta o právech k dodanému kódu. Pokud se najde problémová licence, řešte ji dřív, než kód zamíří do produkce. Náprava později je výrazně dražší a může zablokovat celý projekt.

Nejprve zjistěte, koho chyba skutečně zasahuje. Jinak vypadá situace, kdy selhává platba nebo přihlášení, a jinak kosmetická vada v málo používané obrazovce. Sepište, kolik lidí to potkalo, zda jde o ztrátu dat, nebo jen o nepohodlí, a jestli existuje rozumný způsob, jak se tomu vyhnout. Teprve potom rozhodujte o tempu. Bez tohoto kroku se opravy hromadí podle toho, kdo si nejhlasitěji stěžuje, ne podle skutečné škody.

Kdy je kód klienta opravdu jeho a kdy ne Klient může tvrdit, že kód napsal, ale část mohla vzniknout jako dílo zaměstnanců, dodavatelů nebo z jiného projektu. Ptejte se proto konkrétně: kdo kód vytvořil, na základě jaké smlouvy a zda existují výjimky. Bez písemného potvrzení o původu a právech kódu nemá smysl řešit licence jednotlivých souborů. Pokud klient potvrzení nedá, berte kód jako rizikový a jeho použití omezuje na minimum.

U open source licencí rozhoduje, zda jde o permisivní, nebo copyleftovou licenci. Permisivní licence obvykle vyžadují zachování autorských práv a textu licence, ale nezasahují do licencování vašeho kódu. Copyleftové licence mohou vyžadovat, aby byl odvozený kód šířen pod stejnou licencí. U síťových licencí vzniká povinnost i při pouhém provozu služby. Rozdíl je zásadní pro to, co můžete klientovi dodat a co si nechat interně.

Grid použijte tam, kde chcete řídit obě osy současně — rozvržení stránky, galerie, dashboard, formulářová mřížka. Základem je display: grid a grid-template-columns. Pro responzivitu se osvědčuje repeat(auto-fit, minmax(260px, 1fr)): karty se samy přeskládají podle dostupné šířky a nemusíte psát jediný breakpoint. Pokud potřebujete pevný počet sloupců, použijte repeat(3, 1fr) a teprve v media query počet snižte. Pozor na minmax(0, 1fr) — bez nulového minima obsah s dlouhým slovem nebo obrázkem sloupec roztlačí a vznikne horizontální posuvník.

Nezapomínejte na frekvenci. Lidé, kteří vidí stejnou reklamu pořád dokola, přestanou reagovat. Nastavte strop zobrazení a obměňujte kreativu dřív, než začne unavovat. Sledujte, po kolika zobrazeních začne klesat míra prokliku. Jakmile klesne, je čas na změnu. Tohle pravidlo platí pro všechny úrovně pyramidy, i když v horní části přichází únava rychleji.

Závislosti se dají vytáhnout příkazem správce balíčků nebo nástrojem pro analýzu licencí. U JavaScriptu pomůže výpis z package-lock.json, u Pythonu seznam z prostředí, u Javy přehled v souboru pom.xml nebo build.gradle. Ke každé knihovně potřebujete znát licenci, ne jen název a verzi. Pozor na soubory typu LICENSE, COPYING nebo hlavičky ve zdrojácích, které určují podmínky i pro převzatý kód.