Proč a jak věnovat čas tvorbě nové distribuce?

Byl sem požádán o článek na téma co člověka vede k tvorbě nové distribuce a jak taková tvorba vypadá. Nejsem si jist, zda je možné tuto problematiku alespoň nakousnout, nicméně pokusím se o nástin důvodů a praktik, se kterými se takový autor distribuce teoreticky může potkat.

10.8.2006 06:00 | Ondřej Tůma | přečteno 11494×

Proč ?

Základním kamenem vzniku nové Linuxové distribuce je impulz, který nám na tuto otázku nějak, i když možná obtížně odpoví. Pokud něco tvoříte, bez ohledu na to, jak velký rozsah váš výtvor má, musíte vědět proč to děláte. Někdo to dělá z nudy, jiný z ukvapenosti, někdo pro své ego, někdo pro zpestření svého života, jiný prostě proto, že mu taková věc chybí a nebo je člověk prostě blázen. Rozeberme dva poslední důvody, pokud je člověk blázen, nemá cenu cokoliv řešit. Zbývá tedy základní kámen většiny výdobytků moderního světa. Dělám něco, co je jiné (rozumněno lepší), než co už někdo vytvořil. V případě větších projektů, jako je Linuxová distribuce, ovšem člověk stejně musí být blázen!

Zaměříme se tedy na tvorbu samotné distribuce. Otázka je, zda je vůbec možné vytvořit distribuci, která by byla ideální - odpověď je jednoduchá, není. Tedy tvorba distribuce je zaměřená pro nějaký konkrétní důvod, konkrétní účel. Těchto důvodů může být a také je opravdu mnoho. Od přilákání uživatelů komerčních systémů, přes zviditelnění některých programů až po někdy jednoúčelové distribuce. A protože u včel svědí pro všechny, je účel nejsilnějším hnacím motorem.

Blackmouse něčím novým?

Vycházejme z teze, že na trhu je vše co je třeba. Máme tu klikací distribuce, které snadno obslouží i absolutní nováček ve světě Linuxu, tím spíše ve světě počítačů. Máme tu specializované distribuce pro firewally a routery. Na trhu je i mnoho distribucí, určených pro absolutní guru, jenž cokoliv co dělají, dělají už po tolikáté, že jde o nudnou rutinu. Otázka je, proč nepoužívat něco co je hotové, ověřené, připravené. Odpověď je prostá, není nic co by opravdu vyhovovalo. Když jsem začínal uvažovat o vlastní distribuci, položil sem si nelehký úkol. Vytvořit něco co je přehledné, čisté jako běžné guru distribuce, ale zároveň uživatelsky přívětivé jako distribuce "klikací". Nastavení těchto dvou priorit napovídá, že jde o velký kompromis. Mnoho autorů se o tentýž problém pokoušelo, ale kompromis je silný nástroj, který prostě nejde obejít. Vždy vyleze něco, v čem se snadno ztratíte, nebo kde cokoli co nastavíte, je dost složité na to, aby to průměrný uživatel pochopil. Cílem distribuce Blackmouse je tedy pravděpodobně dát průměrným uživatelům něco, co by pochopili a přesto by to bylo dostatečně prosté.

Pokusím se problematiku klikacích a guru distribucí vysvětlit na následujícím příkladu. Operační systém jsou takové velké hodiny. K jejich nastavení a udržení v chodu je vždy třeba nějaký ten um. Pokud vycházíme z toho, že k určení hodin, nám stačí počítat výkyvy nějakého kyvadla, spokojíme se s tím, že se budeme starat jen o to, aby se kyvadlo hýbalo ve správném rytmu a budeme počítat. Tedy obrázek toho, jak může vypadat guru distribuce. Administrátor prostě zná problematiku dokonale, ví kde a jak zatlačit, aby vše fungovalo správně. K tomu je ale nutný cvik a um. Na druhou stranu takové nástěnné hodiny mají dost ovládacích prvků na to, aby běžný uživatel pohodlně hodiny prostě natáhl nebo v nich vyměnil baterie a ony prostě fungují. Není třeba být fyzikem a matematikem, který počítá sílu a periodu kyvadla. Prostě takový fyzik a matematik (hodinář) takové hodiny sestaví.

Otázka kompromisu

