Otevřený a znovu využitelný zdrojový kód

Když vytváříte nový zdrojový kód, musíte ho nechat otevřený tak, aby ostatní vývojáři (včetně těch mimo vládu) mohli:

  • Těžit z vaší práce a stavět na ní
  • Učit se z vašich zkušeností
  • Najít využití kódu, která jste nenalezli

Splnění standardu digitální služby

Pro splnění bodu 8 (nechte nový zdrojový kód otevřený) musíte:

  • Nechat nový zdrojový kód celý otevřený a znovupoužitelný
  • Zveřejnit kód pod příslušnou licencí
  • Vysvětlit vaše počínání pro všechny kódy, které jste nenechali otevřené

Budete muset vysvětlit, jak jste to udělali při hodnocení služby.

Otevřenost kódu

Kód byste měli zveřejnit na internetovém úložišti pro otevřené zdrojové kódy (GitHub apod.), včetně kódu, který byl pro vás vyvinutý třetí stranou, např. vývojovou agenturou.

Při zveřejňování kódu je třeba se ujistit, že:

  • Jste si jistí, kdo vlastní kód a jak ho mohou ostatní používat.
  • Nevydáváte informace a zdrojové kódy, které by měly zůstat neveřejné.
  • Veškeré nástroje třetích stran, které používáte k uspořádání nebo správě vašeho kódu, jsou bezpečné.

Nechte váš kód otevřený od samého začátku

Je mnohem snazší psát váš kód otevřený od začátku projektu, než ho udělat otevřený později, protože můžete řešit problémy s bezpečností a další záležitosti už při vývoji. Pokud to tak neuděláte, strávíte na konci projektu hodně času a peněz navíc kontrolováním, zda je kód bezpečný pro spuštění.

Otevřené kódování od začátku znamená, že můžete:

  • Plánovat, jak se vyhnout zveřejňování citlivých informací později v projektu
  • Dodržovat osvědčené postupy od začátku, například udržujte dobrou dokumentaci
  • Nastavte si procesy, které vám umožní průběžně zveřejňovat kód při jeho psaní
  • Umožněte ostatním, aby identifikovali části kódu, které by mohli opakovaně použitelné
  • Umožněte ostatním, aby při probíhajícím projektu přispěli svými nápady; například pokud vědí o existujících nástrojích, které by mohly pomoci

Jak udělat existující kód otevřený

Při snaze udělat existující kód otevřený, je třeba u kódu zkontrolovat:

  • Bezpečnostní nedostatky
  • Nevhodný obsah, například neslušné zprávy v komentářích
  • dokumentaci, včetně commitů

Měli byste mít kód otevřený, při současném zachování historie, protože to poskytuje užitečnou dokumentaci. Pokud to není možné, můžete uvolnit „snapshot“, ale to by měla být poslední možnost.

Jakmile budete mít kód otevřený, měli byste přejít k modelu, kde budete pokračovat ve vývoji na otevřeném kódu. Pokud plánujete pokračovat ve vývoji kódu v uzavřeném způsobu, měli byste vysvětlit, jakým způsobem budete udržovat otevřený kód aktuální.

Kdy je pro kód přijatelná uzavřená verze

Existuje velmi málo příkladů kódu, který nesmí být zveřejněn otevřeně.

Hlavním důvodem, proč by kód měl být uzavřený, je, pokud se týká politiky, která dosud nebyla oznámena. V tomto případě musíte kód zveřejnit co nejdříve po zveřejnění politiky.

Pravděpodobně budete muset z bezpečnostních důvodů zachovat nějaký kód uzavřený, například kód, který chrání proti podvodům. Postupujte podle návodů:

V zdrojovém kódu nesmí být ukládány tajné klíče ani pověření

Musíte ukládat tajné klíče a pověření odděleně, například pomocí tajného systému správy, a vložit je do kódu. Tímto způsobem chráníte klíče před neoprávněným personálem a umožňujete snadné poskytování různých klíčů pro různá prostředí a v případě potřeby střídání klíčů.

Otevření konfiguračního kódu

Měli byste publikovat konfigurační kód, nebo podrobný návod ke konfiguraci služby.

Pokud zveřejníte přesné verze softwaru použitého pro provoz služby, může být pro útočníky jednodušší identifikovat starší software obsahující chyby. Ať už je váš kód otevřený nebo zavřený, musíte mít plán, jak upgradovat nebo patchovat software, který používáte k provozu služby na nejnovější či bezpečné verze.

Otevření kódu s funkcí vynucení zabezpečení

Kód, který přispívá k zabezpečení vaší služby, nemusí být uzavřen. Mnohé funkce pro vynucení zabezpečení, jakou jsou kryptografické algoritmy, jsou prokazatelně lepší, pokud jsou otevřeně prozkoumány a pochopeny, zatímco klíče jsou soukromé. Většina kryptografických norem je vyvinuta otevřeně normalizačními orgány. Americký národní institut pro standardy a technologie (NIST) nedávno uzavřel 9-letý proces od otevřené soutěže až po standardizacikryptografického hashovacího algoritmu SHA-3.

Zjistěte více o bezpečnostních otázkách pro otevřený kód.

Pokud si nejste jisti, které části vašeho kódu mohou být zveřejněny otevřeně, promluvte si s třetí stranou, které důvěřujete. Například technický architekt ve vašem oddělení nebo jiném vládním oddělení.

Technického architekta můžete najít tak, že se připojíte do  komunity technické architektury.

Licencování vašeho kódu

Měli byste svůj kód zveřejnit pod licencí kompatibilní s iniciativou Open Source, například používá licenci MIT.

Veškerý kód vytvořený státními zaměstnanci je automaticky licencován všem složkám státu a stát s ním může jakkoliv nakládat bez souhlasu autora, včetně plného uveřejnění.

Zodpovědnost za otevřený zdrojový kód

Když otevřete kód, měli byste:

  • použít sémantické číslování verzí, aby bylo zřejmé, když vydáte aktualizaci kódu, o jak velký upgrade se jedná.
  • Ujasněte si, jak komunikujete s uživateli svého kódu, například na kanálech podpory, fórech či mailing listech.

Podpora zapojení lidí do vývoje kódu, kteří používají váš kód, vám pomůže zvýšit robustnost vašeho kódu. Pokud byste chtěli podporovat příspěvky, měli byste:

  • Připravit návody, jak se do kódování zapojit
  • Vyhradit si přiměřený čas pro správu kódu a podporu komunity
  • Udržovat veřejný seznam chyb a požadavků ke službě

Sledování změn v kódu

Když máte otevřený kód, musíte sledovat změny pomocí kontroly verzí.

Služby jako GitHub usnadňují kontrolu verzí. Umožňují sledovat problémy a vedle kódu číst i jeho dokumentaci, abyste pochopili, co se změnilo a proč.

Řešení problémů se zabezpečením v publikovaném kódu

Pokud v kódu zjistíte bezpečnostní potíže po jeho zveřejnění, musíte být schopni rychle vydat opravnou verzi (fix), aniž byste o této chybě prozradili příliš mnoho informací, dokud se s ní nevypořádáte.

Oprava problémů spojených se zabezpečením ve veřejných kopiích kódu nefunguje pro každý tým. Je možné použít skripty k přepínání mezi soukromými a veřejnými kopiemi kódu, které bezpečně spravují opravné verze (fixy).

Ve vašem teamu nebo organizaci byste měli dodržovat konkrétní bezpečnostní zásady a také obecné osvědčené bezpečnostní postupy pro rychlou reakci na zranitelná místa.

Související návody

Tyto návody vám mohou být užitečné: