Otevřít hlavní menu

Moderní stát β

Změny

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

Přidáno 7 878 bajtů, 10. 2. 2019, 20:19
Založena nová stránka s textem „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ší…“
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í [[Standard digitální služby|bodu 8]] ([[Otevřený zdrojový kód|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, [[Zabezpečení vašich informací|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ů:

* [[Uzavřený kód|Kód, který by měl zůstat zavřený]]
* [[Bezpečnostní otázky u Open source]].

== 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í otázky u Open source|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á [https://opensource.org/licenses/MIT 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 [https://semver.org 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é:

* [[Verzování kódu a dokumentace]]
* [[Nasazujte nové verze pravidelně]]