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 | czytane 11653×
KOMENTARZE
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.