Každý autor distribuce (tedy dle mého názoru) řeší snad nejzásadnější problém. Kam nastavit pomyslnou hranici automatičnosti. Vycházejme z toho, že většinou od systému vyžadujeme několik základních věcí. Tou nejzákladnější je provoz. A provoz v různém prostředí v různých podmínkách k různému účelu. V podstatě systém musíte nastavit, on musí fungovat a nastavení musí být opravitelné. Nastavujeme grafické prostředí, nastavujeme síťové prostředí, nastavujeme služby, nastavujeme periférie. Instalujeme a používáme, zkoušíme a upgradujeme na novější, lepší a pomalejší verze.

Tedy takový administrátor systému provádí se systémem řadu operací, v některých případech velmi často. Navíc případ od případu se liší. Je tedy třeba vytvořit, nebo použít dostatek nástrojů, které by tyto operace usnadňovaly a zjednodušovaly. Ovšem cokoliv co něco dělá za nás, někdo naprogramoval a nejde o základní operace sčítání dvou čísel (i v tom se dá nasekat chyb :)). Tedy použijeme něco co vytvoří jakési táhlo mezi administrátorem a systémem. Problém je, že čím větší počet takových táhel, tím větší šance vzniku chyb. Nejde o praktické fungování, jde o teorii. Každé táhlo, které v systému funguje, budeme jednou chtít vylepšit, zpravidla to, které funguje opravdu bezchybně a opravdu dlouho. A právě to které je nejdůležitější. V každé distribuci se tedy musí vyřešit právě tato táhla. Musí se stanovit co všechno bude muset administrátor znát a co pro něj bude "zbytečné".

Použité technologie

Pokud to s novou distribucí myslíme vážně, musíme tedy spočítat, kolik času chceme do tvorby vložit a jaký užitek nám to přinese. Pokud chceme opravdu novou distribuci, musíme to vzít od základu. Distribuce je v první řadě symbióza jádra a některých pomocných programů, které se starají o start a běh systému. Jde tedy o jádro, a soubor právě těch nejdůležitějších táhel. V systému ale budeme chtít používat nějaké programy, ať už to budou servery, nebo jen klientské aplikace. K udržování těchto programů budeme potřebovat nějaký systém. Budeme muset určit nějaká jasná pravidla. Už tady je tedy zřejmé, že budeme muset nejednou měřit a o to méně řezat.

V Linuxu se o start systému stará init. Jde o speciální proces, který vlastně připojí k systému disky, spustí patřičné služby, programy a démony. Přesněji řečeno tento proces jen zavolá patřičnou sérii skriptů, které se o dílčí věci starají. A protože start systému je obvykle to nejdůležitější, je třeba k němu přistupovat s velkou vážností. Init systémů je celá řada, pracují s různými vymoženostmi a jsou různě šikovné. Je tedy třeba zvážit ten nejpřijatelnější.

Instalace a upgrade software je zásadní část administračního procesu. Každý systém obsahuje hromadu různého software a ten je třeba udržovat v rozumně aktuálních verzích. Na serveru je třeba udržovat krok s opravnými aktualizacemi, na desktopu zase budeme vyžadovat poslední funkčnost od našich oblíbených programů. Tedy je zřejmé, že instalací to nekončí. Každá distribuce se musí vypořádat s nejhorším, tedy s hlídáním závislostí programových balíčků. Dnes existuje celá řada různě složitých, různě kvalitních, ale především různě odvozených systémů, které umí kontrolovat tyto závislosti. Je ale třeba kontrolovat i případnou modifikaci programů po instalaci. Tedy na serveru se čas od času hodí ověřit, že všechny soubory, nainstalované z nějakého balíčku nám nikdo nezměnil, a jsou to opravdu ty, které v systému chceme mít. Jinak řečeno výběr balíčkovacího systému je také velmi důležitý.

Vize distribuce

Výběr toho dole v distribuci je základní a velmi důležitý. Ale v případě, že budeme tvořit distribuci pro víc něž účel routeru, nebo firewallu, budeme muset uživatelům přinést také nějakou vizi toho, jak bude naše distribuce využívána, jaké kombinace programů budou námi doporučeny, jakým kombinacím budeme spíše poskytovat "support". V případe nějakých serverů to pravděpodobně bude nějaká kombinace správy uživatelů mailových, ftp a jiných diskových služeb. Desktop bude seskládán z nějakého předvoleného grafického prostředí a budou pro něj připraveny programy z řad mailových, webových a komunikačních klientů. Textových a grafických editorů.

