• TwitterRSS
  • Domů na Webylon
  • Kritika W3C
  • Evangelizace
  • Kyselina II. Zbytečná

    25. května 2005

    Ve středu 13. dubna 2005 namíchal Håkon Wium Lie ze „svých“ ingrediencí test Acid2. Jeho dílu požehnalo mnoho elitních evangelizátorů. Někteří se v jeho kódu téměř rozpustili. Nabízím vám jiný pohled.

    Kaskádové stylopisy jsou nesmírně užitečná věc. Bylo by skvělé, kdyby rozličné techniky užité v testu plně podporovaly nejrozšířenější prohlížeče. Nicméně Acid2 poněkud neobratně balancuje i na hranici mezi „správným“ a „špatným“ pojetím již zažitých konstrukcí.

    Techniky, jež jsou v nejrozšířenějších prohlížečích implementovány nějak, můžete již nyní spokojeně využívat (stačí individualizovat [W.07]). Výrazné změny v implementaci nejsou u hlavních hráčů na trhu žádoucí. Nikoliv „webový standard“, ale zpětná kompatibilita je tím nejposvátnějším zákonem World Wide Webu.

    Dva světy

    Čtu vám myšlenky: „A od čeho máme <!doctype>? Vždyť test běží ve standardním režimu, zpětná kompatibilita by netrpěla.“

    Deklarace typu dokumentu informuje validátor o pravidlech značkovacího jazyka. To, že ji evangelizátoři (jmenovitě Tantek Çelik) zneužili k rozdělení webu na dva různě implementované světy, je vrcholem nesystematičnosti. Zkratky CSS, DOM a HTML jde nyní jen stěží chápat jako tři nezávislé technologie: Implementace první a druhé přímo závisí na jakémsi přepínači ve třetí.

    Podivný svět „webových standardů“ se tímto krokem pokusil oprostit od té „strašlivé“ zpětné kompatibility. Výsledek úsilí je částečně nekompatibilní s historií a částešně s rozumem. Hurá. Ze tří nejrozšířenějších prohlížečů je najednou šest.

    Ani implementace standardního režimu v prohlížečích ovšem není plně „správná“. Proto se i ten „lepší“ svět pomalu stává zajatcem své vlastní zpětné kompatibility. Každá radikální úprava ve zpracování některé vlastnosti zbourá spoustu webů. Jejich chyba? Měly se držet doporučení a nedbat na zobrazení rozšířenými prohlížeči?

    Co by se stalo, kdyby Microsoft „opravil“ v novém Exploreru CSS parser standardního režimu pouze tak, že by webmasterům znemožnil užívání známých CSS hacků? Håkonův smajlík by se možná zobrazil nepatrně lépe. A miliony stránek by to zbouralo. Podobný efekt by nastal, kdyby naopak pouze upravil implementaci a ponechal beze změny parser.

    Jak byste se vy na místě Microsoftu dostali pryč z tohoto začarovaného kruhu? Zavedli třetí svět? A s příchodem CSS 3 pak čtvrtý, pátý, šestý, padesátý? World Wide Chaos jako daň za „plný potenciál“?

    Technická nedůslednost

    Doporučení HTML 4 můžete vykládat dvěma způsoby. Buď řeknete, že prohlížeč musí umět pouze to, o čem specifikace říká, že umět musí (tzn. MUST). A nebo, což je zřejmě rozumnější, řeknete, že prohlížeč musí umět i vše, co je popsáno klasickými oznamovacími větami.

    V prvním případě by prohlížeč mohl znát pouze elementy <base>, <img>, <link>, <object>, <q>, <script>, <style>, <title> a buňky tabulek. U ostatních elementů totiž páni z konsorcia zapomněli na normativní slůvko MUST. Kód Acidu2 se skládá z mnoha <div>ů a specifikace neříká, jak by mělo cílové zařízení s neznámými elementy naložit. Teoreticky tedy prohlížeč plně vyhovující HTML 4 není povinen zahrnout je do stromu dokumentu. A proto ani není povinen na ně aplikovat styly.

    V druhém případě naráží Acid2 na druhý extrém. Specifikace praví, že „frázové elementy přidávají strukturální informaci kouskům textu“. Håkonův test obsahuje prázdné elementy <em> a <strong>. Tyto však nepřidávají strukturální informaci kouskům textu. Tudíž z definice nejsou frázovými elementy. Přehnaně přísný prohlížeč vyhovující HTML 4 by je mohl vyloučit ze stromu dokumentu a neaplikovat na ně styly.

    Oba způsoby chápání oné nespecifické specifikace by vedly k jinému zobrazení, než si Håkon představuje.

    Připadá vám tento rozbor absurdní? Pakliže ano, je tomu tak jedině proto, že jste si zvykli počítat s jakýmsi „rozumným“ chováním prohlížečů. Počítáte s tím, že <div> i prázdný <em> půjdou nastylovat. Ať žije intuice. Avšak toto chování nemá neotřesitelnou oporu v doporučeních W3C.

    Acid2 klade důraz na detaily. Snaží se být při testování schopností stylopisů důsledný. Proto také více tolerantní CSS parsery trestá. Zároveň však sám spoléhá na obvyklou intuici HTML parserů.

    Společenské souvislosti

    Co bylo motivací k vytvoření Acid2? Autor je zaměstnancem Opery. Přiznal, že inspirací mu byl plánovaný Internet Explorer 7. Hned i vyzval Microsoft, aby zajistil, že nový Explorer testem projde:

    Vývojářům IE 7 chci říct:

    Jste chytří a talentovaní. Znáte webové standardy stejně dobře jako každý. Byli jste způsobilí opravit IE v minulosti, ale vaši manažeři vás nenechali. Nyní máte novou šanci implementovat to správně — nepromarněte ji. [...] Braňte se tlaku vedení, abyste vydali prohlížeč dříve, než budete hotovi — vynaložte na něj přesčasy, které si žádá. Až vám vedení řekne, že nemůžete změnit způsob, jak jsou stránky vykreslovány, neboť to může „rozbít“ stránky, řekněte jim o standardním a zpětně kompatibilním režimu.

    Ukažte jim, že ostatní prohlížeče to dělají správně. Vysvětlete, jak trapné bude vydat prohlížeč, který nežije v souladu s komunitními standardy, a že důsledkem toho bude zvýšení tržního podílu Firefoxu, Safari a Opery.

    — Håkon Wium Lie, Výzva Microsoftu Acid 2, 16. března 2005

    Interesantní. Osoba, která před pár lety svolávala demonstrace proti „znečištění webu Microsoftem“, nyní oslavuje inteligenci vývojářů tohoto softwarového gigantu? A nabádá svého největšího soka k tomu, aby se zdokonalil v oboru, který sama považuje za svoji konkurenční výhodu? To opravdu chce?

    Ze třetího odstavce plyne, že považuje respektování doporučení W3C za hlavní příčinu úspěchu minoritních prohlížečů. Činí z nich prioritu. Takže? Microsoft uposlechne, implementuje bezchybně „standardy“, získá 99 % trhu, Opera zkrachuje, Håkon přijde o místo, ale od Tima Berners-Leeho dostane za zásluhy … diplom. Takhle si to představuje?

    Co uděláte je důležité. Web vám poděkuje za vaše úsilí.

    Webové komunitě chci říct: Microsoft byl teď vyzván. Zareaguje, pokud jim výzvu bude připomínat dostatek lidí. Prosím, připomínejte jim ji.

    — Håkon Wium Lie, Výzva Microsoftu Acid 2, 16. března 2005

    Je pravděpodobné, že MS implementuje některé nové techniky, jako je třeba alfakanál grafického formátu PNG, pseudoprotokol data: nebo v CSS zobecní pseudoselektor :hover. Je ovšem velmi nepravděpodobné, že implementuje vše do puntíku tak, jak si Acid2 žádá. Nepochybně by tím ohrozil část již existujících webů. Håkon si to jistě uvědomuje.

    Opera Software ASA a Microsoft Corporation spolu již dlouho vedou malou válku. Před čtyřmi roky server MSN odříznul majitele alternativních prohlížečů od obsahu s vtipným odůvodněním, že nepodporují XHTML. Před dvěma roky záměrně mršil své zobrazení v Opeře, speciální verze Opery pak pro změnu záměrně mršila web MSN. Tyto šarvátky jsou již pryč. Situace se zdánlivě uklidnila.

    Vidíte v Håkonově výzvě snahu o pomoc World Wide Webu? Já bohužel ne. Vidím jen prostý konkurenční boj.

    Organizační důvod

    Víte, co se stalo dne 12. května 1998? Památné to datum. Pracovní skupina CSS tehdy vydala své dosud poslední doporučení, Cascading Style Sheets, level 2. Uběhlo již sedm let.

    Sedm let, během nichž se „samovládce“ WWW nemůže pochlubit žádným novým „standardem“ z rodiny stylopisů. Nemůže se ohánět slovy „světe, hleď písma svatého“, když žádné písmo svaté nevydává. Vznikla jen spousta pracovních návrhů a kandidátů na doporučení.

    Takřka všichni kandidáti mají jednu základní podmínku, bez jejíhož splnění nepostoupí do fáze doporučení:

    Musí existovat alespoň dvě spolupráceschopné implementace pro každou vlastnost.

    výstupní kritérium, návrh CSS 2.1, 25. února 2004

    Na této elementární podmínce zatuhla už v roce 2003 specifikace CSS TV Profile. Specifikace CSS Print Profile a CSS Mobile Profile ji o rok později následovaly.

    Je jasné, že úplně stejně dopadla i specifikace CSS 2.1. Již přes rok se čeká na alespoň dvě vzájemně kompatibilní implementace. Marně. Aby toho bylo vůbec možné dosáhnout, byla v CSS 2.1 omezena škála možností oproti CSS 2. Především v oblasti vizuální prezentace.

    Ovšem jinak k příliš výrazným změnám nedošlo. Říká se, že CSS 2.1 je průnikem CSS 2 a již podporovaných vlastností. Sama specifikace však praví toto:

    [...] Ale většina z celého CSS 2.1 reprezentuje „momentku“ užívání CSS: skládá se ze všech CSS vlastností, které jsou spolupráceschopně implementovány k datu publikování doporučení.

    abstrakt, návrh CSS 2.1, 25. února 2004

    Jinými slovy, verze 2.1 je předurčena k tomu, aby byla někdy v budoucnu oním průnikem. Až (respektive jestli) jím bude, stane se doporučením. Čeká na prohlížeče. Prohlížečům schází motivace. Jejich výrobci si již dávno uvědomili, že to, co se opravdu ocení, je přívětivost k uživateli. A že se cení mnohem více než přívětivost ke konsorciu. Prostě a jednoduše proto, že hodnotí uživatel.

    Nevydat sedm let žádné nové doporučení, to je ostuda, nemyslíte? Jedním z autorů zatuhlého CSS 2.1 je Håkon Wium Lie. Jeho test Acid2 testuje prohlížeče právě na podporu této specifikace. Najdou-li se dva, které zobrazí správně smajlík a projdou i oficiálními testy W3C, bude upadající reputace pracovní skupiny CSS zachráněna.

    V roce 2012 budeme vědět, že od okamžiku vydání tohoto článku trvalo ještě šest let, než se z CSS 2.1 stalo doporučení.

    Kdo jsi bez viny...

    Acid2 názorně demonstruje nejen náročnost zpracování kaskádových stylů prohlížeči, ale i náročnost jejich pochopení člověkem. Dvojstránkový zdrojový kód s dvacetistránkovým manuálem. Koncepce kaskádovosti vyžaduje jednoduchost [K.21] a z tohoto pohledu specifikace CSS 2.1 fatálně selhává.

    Håkon Wium Lie je jakožto spoluautor většiny CSS doporučení také spoluzodpovědný za nepořádek v box modelech [K.10] a za některé další neopodstatněné přečiny proti zpětné kompatibilitě [K.05].