Modularita je asi nejzásadnější novinkou Fedory 28 a má potenciál docela výrazně změnit způsob, jak je software ve Fedoře distribuovaný. Tento článek původně vyšel v angličtině na Fedora Magazine a jeho autorem je Stephen Gallagher, který je jedním z těch, kteří za initiativou kolem modularity stojí.

Co je Modularita?

Klasickým hlavolamem, který řeší všechny open-source distribuce, je problém „příliš rychlé/příliš pomalé“. Uživatelé instalují operační systém, aby mohli používat své aplikace. Komplexní distribuce jako Fedora mají výhodu a nevýhodu zároveň ve velkém počtu software, který nabízejí. Balíček, který uživatel chce, může být dostupný, ale už nemusí být k dispozici ve verzi, v které jej potřebuje. Následující článek popisuje, jak tento problém řeší Modularita.

Fedora se občas pro některé uživatele pohybuje příliš rychle. Její rychlý vývojový cyklus a snaha přinášet nejnovější stabilní software může rozbíjet kompatibilitu s některými aplikacemi. Jestliže uživatel nemůže spustit webovou aplikaci, protože Fedora upgradovala webový framework na nekompatibilní verzi, může to být pro něj hodně frustrující zážitek. Klasická odpověď na problém „příliš rychlé“ byla, že má mít Fedora LTS verzi. Nicméně tento přístup řeší pouze polovinu problému a zhoršuje druhou stranu hlavolamu.

Někdy se Fedora pro některé uživatele pohybuje „příliš pomalu“. Např. vydání Fedory může časově hodně špatně vycházet s ohledem na software, který potřebujete. Jakmile je vydání Fedory prohlášeno za stabilní, správci balíčků se musí držet politiky stabilních aktualizací a nepřinášet do systému nekompatibilní změny.

Fedora Modularity řeší obě strany problému. Fedora bude i nadále přinášet standardní vydání s tradiční politikou, ale nabídne také sadu modulů, které definují alternativní verze populárního software. Fanoušci „příliš rychle“ budou mít i nadále výhody v podobě novějšího kernelu a dalších zlepšení v systému a k tomu budou mít přístup ke starším frameworkům a toolchainům, které podporují jejich aplikace.

A k tomu uživatelé, kteří se rádi pohybují blíže k hraně nejaktuálnějšího vývoje, můžou mít přístup k software v čase jeho vydání.

Co není Modularita?

Modularita není náhradou za Softwarové kolekce. Obě tyto technologie se snaží řešit hodně stejných problémů, ale zároveň se také výrazně liší.

Softwarové kolekce instalují různé verze balíčků v systému vedle sebe. Nicméně jejich nevýhodou je, že každá instalace existuje ve své vlastní části jmenného prostoru souborového systému, což znamená, že každá aplikace, která na nich závisí, musí vědět, kde je má hledat.

S Modularitou existuje v systému pouze jedna verze balíčku, ale uživatel si může vybrat jaká. Výhodou je, že tato verze se nachází ve standardní lokaci v systému. Balíček nevyžaduje žádné speciální změny v aplikacích, které na něm závisí. Zpětná vazba od uživatelů ukazuje, že většina z nich nepoužívá paralelní instalace. Ten problém řeší kontejnerizace a virtualizace.

Proč prostě nepoužít kontejnery?

Toto je další častá otázka. Proč by uživatel chtěl moduly, když může prostě použít kontejnery? Odpovědí je, že někdo pořád musí spravovat software v kontejnerech. Moduly poskytují zabalíčkovaný obsah pro kontejnery, které uživatelé nemusí spravovat a patchovat sami. Takto Fedora využívá tradiční hodnotu distribuce a přináší ji do nového, kontejnerizovaného světa.

Tady je příklad, jak Modularita řeší problémy uživatelů Node.js a Review Board:

Node.js

Mnoho čtenářů asi zná Node.js, populární JavaScriptové běhové prostředí na straně serveru. Node.js má politiku lichých a sudých vydání. Jeho komunita podporuje sudá vydání (6.x, 8.x, 10.x atd.) po dobu zhruba 30 měsíců, zatímco lichá vydání jsou víceméně jen vývojářské ukázky podporované 9 měsíců.

Kvůli tomuto cyklu Fedora přinášela ve stabilních repozitářích pouze poslední sudé vydání Node.js. Lichým vydáním  se zcela vyhýbala, protože jejich životní cyklus je kratší než délka podpory Fedory a celkově nejsou příliš synchronizované s distribučními vydáními. To nevyhovovalo uživatelům Fedory, kteří chtěli mít přístup k nejposlednějším novinkám.

Díky Modularitě Fedora 28 přináší ne jednu, ale hned tři verze Node.js, aby uspokojila jak vývojáře, tak stabilní nasazení. Tradiční repozitář Fedory 28 obsahuje Node.js 8.x. Tato verze byla posledním stabilním vydáním s dlouhodobou podporou v momentě vydání Fedory. Modulární repozitáře (povolené ve výchozí instalaci Fedora 28 Server) poskytují také starší vydání Node.js 6.x a novější vývojové vydání Node.js 9.x.

K tomu upstream Node.js vydal verzi 10.x jen několik dní po vydání Fedory 28. V minulosti by uživatelé, kteří chtěli nasadit tuto verzi, čekali až do vydání Fedory 29, nebo použili zdroje mimo Fedoru. Nicméně znovu díky Modularitě je Node.js 10.x už dostupné v repozitáři Modular Updates-Testing pro Fedoru 28.

Review Board

Review Board je populární aplikace, napsaná v Djangu, na přezkoumávání kódu. Fedora obsahovala Review Board od Fedory 13 až po Fedoru 21. V té době Fedora přešla na Django 1.7. Review Board nebyl schopný držet krok kvůli zpětně nekompatibilním změnám v podpoře databází v Djangu. Balíček zůstal v EPELu pro RHEL/CentOS 7, ale jen díky tomu, že tato vydání zůstala zmražená na Django 1.6. Nicméně jeho osud ve Fedoře byl očividně zpečetěný.

S příchodem Modularity ale může Fedora přinášet starší verzi Djanga jako nevýchozí modulární stream. Výsledkem je, že Review Board byl opět zařazený do Fedory jako modul. Fedora přináší obě upstreamem podporovaná vydání: 2.5.x a 3.0.x.

Skládání věcí dohromady

Fedora vždy nabízela uživatelům širokou nabídku software. Fedora Modularity jim nyní nabízí pokročilejší možnosti v tom, jaké verze softwaru potřebují. Následujících několik let bude pro Fedoru hodně zajímavých, jak začnou vývojáři a uživatelé skládat svůj software dohromady novými a zajímavými (nebo starými a zajímavými) způsoby.