čtvrtek, dubna 06, 2006

Hlas z druhého břehu

Tento BVerův text se objevil pod přispěvkem Malinkatá chybička. Myslím, že si že zaslouží širší pozornost, takže jsem z něj udělal příspěvek. --objektivní editor-- (alias jIRI)

Jsa vhozen do jedné škatule k militantním linuxářům, nemám jinou možnost než na tento emocemi nabitý post odpovědět. Konečně, Festivalu už by po čase prospěl nějaký slušný flamewar, tak rád plním jIRImu jeho nevyslovené přání :-)

Předně: v dané kauze vystupuje všemi dlouho očekávaný operační systém od dominantní firmy na jedné straně a souborový server, jenž je k dispozici zdarma se zdrojovými kódy, na straně druhé. Dále je třeba zmínit, že oné dominantní firmě už samotná existence serverového projektu vadí -- tento software umožňuje běžným uživatelům přistupovat ze stanic vybavených operačním systémem dominantní firmy k souborům uloženým na jiných systémech (zvláště pak k souborům těch operačních systémů, které dominantní firma považuje za svoji hrozbu). Daný souborový server tím podstatně zvyšuje použitelnost a užitnou hodnotu konkurenčních systémů a dovoluje tak vzájemné soužití různých OS na jedné lokální síti a tím původně dokonalou dominanci firmy narušuje. Pro úplnost je ještě třeba zmínit, že dominantní firma detaily svých síťových protokolů původně nezveřejnila, takže serverový projekt vznikl na základě zpětného inženýrství a neúplných informací o chování a analýzou síťového provozu klientů dominantního výrobce.

Řekl bych, že toto uspořádání věcí situaci značně komplikuje, protože původně ryze technický problém je posouván do roviny obchodní, filozofické, až nábožensky fundamentalistické.

Pokusím se od vyšších rovin oprostit a hodnotit otázku na ryze systémové úrovni:

Každá jednotlivá komponenta tak komplikované věci, jakou je (jakýkoliv) operační systém, by měla dělat svoji práci v rámci celku čistě, jednoduše, logicky a bez zbytečných vedlejších předpokladů. Pokud tomu tak není, je její chování komplikované, pro ostatní komponenty obtížně předvídatelné a hůře abstrahovatelné -- bezprostřední okolí, které s komponentou komunikuje, se musí jejímu chování přizpůsobovat a to vede ke zbytečným složitostem a dalším nadbytečným předpokladům. Každá složitost pak zvyšuje šance zákeřných chyb a zhoršuje efektivitu (rychlost a paměťovou náročnost). Snahou architektů je tak samozřejmě udržet systém na všech úrovních co nejjednodušší. Proto například jedno z navrhovaných řešení "systém se postará sám o chybové hlášení k směrem k uživateli a zobrazí dialog s varováním" je vadné -- síťový subsystém by tak musel mít těsné vazby na nějaký zobrazovač událostí (jenž je zodpovědný za zobrazování GUI hlášek v daném rozlišení, barvách, jazyce, atd...) a tato vazba může být zdrojem komplikací, protože cílem síťového subsystému je být efektivní a cílem zobrazovacího subsystému je být komfortní. Je evidentní, že síťová komponenta OS má problém detekovat, obejít, hlásit a zaznamenat tuto událost co nejjednodušším zůsobem (např. návratovou hodnotou volání, zápisem do systémového logu, atd.), je pak pouze a jen věcí aplikace, jestli a jakým způsobem varování prezentuje. Tedy: model toho, jak se zachovat, je plně v kompetenci softwarové vrstvy NAD síťovou komponentou OS, tedy konkrétně souborového prohlížeče. (Poznámka na okraj: Je smutné, že i technicky orientovaní lidé už dnes nedokážou rozlišovat mezi operačním systémem a jeho aplikacemi -- slíbil jsem ale, že se nyní budu držet ryze technických aspektů, takže nechci toto téma rozvíjet.)

Tolik tedy k tomu, proč "podobné workaroundy jsou cestou do pekel, a že jakékoliv jiné řešení než to "čisté" zalogování a vrácení chyby, je projevem opravdového zla", doufám, že je jasné, proč a z jakých důvodů hájím toto stanovisko.