I přes to, že můžeme nechat všechny rozhodovací mechanismy na klientovi, dá se očekávat, že budeme muset sami kompilovat všechny programy, musíme tedy vědět jaké. Měli bychom mít přichystané různé nejpoužívanější modely využití naší distribuce. Desktopovou zaměříme na práci s uživatelskými daty, obsluhou počítače v grafickém prostředí, naopak serverovou na práci s uživateli, a obsluhou spíše v konzoli, nebo přes nějaké webové rozhraní.

Vlastní obohacení distribuce

Tyto aspekty budeme potřebovat k další vlastní práci na naší distribuci. I když se na distribuci budeme dívat, jako na systém slepený z mnoha menších dílčích systémů a programů. Pravděpodobně budeme chtít distribuci obohatit o vlastní programové nástroje, které budou šité na míru k práci s naší distribucí. Budeme chtít, aby distribuce byla nějak přednastavená. Třeba pokud se uživatel přihlásí do svého desktopu, budeme mu implicitně chtít ukázat na ploše právě naše pozadí. Nebo co více, budeme mu chtít umožnit instalaci programových balíčků do naší distribuce přímo v grafickém režimu. Naopak, u serveru budeme chtít být o něco bezpečnější, něž nám to umožňují implicitní konfigurace služeb.

Dá se říci, že čím více budeme stavět od začátku, čím více budeme kombinovat systémy a programy, které se zatím moc nekombinují, tím více budeme muset uživatelům pomoci s propojením těchto systémů. A k této pomoci bude určitě potřeba celá řada skriptíků, které budou dělat to či ono tak, aby to fungovalo.

Dokumentace, instalace a co dál?

Vytvoříme vlastní distribuci. Tam, kde se nebudeme trápit programováním, potrápíme se dokumentováním. Je třeba, aby jakýkoliv uživatel, který bude chtít naši distribuci použít, se v ní alespoň trochu zorientoval, včetně nás samotných. I zkušený uživatel nemusí hned zprvu pochopit naše adresářové uspořádání. Nebo některé skryté vazby. Distribuci bude třeba nainstalovat a to se bude pravděpodobně provádět z nějakého instalačního CD. Toto CD bude muset také někdo vytvořit, kdo to asi bude. Ale hlavně, co to CD všechno bude umět?

I přes všechna trápení s celou distribucí, na konci se dostáváme opět na začátek našeho problému. Proč? Pro koho? K jakému účelu? Pokud tvoříme malinkatou distribuci pro naše routery a pustíme ji světu, asi tím naše starosti končí. Pokud ale budeme chtít tvořit nějakou větší distribuci, budeme se muset starat o aktualizace, byť by byla distribuce určena jen pro naše servery či desktopy. Ale pokud chceme tvořit distribuci pro lidi, asi by bylo vhodné jim zajistit nějakou podporu. Ne jen aktualizace a dokumentaci, ale i e-mail, ICQ nebo telefonní číslo, na které budou moci zavolat.

Linuxová distribuce, i když jí tvoříme v naší volné chvíli pro naše kamarády, je pořád projektem, který potřebuje plánování, řízení a správu. Jde o produkt, který zasáhne do trhu, ať už málo, nebo hodně. Jde o produkt, který potřebuje marketingový i finanční přístup a to i třeba v malé míře. Toto je nutné si uvědomit hned na začátku. Možná si totiž potom rozmyslíme, jestli nebude přeci jen lepší ochočit si nějakou již hotovou distribuci. Nebo si jen malinko přiohneme pár konfiguračních souborů, a ty pak po nové instalaci použijeme. Všechny tyto aspekty musíme zvážit. Protože každá distribuce, aby byla opravdovou, musí mít vedle svého tvůrce i uživatele. A uživatelé potřebují tvůrce, aby ho zahlcovali zbytečnými dotazy. V ideálním případě má distribuce ne jen dostatek uživatelů, ale i dostatek tvůrců.

Než tedy začnete přemýšlet o vlastní distribuci, věřte, že BlackMouse není jedinou distribucí, která se vyvíjí a která čeká možná na vaše nápady a na vaše příspěvky. Zkuste se tedy rozhlédnout, zda by nestačilo jen pomoci autorům právě té vaší distribuce.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=1297