Co opravdu chybí?
Nedávno jsem si přečetl článek o tom, co by open source komunita nejvíce potřebovala v roce 2008. Já vím, co by potřebovala, ale kupodivu jsem to v článku nenašel. Potřebovala by univerzální konfigurační systém. Říkáte si, aha, další utopický pokus o sjednocení? Nemyslím si, že je utopický. Udev, HAL či NetworkManager jsou příklady sjednocovacích pokusů, kdy to funguje.
Většina současných distribucí přichází s vlastními konfiguračními nástroji. Vyzkoušel jsem jich dostatek na to, abych mohl tvrdit, že žádný nefungoval spolehlivě. Alespoň ve smyslu konfiguračních nástrojů, jaké známe například z MS Windows. Nedivím se pak, když si přečtu, že GNU/Linux není stále „dostatečně jednoduchý pro obyčejné uživatele“.
Postrádáte univerzální konfigurační systém?
Nemyslím si, že použitelnost systému „obyčejnými uživateli“ je v rozporu s tím, aby byl systém použitelný zároveň pokročilými. I ti by ocenili větší spolehlivost. A ke spolehlivosti vede právě jednotný konfigurační systém. Proč? Především proto, že zamezí duplicitní práci a vývojáři budou svůj čas investovat do odstraňování chyb pouze tohoto jednoho systému. Nepřijde mi efektivní, když se nastavováním Samby zabývají jak vývojáři YaST2, Mandrivy, Ubuntu, tak i vývojáři ovládacího centra KDE (které navíc musí fungovat v různých distribucích).
Jaký by měl být?
Současné konfigurační systémy bych shrnul asi takhle: dobrá myšlenka, ale špatný návrh. Jaké vlastnosti by tedy měl mít dobrý konfigurační systém?
Univerzálnost
Systém by neměl být vázán na konkrétní distribuci, konkrétní grafické prostředí či konkrétní operační systém (jedná-li se o unixový typ). Distribuci chápu spíše jako soubor programů, které jsou navzájem vyladěny k různým účelům. Konfigurační systém by měl být pouze jedním z těchto programů.
Jednoduchost
Jádro systému, neboli framework, musí být maximálně jednoduché. Stará se totiž pouze o vnitřní komunikaci a usnadňuje vývojářům řešení častých problémů.
Modulární architektura
Systém by měl být modulární. Distribucím by se tak umožnilo vytvářet vlastní moduly, pokud by nestačily ty univerzální.
Nezávislost na jazyce
Aby nedošlo k odsouzení celého systému na základě nepreferovaného jazyka, mělo by být možné psát moduly v jakémkoli jazyce – podobně, jako jsou backendy tiskového systému CUPS obyčejné procesy komunikující s CUPS pomocí standardního vstupu a výstupu.
Architektura klient-server
Konfigurační systém by měl být rozdělen na výkonnou část a množství uživatelských rozhraní. Napadají mne tato rozhraní:
- rozhraní pro příkazovou řádku
Je nesmírně důležité, aby šlo ovládat nastavení systému z příkazové řádky. Co je platné, že je NetworkManager klient-server, když chybí konzolový klient?
- rozhraní v textovém režimu
Pro ty, kteří nepreferují X Window System ani příkazovou řádku, by měl existovat nástroj v textovém režimu. Mimochodem, velmi bych uvítal, kdyby prožil renesanci TurboVision – okna v textovém režimu – port na Linux existuje. Ve srovnání s ncurses se s nimi pracuje pohodlněji, a jestli se někomu nelíbí jednotná grafika, tak je jistě prostor pro implementaci „skinů“.
- rozhraní v grafickém režimu
Teoreticky by mělo být možno systém koncipovat tak, aby prvky formulářů diktoval přímo server, takže by bylo uživatelské rozhraní do značné míry automatické.
- webové rozhraní
Znáte Webmin? Jedná se o webserver, který umožňuje nastavovat počítač přes web. Myslím, že webové rozhraní není špatný nápad, ačkoli uznávám, že dnes máme vzdálenou plochu. Jenže – připojíte si ji na mobil? Webmin však není webovým rozhraním podle mých představ. Jeho CGI moduly přímo „kreslí“ formuláře, čímž jsou svázány jen s použitím přes web.
Závěr
Ano, tento článek neměl za úkol způsobit žádný převrat. Rád bych pouze inicioval vytvoření výše načrtnutého systému. Určitě jsem neuvedl všechny vlastnosti, které by měl mít, takže bych byl rád, kdybyste se podělili i o své návrhy. Určitě by stálo za to vyjít třeba z Webminu a vypreparovat z jeho modulů funkční části. Systém však musí být komplexní, podobně jako YaST2, který nabídne instalaci balíčku, hodláme-li konfigurovat něco, co není nainstalováno.
Neznám interní procesy v YaST2, ale určitě by se v něm také našlo mnoho inspirace. Podobně by měl systém umět to, co dnes dělá NetworkManager, který by se stal jen jedním z modulů. A dále prostě vše, co souvisí s konfigurací operačního systému.