č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?