Nyní k vyšším úrovním problému: Operační systém je v konečném důsledku komerční produkt a jako takový vzniká díky značnému úsilí technického a obchodního týmu. Obchodníci stanovují priority, celkové zaměření, look´n´feel celého produktu, měli by dobře znát cílovou skupinu zákazníků, atd. V reálném světě jsou pak požadavky dané obchodním týmem často v rozporu s prioritami technickými -- v daném případě je obchodním požadavkem zpětná kompatibilita: síťové aplikace musí fungovat úplně stejně jako na předchozí verzi operačního systému, jenž je ale zcela technicky odlišný od vyvíjeného systému. Podobný požadavek, je-li prosazen, vede k tomu, že v nenarozeném dítěti vzniká slepé střevo (bug v serverovém projektu byl už odstraněn a za několik měsíců bude workaround v OS úplně nepotřebný, zatímco OS bude udržován dlouhou řadu let, je mylné předpokládat, že uživatelé budou vadnou verzi serveru používat dlouhodobě třeba kvůli firmware v ROM). Stručně řečeno, má být odstraněna jen původní chyba a na místě, kde vznikla.

Vybalancování technických a obchodních požadavků je nelehkým úkolem hlavních šéfů -- jen oni rozhodují o tom, zda je důležitější mít technicky dokonalý OS s drobným nekomfortem, jenž časem donuti určité procento správců serverů k upgradu, nebo to, aby současní zákazníci měli snadný přechod na operační systém, jenž je vnitřně zaneřáděn od samého začátku.

Celková politika dominantní firmy je dlouhodobě zvýhodňovat obchodní priority před technickými -- jen tak dosáhla své dominance. Tato jistě úspěšná strategie nicméně vysvětluje i fakt, proč technické parametry produktů, APIs a protokolů oné dominantní firmy jsou vždy podřízeny momentálním krátkodobým trendům, proč jsou výrobky uváděny na trh se zpožděním a proč je jejich údržba často problematická.

Tímto se dostávám k předposlednímu argumentu (pokrytectví a "dělání blbců" z uživatelů): každá úspěšná firma musí pracovat s modelem zákazníka. Obchodníci operují s tvrzeními typu "tohle uživatel snese, tohle už ne", "tohle je intuitivní, tohle už ne", "tohle vypadá jako naše chyba, to není přípustné", apod. Myslím si, že model uživatele, s nímž pracuje dominantní firma, je (zbytečně) vychýlen směrem k podprůměrnému uživateli s nižším IQ. Je to logické -- lidé, kteří konktaktují uživatelskou podporu, většinou k této skupině patří a je tak výhodné ušetřit náklady, pokud jich bude co nejméně. Ona podceňovaná "mlčící většina" je ale v průměru mnohem šikovnější a schopnější, než by dominantní firma byla ochotna připustit. Což je mimo jiné i důvod, proč vůbec vznikají a jsou velmi populární projekty jako je síťový souborový systém postavený na protokolech dominantní firmy.

Tak.

Doufám, že jsem aspoň částečně vysvětlil své "svaté pravdy", které byly autorem vyjmuty z kontextu naší dlouhotrvající diskuse a lehce osprejovány narudo.

A teď si neodpustím ti tu trošku demagogie, jIRI, vrátit ve formě malé podpásovky. Jen tak dál, časem si snad opravdu nainstaluješ nějakou šikovnou linuxovou distribuci, staneš se jejím spokojeným a nakonec i pokročilým uživatelem a budeš tak schopen posuzovat a hodnotit věci i "z druhého břehu".

Kdyby totiž platil tvůj omyl, že "Linux nemá zákazníky", neuvažovali by tvůrci Visty o podpoře staré verze Samby -- nebo snad ano?

1 komentář:

Q řekl(a)...

Tedy, hezky komentar, jen male ALE.

Clovek by mel asi zacit spise od konce, mozna diky kouzlu nechteneho se podarilo vyjadrit jadro pudla ZDE:

