Ještě si dovedu představit jeden druh rozhraní: Vzdálené grafické. Byl by to tlustý klient a připojoval by se (přes SSH, TCP nebo HTTP) ke spravovanému systému. Dal by se tak spravovat i lokální systém - výhodou by bylo, že GUI aplikace by nemusela běžet pod rootem.
Jako ideál bych viděl XML konfigurační soubory, nad kterými si napíše kdo chce co chce (rozhraní). A chtělo by to přidat tyto vlastnosti: Překrývání uživatelským nastavením - některé vlastnosti by si mohl předefinovat uživatel, ostatní by se braly ze systému. Verzování - celé /etc by se mohlo spravovat třeba pomocí subversionu, správce by pak viděl, co kdy změnil a nemusel by si psát nějaké trapné komentáře. Taky by bylo možné se při chybě snadno vracet zpět k fungující konfiguraci.
Vazne chceme navrhovat GUI v konfiguraku? ;-)
A co Firefox, Thunderbird ad. (byv. Mozilla)? Ty maji GUI v XUL (XML User-interface Language). IMHO nevypadaji az tak spatne ;) Nad takovym abstraktnim prostrednim se pak muze napsat jiz jakykoli klient (GUI/TUI, lokální/vzdálený), ktery "pouze" prelozi XUL do GTK/QT/Widli.
Tahle myslenka neni az tak spatna, vyuziva moderni prostredky a prinesla by potrebnou flexibilitu. O "hezkost" prostredi bych se az tak nestaral - jestlize lze navrhnout hezke prostredi primo v programu, pujde to i pomoci strukturovaneho jazyka XML.
Ad redundance - pokud bude konfigurace jednotna, standardizovana a snadno udrzovatelna, mozna par bajtu navic neni tak strasnou cenou.
A proč pořád ty textové soubory? Jak se udělá validace? Kvůli tomu budeme něco programovat? Proč nepoužít XML a schémata, kde validace funguje sama od sebe? Problém obyčejných textových souborů je rovněž v nemožnosti vyjádřit složitěji strukturovaná data.
U textu nemám možnost formální validace - to je jasné. Na druhou stranu formální validace v XML je pro řadu vazeb nedostatečná (vím o čem píši, pár xml schemat už mám za sebou), nad formální XML validací ještě občas potřebujete další aplikaci. Dost dobře vím, co se dá schématem vyjádřit a co ne. Jinak, tam kde je potřeba vyjádřit složitější strukturu, tak tam už se XML dávno používá. A ohledně výhod plain textu - snažší vyhledávání, editace, diff. Někdo rád gedit, jiný vim, třetí emacs nebo joe. Prostě Vám nikdo nenutí, co máte používat.
Non BFU se od BFU liší hlavně v tom, že BFU neví, co dělá - zkouší to. I když nakliká formálně správnou validací, tak to neznamená, že neudělal kardinální blbost. Proto se používá plain text, pro zkušeného uživatele je řádově správa jednodušší a efektivnější než GUI. Na druhou stranu je to tragédie pro BFU. Pravda je taková, že BFU nemá co konfigurovat comp. Ten ho pouze používá.
Ale prispeje. Mit kod cisty znamena nadrit se mene v budoucnosti, a tedy usetreni na nakladech. Ale pokud firma planuje 1 max. 2 verze dopredu, jak je tomu obvykle, tak tuhle usporu nemuze nikdy spatrit. Vzdycky se s tim pak radeji vyporadaji tak, ze sezenou vic vyvojaru, kteri to nejak pro tu chvili zbastli. OSS vyvojar predpoklada, ze jeho SW tu bude vzdycky, takze muze venovat vic casu na cisty kod, lepsi pomocne nastroje ke svemu projektu apod.
Nerikam, ze neco je lepsi nez to druhe. Trh optimalizuje na tak sotva 3 roky, a jsou k tomu dobre duvody (po 3 letech uz muze byt firma mrtva). OSS vyvojar je na trhu nezavisly, tak optimalizuje na delsi obdobi. Ale je jasne, ze na cim delsi obdobi optimalizujete, tim efektivnejsi jste (pokud ovsem udelate spravne predpoved, coz je stale vetsi problem pri delsim obdobi). Naopak tvrzeni o tom, ze je neco efektivni, bez uvedeni casoveho horizontu pro ktery se optimalizuje, nedavaji smysl.
Já bych do toho šel, stejně mám vedle studia až moc času...-- go johnny go! ne vážně, jděte do toho! jestli budete stát na začátku vývoje jako iniciátor, a pokud se to opravdu solidně povede, veřejně se zavazuji, že až mi to poběží na desktopu, tak vám posílám 500 euro-dolarů :-}
echo "domena.cz" > /setup/apache/add_virtualhost echo 1 > /setup/apache/reload if cat /setup/apache/virtualhosts | grep "domena.cz"; then echo ok ; else echA nestaral se, že byly provedeny editace na těch a oněch místech. Záleželo by na použitém modulu; jeden modul by přidával virtuální domény jinak než druhý. Cesty toho virtuálního FS by však byly totožné. Téhož by využil jak BFU u konzole, tak GUI aplikace. Konfiguraci byste ale zálohoval úplně stejně jako dosud - zatarováním /etc. Stejně tak verzování konfigurace (jak tu někdo navrhoval používat Subversion na /etc) - proč ne.
GNU/Linux nič nevnucuje. Jeho akademická sloboda je presne to, čo mnohým v práci chýba a práve to robí GNU/Linux skvelým. To však automaticky znamená, že sa stáva použiteľný len pre úzku komunitu ľudí.
Je to ako keď umelci vo svojom voľnom čase tvoria diela pre vlastné potešenie. Vzniká tak umenie pre umenie, ktoré si veľmi ťažko získava priaznivcov medzi bežnými smrteľníkmi. To však ani nebol účel. Keď budete nútiť akademických maliarov kresliť portréty, krajinky a reklamné plagáty, pretože to je presne to, čo sa obyčajným ľuďom páči, tak asi ťažko prídu s niečim revolučným.
Širšie masy ľudí nikdy neakceptujú nové veci, pokiaľ sa aspoň čiastočne nedržia nejakého štandardu, či už certifikovaného alebo nie. GNU/Linux však už dávno nie je len akademickou hračičkou pre študentov informatiky. Nedobrovoľne sa z neho stal marketingový nástroj veľkych IT firiem, ktoré si chcú znovu dobiť stratenú pozíciu na trhu. Z umenia pre umenie sa stáva umenie pre masy...
Máme teraz na výber. Buď sa budeme nečinne prizerať ako zopár firiem bastlí našu hračku svojimi štandardami, alebo im vnútime vlastné štandardy, kým nebude neskoro. To sa sa samozrejme netýka len konfiguračného systému.
ma jedinecnou syntaxi jako kazdy jiny konfigurak
tech stylu je do desitky. Jsou navrzeny tak aby se snadno strojove zpracovavali, co radek to urcita skupina hodnot separovana urcitym symbolem, ktery se v dane domene nemuze objevit. Proc by mela byt stejna syntax pro seznam uzivatelu a napriklad pro mountovane disky. Univerzalni syntax by znamenala urcite unifikaci, ale take by komplikovala strojove zpracovani
pripadny parser nebo nastroj na jeho automatizovanou zmenu neni znovupouzitelny, ale jednorazovy
Aby si ti panove, co vynalezali UNIX usetrili praci, tak vynalezli regularni vyrazy, proudove editory, preprecosory a dalsi nastroje, ktere velice snadno lze k tomuto pouzit. Urcite sed nebo avk nebudete povazovat za jednorazovy nastroj
"xml a textaky je neco jako standardni programovani a objekty - objekty jsou pomalejsi, narocnejsi, slozitejsi, ale jsou univerzalni znovu pouzitelne a umozni vam pracovat na mnohem narocnejsich ulohach - ano program stejne urovne slozitosti bude nejspis efektivnejsi bez nich, ale vyse se dostanetejenom tezko""Objekty" bych do toho netahal, a už vůbec ne tímhle způsobem, takhle to vyznívá, že existuje nějaká jednorozměrná stupnice kvality programovacích technik a "objekty" jsou na ní výše a cokoli ostatní níže, což asi nemusí být nezbytně pravda, že. :-) Navíc opravdové objektové jazyky (jsou v zásadě jen dva) se dneska stejně moc nepoužívají.
Hlavní problém je přece v návrhu nástroje a jeho GUI, aby dával uživateli jednoduchý obraz na složitý konfigurák a aby mu nedovolil zadávat nesmysl, pokud se to zjistit dá.Co je proboha na na textovém konfiguráku složitého? Pominu-li stařičký Sendmail, je to povětšinou prostý seznam parametrů a hodnot, maximálně dělený do kapitol, navíc doplněný nápovědou. Co může být jednodužší? Problém je vědět, co ty parametry a hodnoty znamenají a v tom žádné GUI nepomůže. A pokud to vím, musím se ještě správně rozhodnout. Kontrola může být maximálně formální. Jinak by počítač musel věděl, čeho chci dosáhnout.
Konfigurace má několik stupňů:
- základní konfigurace systému: ta je i v Linuxu provedena automaticky - pokud tomu nějaký nepodporovaný hardware nezabrání.
- nastavení pracovního prostředí, nástrojů a uživatelských programů: toto je jediná část pro běžného uživatele a pro ní GUI má. (Ovládací centrum, YAST a pod., nastavení v programech).
- konfigurace serverů: tady nemá BFU co pohledávat! (Pro informatiky-specialisty).
- běžná správa serverů: přístupná z části i pro poučené či vyspělejší uživatele - jinak pro běžné informatiky.
Je na tom něco špatně?
Ten "nějaký vlastní jazyk" je značně úsporný, generuje kompaktní bajtkód, je léty prověřený a funguje.Jo, funguje. Možná je jeho bajtkód kompaktní, ale na starších počítačích IMHO příliš rychlý nebude (budu rád, pokud mne příště "uzemníte" nějakým důkazem, ne nepodloženými tvrzeními).
proč by měli dělat práci za jiné distribuce?A proč by nějaká firma měla dělat svůj software "ohleduplný" a podporující jiné platformy? Měli bychom raději všichni aktivně bránit naše intelektuální vlastnictví.
ale na starších počítačích IMHO příliš rychlý nebude (budu rád, pokud mne příště "uzemníte" nějakým důkazem, ne nepodloženými tvrzeními).Hlavně že Vy mě "uzemňujete" tunami důkazů a ne jen dohady. Tak namátkou - timing načtení konfigurace různých modulů a její uložení na počítači s 1GHz procesorem:
# time yast users real 0m5.857s user 0m3.152s sys 0m0.680s # time yast lan real 0m4.339s user 0m2.464s sys 0m1.180s # time yast disk real 0m6.791s user 0m2.928s sys 0m1.524s # time yast repositories real 0m5.038s user 0m1.756s sys 0m0.804s # time yast sshd real 0m10.861s user 0m0.616s sys 0m0.136s # time yast mail real 0m10.226s user 0m3.180s sys 0m1.188sTak to je opravdu strašně náročné. Naparsovat konfiguraci, prezentovat uživateli, znova ji uložit. S transakčním zpracováním všech operací a důkladnými logy na požádání. U většiny věcí pod tři sekundy User CPU time na stroji, který bych koupil jako poslední výkřik techniky někdy v roce 2001, možná. Nechci prudit, ale Vy asi musíte Novell hodně nenávidět.
Vy jste, s prominutím, kus vola. Různé distribuce různě balíčkují různý software, mají vlastní defaultní konfigurace a tak, a Vy čekáte, že vývojáři SUSE budou procházet /etc jiných distribucí a dělat switche v SCR agentech, podle toho, jak se třeba frantík v Mandrive zrovna vyspal a rozhodl se rozdělit nebo nerozdělit httpd.conf na tři, sedm nebo deset souborů a jak vyřešil vhosty? Vývojáři YaSTu velmi úzce spolupracují s balíkáři v SUSE. Budete po nich chtít, aby začali totéž řešit s balíkáři jiných distribucí? Právě proto, že tohle je "distribučně závislá" věc. To už můžete rovnou obvinit Debian z toho, že jeho /etc strom není ohleduplný k YaStu. To, že si distribuce, která chce YaST používat, vyhradí pár lidí na to, aby nejnižší konfigurační vrstvu YaSTu nasadili nad vlastní konfiguraci, je jediná možnost.proč by měli dělat práci za jiné distribuce?A proč by nějaká firma měla dělat svůj software "ohleduplný" a podporující jiné platformy? Měli bychom raději všichni aktivně bránit naše intelektuální vlastnictví.
není žádná vrstva mezi GUI a konfigurákemAsi byste si měl něco přečíst, než něco takového vypustíte z úst...
echo "domena.cz" > /setup/apache/add_virtualhost echo 1 > /setup/apache/reload if cat /setup/apache/virtualhosts | grep "domena.cz"; then echo ok ; else echo fail;Totéž by mohl provést člověk přes konzoli, GUI i TUI aplikace. Pokud by bylo možné připojit virtuální systém po síti, pak i na dálku. Vůbec bychom nemuseli vědět, že na jednom stroji bylo provedeno deset fyzických akcí, na jiném dvacet - záleželo by na použitém modulu, cesty ve virtuálním filesystému by byly identické. Daemon konfiguračního systému, by byl velice jednoduchým frameworkem, který by na základě registrovaných modulů pouze vyráběl virtuální filesystém a staral by se o vzájemnou komunikaci, řešil zachycování chyb, logování a podobně. Zejména to unifikované logování by bylo velkým přínosem.
# mkdir /setup/apache/virtualdomains/domena.cz # ls /setup/apache/virtualdomains/domena.cz aliases ip rewrite_rules access_rights
cat postgresql/default/mojedb/current_locksPrakticky si pod tímhle představuji, že daemon spustí nějaký skript z modulu, který je registrován pod klíčem "postgresql". Skript získá informace a vráti je daemonu zpět. Daemon je pak vystaví jako soubor current_locks na virtuálním FS. Ještě hezčí přístup by byl
# ls postgresql/default/mojedb/current_locks/ # lock1 lock2 lock3 lock4 # cat postgresql/default/mojedb/current_locks/lock2Pak je ovšem nutné vyřešit, aby šlo pracovat nejen s jednorázovými požadavky typu "zápis do souboru - čtení souboru", ale i se streamem, tj. stálým propojením vstupu a výstupu nějakého toho skriptu s položkou ve virtuálním FS. Taktéž je nutné vyřešit zamykání, protože při přístupu "zápis do souboru - čtení ze souboru" se může stát, že v mezidobí přijde jiný proces, který data přečte. Možností je víc, třeba uchovávat, který proces zapsal a jen ten by mohl přečíst (pak je ale problém s vlákny, to už by si asi proces musel řešit sám). Nebo duplikovat výstup pro víc "čtenářů", atd. Nebo by daemon mohl vyrobit unixový socket, ale to není úplně user-friendly a navíc by pak takový virtuální FS nešlo používat vzdáleně.
SCR agenty AFAIK nejsou objektové. V podstatě se jedná o několik funkčních volání, z nichž některá přijímají cesty podobné CIMu. Nevidím kupříkladu zásadní problém v tom, aby z Bashe šlo přistupovat přímo k SCR. V úplně nejhorším případě se do Bashe dá načíst malá dynamická knihovna, ale samotné SCR agenty by měly být samostatné programy, které lze patřičným způsobem spustit z čehokoli. (Z hlavy tohle bohužel přesně neřeknu, musel bych se podívat, od které úrovně je standardizované jejich rozhraní, ale jak říkám, malá knihovna v Cčku načítaná do Bashe to jistí, to rozhraní nemůže být nijak složité.) Jak vidíte na uvedené stránce, po objektech (ve smyslu OOP) ani památky - zavoláte funkci a případně jí předáte nějaké ty parametry. :-) Pravda je, že na některých místech mohou nastat problémy, hlavně proto, že Bash nemá například hash tables. Některá SCR volání nevracejí jen skalární hodnoty, třeba agent pro .etc.passwd vrací "seznam slovníků" (v pythoní terminologii).
V současnosti je SCR agentů poměrně dost. Něco jsou věci specifické pro SUSE, ale spousta by jich asi fungovala všude out-of-the-box nebo jen s mírnými úpravami. V případě potřeby se dají dopsat další. Co agenty neošetřují, to je transakční vrstva. Ta je v hierarchii vrstev YaSTu trošku výše. Nicméně i tak mi přijde, že je to přinejmenším docela zajímavá inspirace. :-)
Právě že ta svoboda jazyka je u modulů nutná, jakmile by měly být jedině v C, tak je většina lidí nebude umět napsat, ačkoli mohou být dobrými programátory. Osobně preferuji unixový přístup STDIN-STDOUT, a to zvláště proto, že by se tak moduly velmi dobře testovaly (třeba CUPS backendy jsou také běžné spustitelné soubory, které mají definované argumenty+vstup+výstup; když cups netiskne, je kolikrát fajn, že lze spustit backend ručně, případně i přes strace).
Pod pojmem "modul" myslím adresář, který by obsahoval jak spustitelné, tak nespustitelné soubory. Ty spustitelné by mohly být napsány třeba v C nebo by to mohly být i skripty (díky shebang hlavičce je to jedno). Jejich úkolem by bylo provádět akce na základě čtení či zápisu do virtuálního filesystému. Statické soubory by byly různá metadata.
Daemon by pak, podle přístupu do virtuálního filesystému, rozhodl, na který spustitelný soubor je virtuální cesta namapována, spustil by ten program a provázal jeho stdin/stdout s virtuálním souborem.
Daemon by se rozhodoval podle mapy "virtuální cesta - program". Tato mapa by mohla být definována jak ve statických souborech, tak i generována dynamicky - například pro virtuální cestu /setup/network/eth0. Ačkoli většina mapování by šla zvládnout regulárními výrazy.
Příklad:
cat /setup/pgsql/current_locks
Někdo, kdo by měl jinou verzi Postgresu, by měl pod klíčem "pgsql" registrován odlišný modul. Též by provedl "cat /setup/pgsql/current_locks", ale odlišný modul by, samozřejmě, provedl jinou činnost.
---
Co se týče uživatelského rozhraní, o němž jsem psal, že by mohlo být generováno i automaticky, součástí modulu by tedy byla metadata pro tvorbu formulářů. Tento soubor by daemon exportoval stejně jako jiné soubory, třeba jako /setup/network/ui.xml. Záleželo by pak na aplikaci, zda definice využije nebo ne.
Zdá se mi, že to vlastně vůbec nebude složité ;-)
Ještě je nutné vyřešit zámky při přístupu do souborů, práva či stream (tj. že by program z modulu zůstal spuštěn a zpracovával by více požadavků, jako server). A určitě pár dalších věcí.
---
pozn. Proč by tohle nemohlo být tak, že by místo FUSE byly na těch místech přímo spustitelné programy? a) nebylo by to dynamické, b) nebylo by to použitelné přes síť
sorry tohle jsou nazory nahovno
Hlavně že vy máte hovno... ehm, názor.
tak treba klikaci nastroje funguji jenom s necim, kdyz jsem se opovazil nainstalit jinej okynkovac vsechno prestalo fungovat
Což jste samozřejmě nahlásil do příslušné bugzilly, aby to mohl někdo opravit, že ano?
co se tyka sjednocovani, TO UZ JE POZDE VAZENI
Souhlas. Kromě toho, že je to nesmysl (tj. obecné sjednocování na úrovni distribucí), je to zcela nereálné. Mimochodem, tohle přesně jsem také říkal. Děkuji, že se mnou souhlasíte.
kua proc linuxu vlastne rikate system
Linuxu říkáme jádro:-)
nemelo byti dopusteno nejake rozdeleni
Já mám opačný názor. Jednak je celý princip FOSS a GNU/Linuxu založený na svobodě a otevřenosti, takže něco takového vůbec nepřipouští, a pak, je to právě možnost jít jinou cestou, která dnes dává takovou možnost volby, jaká v oblasti operačních systémů nemá obdoby. Jistě, spolu s tím jsou spojeny i nevýhody, ale od toho tu přece máme jiné systémy, které jdou jinou cestou.