• TwitterRSS
  • Domů na Webylon
  • Blog
  • Psí život

    27. dubna 2005

    Dne 21. března 2005 napsal David Grudl pár pěkných slov o Webylonu na svém weblogu La Trine. O den později znovu. Rozebíral především téma validity kódu a kritizoval mnou navrhované řešení nekompatibilit [W.07].

    Reaguji na jeho slova a slova těch, kdož reagovali na jeho slova.

    Pes versus pesimismus

    Zde je několik úryvků z prvního článku Konec W3C prostřednictvím psa pana Foustky? a mé reakce:

    Jaký je rozdíl mezi oním průnikem a sjednocením? Pro mě osobně téměř žádný. V graficky rozvernějších webech si rád hraji s průhledností a obarvím i scrollbar, a že je to za cenu ztráty validity CSS souboru mi skutečně žíly netrhá. Ale kam jít dál? Jaké další proprietální funkce využít? [1]

    Krom toho, onen lék není nic originálního [2]: server upraví dokument podle hlavičky user-agent.

    Přál bych Webylonu, aby se této rozdvojenosti zbavil [3]. Ačkoliv tuším, že „lék“ existoval dřív než filozofický obsah [4] webu, bylo by dobré jej nechat zmizet v propadlišti dějin a věnovat se odvážným myšlenkám [5].

    Zdroj: David Grudl, v článku Konec W3C prostřednictvím psa pana Foustky?

    1) Dobrá otázka. Klíčová při utváření názoru na mé řešení. Vycházíte-li z obecně známé množiny postupů, jejichž použití nepoškodí funkčnost v žádném prohlížeči, nenajdete pro funkci Bake uplatnění. Výsledek vaší práce bude pod všemi prohlížeči stejně funkční. Takřka ekvivalentní. Ekvivalence je rájem dnešního webdesignu. Nikdo netouží po vyhnání z ráje. Vývoj ovšem ženou kupředu ti, kdo okusí jablko poznání (platí obecně). Byť tím občas riskují.

    2) Lék je pouze prostředkem k originalitě. Pouze nástroj, ne cíl. Můžu mít rád originálně připravený okurkový salát, ale jen těžko budu projevovat slabost před originalitou struhadla.

    3) Své řešení nenechám zmizet v propadlišti dějin, neboť ho sám spokojeně využívám. Navíc zastávám názor, že nevhodné způsoby práce není třeba vymazat z historie [K.18].

    4) Kritiku W3C bych neoznačoval pojmem „filosofie“. Je pravdou, že se občas odvolávám k filosofickým ideálům, ale mnohem raději tnu do živého a upozorňuji na konkrétní chyby. Oblak filozofické diskuse o významu validity kódu nepochází přímo z mého komína.

    5) Však já se už řešení příliš věnovat nebudu. Není důvod. Je hotové a funkční.

    Rozdíly v DOM se řeší vytvořením JavaScriptové knihovny, která chování sjednotí. Rozdíly se detekují na úrovni JavaScriptu. Totéž platí pro aktivaci contentEditable. To funguje v IE a Mozille a stírání rozdílů je opět čistě záležitostí JavaScriptu. Tady použít modifikaci souborů .js podle user-agenta je s prominutím prasárna.

    Zdroj: David Grudl, v komentáři k článku Konec W3C prostřednictvím psa pana Foustky?

    Má reakce: Nazývat v JavaScriptu něco knihovnou je trochu matoucí, ale budiž. V této souvislosti bych rád zmínil, že tyto „knihovny“ často využívají nespolehlivých implikací. Kdybych musel volit mezi efektivní prasárnou a nefunkčním kódem (což nemusím), má volba by byla jasná: ať žije prasárna.

    Pro názornou ukázku si vypůjčím kus kódu ze stávající podoby weblogu La Trine. Kus, který sice není téměř vůbec dále využíván, nicméně zavání nespolehlivostí:

    dSd=document;dSna=navigator; dSgebi=dSd.getElementById?1:0; // Opera 5 and higher dSopera=window.opera?1:0; // Netscape v4 dSns4=dSd.layers?1:0; // Gecko - Mozilla, FireFox dSgecko=(dSna.product=='Gecko'?1:0); // Internet Explorer dSie=(dSd.all?1:0)&&!dSopera; dSie5up=dSie&&dSgebi; dSie55up=dSie5up&&(dSd.URLUnencoded?1:0); dSie6up=dSie5up&&(dSd.compatMode?1:0);

    Prohlížeč podporující document.layers je vždy Netscape Navigator 4? Můžete v to doufat. Alespoň do té doby, než vaši stránku navštíví kdosi s prohlížečem OmniWeb 4.2. V dnešní době už nikdo proprietálních vymožeností Navigatoru 4 nevyužívá, tudíž jeho detekce pozbývá opodstatnění.

    Prohlížeč podporující document.all je vždy Explorer nebo Opera? Rozhodně ne. Podobná snaha webmasterů o detekci prohlížeče donutila Nadaci Mozilla, aby její podpora vlastnosti document.all byla nedetekovatelná. Kdo rozumí syntaxi JavaScriptu, cítí, že následující podmínka je nesmyslná:

    <script language="JavaScript"> if (eval(document.all) && !document.all) alert("Déjà Vu!"); // ... v Mozille je výraz vyhodnocen jako pravdivý </script>

    Je patrné, že implementace této nesystematičnosti vyžadovala přímý zásah do interpreteru JavaScriptu. Byla ovšem nutná k nezbourání stránek využívajících implikaci document.all!=undefined => Explorer.

    Mozilla tedy Davidovým testem Exploreru neprojde. Co jím ovšem spolehlivě (a myslím i nechtěně) projde, je Explorer pro Macintosh, iCab a OmniWeb 4.2. Toť vše? Snad. Můžete doufat, nemůžete si být jisti.

    Chytřejší JavaScriptové „knihovny“ používají rozumnější podmínky: testují přímo existenci vlastnosti, kterou se chystají použít. Nesnaží se identifikovat prohlížeč, ale funkčnost potřebných funkcí. Bohužel, ani světové elity technického evangelismu zpravidla takový postup neužívají.

    Nepozornost

    Domněnka, že jsem za poslední půlrok nic nového nenapsal, je mylná. Blogery otravuji nejvíce zpravidla po nějaké aktualizaci, aby měli o čem psát. Komentovat nový spot se slovy „kdysi jsem to četl“ není dobrý nápad.

    Nevalidní HTML pro mě není HTML. A u XHTML je to jasné, prohlížeč, který vykreslí chybný dokument je chybný.

    Chápu to stejně, jako by kompilátor pro céčko kompiloval syntaktické chyby (třeba neuzavřenou závorku). To je prostě a jednoduše chyba.

    Zdroj: thingwath, v komentáři k článku Konec W3C prostřednictvím psa pana Foustky?

    Má reakce: Přesně takovýto černobílý pohled jsem zašpuntoval v novém článku Špunt rigorismu [K.19]. Skutečnost se od doporučení (říkat mu „ideál“ by bylo sprosté) lišila a liší, což se nikdy nezmění. Opravdu je prohlížeč, který zpracovává bez problémů „chybný“ kód, špatný? Říká kdo? Tuto definici prosazuje jen a pouze konsorcium W3, neboť je základní esencí jeho moci.

    Dosáhnout zároveň správnosti, validity, a k tomu ještě splnit účel prezentace, to je v případě (X)HTML prostě o hubu. A vinit z toho W3C… (četl jsem Webylon prakticky celý, sice už dříve, ale vím, co tam je) Ovšem netvrdím, že v některých ohledech je ta kritika smysluplná, jenže W3C je spíš obětí než původcem zla.

    Zdroj: thingwath, v dalším komentáři k článku Konec W3C prostřednictvím psa pana Foustky?

    Má reakce: Viním konsorcium z pokřivení ideálu správnosti, z ignorování vlastních cílů, z naivity, z přepisování historie a ze sebestřednosti. Ono je oběť? Čí oběť? Kdo ho donutil zbytečně zlikvidovat fungující techniky? Kdo ho donutil odstranit slib zpětné kompatibility [K.14]?

    Mlaskání o strop

    Mám rád evangelizátory. S koprovou omáčkou.

    Ano, Webylon je zajímavý, užitečný [1], stojí za přečtení. Má jen jediný problém – je to demagogie jako z partesu. S kdejakým částečným tvrzením musí souhlasit každý soudný člověk, ale celek je tak překroucený (až lživý [2]), že to mlaská o strop.

    Nevidím důvod, proč bych si validní stránku neobohatil nějakým filtrem nebo activeX prvkem – pokud to udělám tak, že to nebude ostatní uživatele obtěžovat nebo dokonce omezovat. A tady je hlavní kámen úrazu – a místo toho, aby se naučily nějaké nové techniky [3] a postupy [4], tak na ně nadávají – jen aby si ospravedlnily svou neschopnost [5].

    Zdroj: Pixy, v komentáři k článku Konec W3C prostřednictvím psa pana Foustky?

    1) To zní tak upřímně, že to mňouká o plyšovou pánvičku.

    2) To považuji za vhozenou rukavici. Petře Staníčku, dokažte, že jsem lhář. Že umíte používat silná slova a absurdní sousloví, to jste již dokázal. Nyní prosím obhajte jejich obsah.

    3) Nové techniky z říše „standardů“ tu ovšem prakticky nejsou. Od roku 1998 se jen výrazně zlepšila podpora kaskádových stylů v prohlížečích. To je vše. Vývoj ze strany W3C usilovně stagnuje. Ve srovnání s tím, co konsorcium nabízí, jsou inovacemi spíše zmíněné filtry (a ActiveX prvky a XUL) než jazyk XHTML.

    4) Nové postupy? Za nimi je buď evangelizační propaganda („hleďte, jak to jde udělat validně“) nebo zázračné objevy trivialit (nejlépe pojmenovaných po objeviteli, např. „Pixyho rollovery“).

    5) Nevidím nic závadného na tom, když amatér odpoví na pitomé argumenty jejich rozumnou kritikou. Uvedu příklady pitomých argumentů:

    Dokud argumentujete s pomocí W3C, buďte připraveni, že uslyšíte od oponenta kritické argumenty, s nimiž nehnete. Budete-li prskat cosi o stropu, nepřesvědčíte nikoho. Neznamená to, že váš oponent je ztracený případ. Znamená to, že musíte volit lepší (jinak řečeno: normální) argumenty. Neexistuje-li pro vaše argumenty normální obdoba, máte smůlu a měli byste zvážit, zda není čas své postoje přehodnotit.

    Kádrování webmasterů podle jejich vztahu ke konsorciu je možná tou největší chybou, jaké se může evangelizátor dopustit. Dává tím najevo svoji domnělou nadřazenost a aroganci. Je projevem pozoruhodného sebevědomí věřícího kolektivu. Cítí se neohrožený jako Titanik.

    Kdo jsem a co jsem v životě dokázal, že se opovažuji kritizovat ušlechtilé World Wide Web konsorcium? Jsem ledovec. Přerostlá kra v moři anonymity. Nepotřebuji nic dokazovat.

    Druhé kolo: Platnost kódu

    V druhém článku Konec W3C prostřednictvím psa II. se David Grudl zabývá téměř výhradně pojmem validity kódu. Vystihuje poměrně dobře jeho pramalou souvislost s přístupností a optimalizací pro vyhledávače.

    Rozlišuje mezi tzv. validitou primitivní a validitou dle W3C. Toto rozdělení mírně posouvá stupnici, podle níž se měří kvalita kódu, dobrým směrem. Má však jednu drobnou vadu: opírá se o bod, jehož pozice není až tak pevná, jak se na první pohled zdá.

    Výklad primitivní validity kódu se zakládá na pouhém dodržení syntaxe zvoleného jazyka. Používání předepsaného sortimentu elementů a atributů už není podmínkou. Jinými slovy, pro primitivně validní (X)HTML dokument lze sestavit takovou definici typu dokumentu, aby úspěšně prošel validátorem.

    Hodnocení validity je při tomto pojetí (obrazně řečeno) o úroveň výše. V případě XHTML se žádá dodržení metajazyku XML, v případě HTML se žádá dodržení... čeho vlastně? SGML deklarace k HTML. Nad metajazykem XML je také jeho SGML deklarace. Vše končí u metajazyku SGML.

    Ospravedlníte-li si porušení striktní validity dle W3C, co vás motivuje k dodržení SGML deklarace? Je to jen jiná úroveň téhož standardizačního rigorismu. Pro váš dokument si můžete napsat kromě vlastní DTD i vlastní SGML deklaraci. Můžete si nadefinovat úplně jinou syntaxi značek. Dodržíte-li pak v dokumentu tato pravidla, stane se Vaše dílo primitivně validní. Přesto nemusí v žádném prohlížeči fungovat. Podívejte se třeba na SGML deklaraci a DTD k formátu Rich Text File.

    Validita dle W3C? Primitivní validita? Dodržení SGML? Každý přečin je obhajitelný s pomocí užití vyššího standardu. Zbouráte-li jednu hranici, můžete zbourat další, můžete zbourat všechny. Zmizí vám objektivní opěrné body. Zůstanou jen ty subjektivní:

    To je vše. Ze zobrazitelnosti zákonitě vyplývá, že kód je strojově zpracovatelný. Má-li totiž stroj inteligentnější algoritmus (jako má prohlížeč), pak je dokument zpracovatelný, i když obsahuje překřížené elementy a podobné nešvary.

    Nyní již k jednotlivým úryvkům článku:

    Weby validní dle W3C mohou být označeny ikonkou s odkazem, která tuto skutečnost potvrzuje. Ta představuje pro tvůrce webu jakousi konkurenční výhodu [1], neboť tvořit W3C validní weby je přínos [2], ale ne samozřejmost.

    Pro zákazníka je tedy známka validity [dle W3C] jen vodítkem ke znalostem [3] a úrovni práce toho kterého webdesignérského studia. Nikoliv zárukou kvality [4] (ať už studia nebo webu).

    Validita je tedy pouhou startovní čárou [5] při tvorbě webu, teprve za ní vzniká možnost projevit své schopnosti. V mnoha případech se bohužel stává i omezujícím kritériem, nebo dokonce cílem. To má smutné následky, jakým je třeba: Sterilita [6].

    Zdroj: David Grudl, v článku Konec W3C prostřednictvím psa II.

    1) Je však otázka, komu tím chcete konkurovat. Rozhlédněte se pořádně kolem sebe. Ano, je zde 95 % World Wide Webu, kde se na W3C naprosto kašle (bez větší újmy). Naprosto opačná situace ovšem panuje na stránkách fungujících webdesignérských studií. Je vtipné dělat konkurenční výhodu z toho, co nabízí vesměs všichni. Psát kód validní proti definicím typu dokumentu od konsorcia se lze naučit během víkendu.

    2) Pro koho je to přínos? Pro zákazníka? Ne. Pro něj je přínosem přístupnost, použitelnost, optimalizace pro vyhledávače a další. Tedy to, co validita dle W3C NEznamená. Nebo je to přínos pro výrobce prohlížečů? Že pak nemusí umět to, co stejně umět musí, mají-li být použitelné?

    3) Je vodítkem k jedinému správnému názoru: „Věřím ve standardy“. O znalostech takřka nic nevypovídá. Tyto stránky validátorem zřejmě neprojdou (nezkoušel jsem). Znamená to, že jsem „neschopná lama“? Validátor asi zařve, že jsem nepoužil <!doctype>. Vyhovuje mi totiž více okrajový box model [K.10]. Degraduje mě toto rozhodnutí na amatéra?

    4) Spojím-li si to s bodem 1, tak informace o dodržení validity kódu je jen a pouze nástrojem na oblbnutí zákazníka. Konkurenční výhoda bez jakýchkoliv záruk. Samoúčelná, a přesto populární. Kolik asi zákazníků vnímá existenci W3C dříve, než se jejich mozky dostanou do rukou evangelizačních masérů? Moc to nebude.

    5) Označíte-li něco za startovní čáru a zároveň o tom řeknete, že to není samozřejmostí, děláte z toho dílčí cíl. Taktika „nejdřív pravidlo dodržím a pak ho rozumně poruším“ není nutná. Možná je výhodné pravidlo znát, ale rozhodně není objektivně nutné snažit se ho dodržet. V důsledku je jedno, jestli doporučení W3C ignoruji z neznalosti, z lenosti, z praktických důvodů nebo z úcty před vyššími ideály.

    6) Zde je vhodné upozornit, že já pojmem sterilní web označuji [K.19] něco mírně jiného než David Grudl. Na rozdíl od něj vůbec nehodnotím vzhled stránek psaných podle W3C.

    Sterilní stránky ve své ohromné snaze o přístupnost paradoxně přístupnosti škodí. Ničí imunitní systém World Wide Webu svojí přehnanou čistotou kódu. Umožňují vznik jednodušších koncových zařízení, která ovšem budou mít o to větší problém s již existujícími stránkami. Předpoklad, že „špatně“ napsané (avšak zobrazitelné) stránky postupně vymizí, je extrémně naivní. Budou tady věčně a ač jejich obsah již nemusí být aktuální, neztrácí svoji relevanci a svoji informační hodnotu.

    Motivací k tvorbě sterilních stránek jsou především mýty. Typické jsou legendy o tom, že někdy někde měl nějaký nástroj velké problémy se syntakticky „špatnou“ stránkou. Funguje ale zpětná vazba, takový nástroj se buď přizpůsobil té drtivé většině „špatných“ stránek, nebo vymizel. Je škoda, že vymizel? Podle černobílé doktríny W3C ano. Podle zdravého rozumu ne.

    Komentáře pod článkem

    O tom, že CSS může obsahovat nedefinované vlastnosti, jsem se s Honzou Bienem (a jinými) hádal mockrát – jsem přesvědčen, že může.

    Zdroj: pixy, v komentáři k článku Konec W3C prostřednictvím psa II.

    Má reakce: Já jsem zase přesvědčen, že je úplně jedno, co říká specifikace.

    Obzvláště u kaskádových stylů je to jedno, poněvadž každé nové doporučení (či kandidát na doporučení) částečně popírá předchozí. Chystané CSS 2.1 opravuje „chyby“ v CSS 2. Podobně již CSS 2 opravovalo „chyby“ v CSS 1. Málokterá specifikace výslovně prohlásí o své starší kolegyni, že byla chybná. Vrhne tím totiž stín pochybností i na sebe. To je případ CSS. Stejné konsorcium, skoro stejní autoři, stejná idea. Tentokrát bez chyb? Určitě?

    Každý, kdo se na takové doporučení spolehne a okázale se chlubí jeho dodržením, riskuje problémy. Po pár letech se v nové verzi dočte „Promiň, my jsme se spletli, tohle byla úplná pitomost“. Proto se domnívám, že hodnotit kvalitu čehokoliv podle aktuálního CSS doporučení je mnohem praštěnější než v případě HTML.

    Škoda, že se u HTML nepoužívá něco jako „well-formed“, bylo by mnohem snazší rozlišit tu „primitivní“, od té „podle W3C“. Protože u XHTML je to jasné: well-formed znamená, že jde o XML dokument a dají se použít všechny nástroje pro práci s XML. Validita znamená, že odpovídá definici typu dokumentu. Validita v tomto smyslu není až tak důležitá a myslím, že v budoucnu její význam ještě o něco klesne.

    Zdroj: Pachollini, v komentáři k článku Konec W3C prostřednictvím psa II.

    Má reakce: Viz má slova o SGML deklaraci. Ta víceméně určuje to, čemu se v XML říká správná sestavenost (well-formedness). Je pravdou, že význam validity kódu je u jednoúčelových aplikací XML prakticky nulový. Vím-li totiž, s jakým formátem pracuji, je ta formální validita zbytečná. Což platí i pro HTML.

    V případě XML aplikací obsahujících neveřejný <!DOCTYPE> interní podsadu DTD je navíc XML procesor nucen ke zpracovávání definice typu dokumentu [K.17]. Kdo touží po takovém zdržování?

    A podle mě zase [validita dle W3C] znamená [lepší optimalizaci pro vyhledávače], před nějakým časem jsem se snažil optimalizovat (zdrojově) jedny zdravotnické stránky a výsledek pořád žádný. No asi po týdnu jsem na to přišel. Bylo to: "<head", jenom chyběla pravá závorka a žádný ze spiderů to pak nepřekousal. Proto si myslím, že základní validita kódu je základ optimalizace pro SE.

    Zdroj: JersyWoo, v komentáři k článku Konec W3C prostřednictvím psa II.

    Má reakce: O tom vážně pochybuji. Vyzkouším. Tento článek má neukončenou značku <head>. Pokud ho nezaindexují boti vyhledávačů, je to jen dalším důkazem, že nectí HTML doporučení, jelikož to vynechání ukončovacího „většítka“ povoluje. Dokument je tedy stále primitivně validní.

    Prohlížeče nerespektující doporučení zareagují na „nedodělanou“ značku ignorováním značky následující. Z mých testů vyplývá, že jedině Mozille takový zápis nevadí vůbec. Na místě vyhledávacího bota bych značky <html>, <head> a <body> přehlížel, neboť jejich přítomnost vyžaduje pouze XHTML doporučení.

    Tento článek, byť zajímavý, je zcela nemístný a zcestný. Validita je shoda s normou – z čehož plyne, že existuje jen jedna validita, validita podle W3C.

    Zdroj: Vilém Málek, v komentáři k článku Konec W3C prostřednictvím psa II.

    Má reakce: Mám validní občanský průkaz. V peněžence mi o sebe cinkají validní mince, jež tvoří milou společnost pro validní bankovky. Validní, neboli platné. Neexistuje žádné W3C doporučení, které by definovalo můj občanský průkaz. Alespoň v to doufám :-)

    Pan Málek jistě ví, že validita v případě HTML není shoda s normou, nýbrž jen pozitivní vyhodnocení dokumentu vzhledem k určené definici typu dokumentu. Pojem validity v (S)GML nezavedlo W3C, ale IBM při vytváření metajazyku (S)GML. Validní dokument nemusí mít vůbec nic společného s W3C.

    Doporučuji webdesignérům nejprve číst a myslet a teprve potom vymýšlet, například ptákoviny o validitě dokumentů ;-)

    Zdroj: Vilém Málek, v komentáři k článku Konec W3C prostřednictvím psa II.

    Má reakce: Nutno dodat, že první část tohoto doporučení by si měli zarámovat i někteří šéfredaktoři.

    Nevíte někdo, jestli se do budoucna v CSS počítá s možností nadefinovat jednomu prvku několik pozadí?

    Zdroj: Hellish, v komentáři k článku Konec W3C prostřednictvím psa II.

    Má reakce: Použitý trpný rod poukazuje na rozvinutý monoteismus. Nevím, zda se s tím do budoucna počítá, nejsem jasnovidec. Vím jen, že W3C o tom sní.

    Těším se na další reakce.