...pokrytectví a "dělání blbců" z uživatelů...
...Myslím si, že model uživatele, s nímž pracuje dominantní firma, je (zbytečně) vychýlen směrem k podprůměrnému uživateli s nižším IQ. Je to logické -- lidé, kteří konktaktují uživatelskou podporu, většinou k této skupině patří a je tak výhodné ušetřit náklady, pokud jich bude co nejméně.....
>>>
Podle meho (a podle celkem verejneho mineni te one dominantni firmy) ma byt pocitac beznym vybavenim domacnosti a nikoliv hrackou v rukou nekolika (radoby)intelektualu, kteri si diky hrabani se v neprehlednych logach, manech a howto dodavaji pocit vyjimecnosti a alespon nejake prevahy nad tim okolnim lidskym odpadem, ktery PC - predstavte si to - chce hlavne POUZIVAT. Diky narustu mnozstvi a kvality uzivatelskych softu snad ve vsech odvetcich lidske cinnosti je PC vec, ktera by mela maximalne ulehcit praci beznym uzivatelum a ne je nutit perfektne zvladat nejake dalsi odvetvi, ktere se treba nekdy ucit ani nechteji. Bezny uzivatel je,prosim, architekt, hudebni skladatel, doktor, ale i treba ten proklinany franta s horni dolni, ktery se diva na vyvolene a pije pivo a ktery si chce precist nejake info na webu, proti kteremu je ve spravnych skupinach v mode se spravne vymezit. Tenhle uzivatel se nechce neustale hrabat nekde v zaplavach logu. Bud to proste neumi a ucit se to nechce, nebo je pro nej hledani chyby nekde v X MB textovem souboru velmi nerentabilni zalezitosti (lide jsou placeni za svoji praci a ne za praci nekoho jineho). Skoro se mi evokuje predstava ridice auta, ktery je prece naprosto nesvepravny, kdyz nezna zpameti presne pomery vzduchu a paliva striknuteho do valcu, orientacne nezna regulacni tabulky ridici jednotky a v pripade problemu s autem si nedokaze doma na koleni z RJ vytahnout pamet chyb. No a vidite - i takovi lide jezdi auty. Dekadence? Nikoliv.
Predstava, ze by timto "workaroundem" MS setril NAKLADY je zcela scestna. MS to nic nestoji, helpdesk resi regionalni zastupci (samostatne subjekty) a pripadne problemy by resil nejaky najaty admin, ktery by dostal zaplaceno a MS by na tom nebyl ani v plusu, ani v minusu.
Zajimavy je take pohled na komunitu kolem linuxu. Z mych zkusenosti vecnou slavu linuxu hlasaji pouze uzivatele opensource SW, kteri za nej nemusi nic platit a jejich (vetsinou velmi nizke) naroky na jeho vyuzivani a pak take komunita adminu, ktera si nasazovanim SW sloziteho na ovladani dokazuje, ze jeste stale k necemu je. Vyvojari uz jsou vetsinou stridmejsi. Ono vyvijet open source SW beznaroku na odmenu ve svem volnem case je vec krasna a uslechtila. Bohuzel ten volny cas a vyvojove prostredky jsou zaplaceny z casu,ktery onen vyvojar travi praci pro ty fasisticke firmy, co si za vyvoj sw nechavaji odzakazniku platit a - povazte - zdrojove kody zverejnit nechteji! V tomto kontextu mi neni take zcela jasne vyzdvihnuti toho, ze jeden ze systemu ma zverejnene zdrojove kody hned v prvni vete. Jakou vyhodu to, prosim, da koncovemu uzivateli, ktery v zivote programovani nevidel?Zvlaste vesele jsou take zminky o systemu, "na ktery se musi cekat". Je pravda,ze open source je SW neplaceny a proto za nej nikdo nema odpovdnost a nikdo nenese za nic zavazek, takze se tam nikdy a na nic neceka. Proste az se novy kernel (s uz treti verzi MemManagmentu) napise, tak bude. Budou v nem veci, na ktere cekate? Hura. Nebudou? Napiste si je, je to zadarmo,tak co chcete? Ze se release OpenOffice sliboval temer rok? Ze se nekdy slibuje tak dlouho, az se projekt zastavi? Cha, ale jdete.
Pak take nenapadne zminky o jakesi zpetne kompatibilite, ktere mi vzdy vyheveruji usmev tak vysoko, ze kdybych nemel usi, odpadne mi hlava. V teto souvislosti vzdy tvrdim, ze u linuxu jsou sources nutnosti, nikoliv vysadou. Priklad - zkuste spustit software vytvoreny na windows 95 na windows vista - uspech na 95% (zbytek jsou SW z ery DOSu s primym pristupem na porty zarizeni prelozene do okynek). Zkuste to stejne s binarkou prelozenou na slackware s kernelem 2.x a nejakou adekvatni Xlibc na nejake soucasne distre a pak mluvte o kompatibilite, prosim.
A jeste jedna malickost - ta krasa API - jen jeden krasny priklad za vsechny - cekani na zarizeni/zamek je pomerne abstraktni cinnost - cekat muzete uplne stejne na eventu, mutex, semafor i na souborovou nebo socketovou I/O operaci. Proc tedy u *nixu musite na kazdy objekt cekat pomoci jine funkce a tak se nevyhnete onem prstum zalomenym v zadku, kdy na jedno zarizeni ceka jedno vlakno, na socket druhe vlakno, na eventu od fronty dat treti vlakno a ctvrte vlakno tomu dela supervizi, kdyz u win to jde tak kraaasne pomoci jedne WaitForMultipleObjectEx()? Ano, neni nad krasu API. Pravdou jest, ze *nixy implementuji spoustu dalsich veci, ktere *win nikoliv nebo je implementuji lepe.
Co se tyce spoluprace jednotlivych vrstev - pokud maji vrstvy tvorit jednolity celek, rikejme mu treba operacni system, musi holt spolu komunikovat. Kdo prosim rozhodl, ze zapis do logu je ok, kdezto zobrazeni MsgBoxu uz nikoliv? Pricemz oboji se odehrava stejnym zpusobem, jen poslete message jinemu procesu, pokud chcete, aby SW interaktivne reagoval, posune se hlaseni do jine vrstvy (listing souboru na SMB resi az pomerne vysoke vrstvy OS, ktere jsou v prime interakci s GUI). Toto je veci designera SW a take meritu veci - orientace na cilovou skupinu, cimz se dostavame asi k poslednicasti, ke ktere bych chtel neco rict.
Totiz tlachy o "technicke dokonalosti" a podobne. Ono mit super technickou vymozenost, makat na malinkem kousku kodu a nikdy ho nepustit do uzivani, protoze vzdycky, kdyz ten kus dopisu, tak zjistim, ze jsem to mohl udelat jeste o neco lepe je myslenka zcela kontraproduktivni. Stejne tak i myslenka "nejak to tedka upatlam, hlavne at to funguje a co bude za tyden at vezme cert" - to je pouze druhy extrem stejne veci. Bylo spravne receno, ze je treba najit kompromis, ktery umozni pouziti softu "cilovymi uzivateli", kteri jsou ale u kazdeho z nich ponekud jini, zaroven umozni jeho budouci modifikovatelnost a jeste ke vsemu by mel designerovi zpusobit radost, ze to udelal hezky, elegantne a ciste. Nicmene "ciste a elegantne" naprosto neznamena a ani NESMI znamenat, ze preneseme nekterou z cinnosti vyvojare na koncoveho uzivatele - napr. pri zjisteni nefunkcnosti nechat uzivatele tapat a hledat v logu jestli a kde chyba byla. Vyvoj softu uz leta jde presne opacnym zpusobem - pocitac je zde proto, aby za cloveka resil veci, ktere muze vykonat a nechal cloveka soustredit se pouze na to, co stroj vykonat nemuze.
Co tim vsim ale chci rict - un*xy a windows maji zcela rozdilne cilovani uzivatelu - windows jsou urceny primarne pro KONCOVEHO uzivatele, ktery chce na PC pracovat a pokud k problemu dojde, pak by o nem mel byt minimalne informovan, ale predpokladaji, ze koncovy uzivatel neumi nebo umet nechce detailne a do podrobna se stourat v ruznych nastavenich a tak se mu snazi ovladani jednotlivych dilcich celku maximalne zjednodusit. Coz ale neznamena, ze to nastavit nelze. Naopak un*xy primarne predpokladaji serverove nasazeni, kdy je pocitac povetsinou mimo kontrolu uzivatele a sam si zpracovava nektere ulohy, pokud se neco stane, pak prima informace nema smysl (kdyz u pc nikdo nesedi) a u uzivatelu se ocekava jista erudice, se kterou je schopen detailniho a syroveho nastaveni a ovladani jednotlivych casti.Soucasny prudky rozvoj unixu maji na svedomi velke firmy typu sun,IBM a podobne, ktere je podporuji jakozto vlastni reseni proti "konkurencnimu" MS (prodaji reseni za stejnou cenu a rozdil v nakladech dany NEzakoupenim dalsiho SW jim zustane) a zvolna premysleji o tom, jak tomu opensource zatnout tipec a cely vyvoj uzavrit pod sva kridla. Pro priklady nemusite chodit daleko - MySQL, castecne OpenOffice a jeho staroffice predchudce, RedHat....
Na obou systemech vice nez deset let vyvijim a oba systemy administruji a proto si troufnu tvrdit, ze mam apliakce, kam bych dal pouze windows a unixy ne a naopak aplikace, kam dam jedine unixy. Fanaticke trvani na nasazeni toho "jedineho spravneho" systemu na jakoukoliv aplikaci a jakekoliv okolnosti mi prijde stejne zvrhle, jako neustale zabomysi valky o to, jestli je lepsi ten nebo onen system a oboji povazuji za jistou zanmku rekneme "nedostatku informaci",slovu omezenost se zamerne vyhybam. Dle mych zkusenosti jsou sily v obou taborech velmi vyrovnane, oba systemy lze nastavit nebo na nich provozovat aplikace tak, ze se svoji funkcionalitou vyrovnaji, pricemz v nekterych dilcich aspektech ma navrch ten system, v jinem onen - oba systemy se stale vyvijeji a priblizuji se navzajem, ale jeste hodne dlouho to nebude tak, ze by jeden byl schopen plne nahradit druhy.
Omlouvam se jIRImu za tak dlouhy komentar, ale nemohl jsem si pomoci.