• TwitterRSS
  • Domů na Webylon
  • Blog
  • Spása?

    1. února 2008

    Až potkáte na ulici vrávorajícího webdesignéra, nemusí být jasné, jestli si slavnostně připíjel nebo jestli se z žalu opíjel. Možná obojí. Obě novinky z letošního ledna vyvolávají rozporuplné odezvy.

    Přispěji do víru radovánek a nadávek svým pohledem.

    Pracovní návrh pátého HTML

    Vyšel 22. ledna. Jazyk HTML již (opět [K.01]) není SGML aplikací, přestože si řadu vlastností ponechává — zejména ty, které současné prohlížeče znají. Proslulé nadbytečné lomítko při typu „text/html“ má konečně jasný účel:

    Pokud se element řadí mezi prázdné elementy, smí obsahovat jeden znak U+002F SOLIDUS (/). Tento znak nemá žádný účinek kromě utišení značkovacích bohů. Jelikož je pouhým symbolem víry, ateisté by jej měli vynechat.

    HTML 5, 8.1.2.1. Počáteční značky

    <Ámen>.


    Rozpaky budí nevyřazení <font>u. Překvapuje mě, kolik pláče emitují webdesignéři kvůli elementu, který nikdo z nich dobrovolně používat nebude. Současnou generaci kodérů „útrapy“ <font>u stejně moc netrápí. Fontofóbie je většinou jen póza, která ztratila své opodstatnění krátce po filozofické úpravě účelu HTML [K.38]. Podívejte se na věc z jiného úhlu:

    <table border="0" width="200"> <tr> <td> <font color="red">Červená</font> pole jsou povinná!!! </td> </tr> <tr> <td> (tady si představte formulář s červenými popisky) </td> </tr> </table>

    Chcete — jako uživatelé — aby vám tenhle ohavný kód fungoval? Nebo budete spokojenější, když váš prohlížeč <font>y neimplementuje? Potrestáte autora internetového obchodu za nehezký kód tím, že si objednáte zboží u dražší konkurence? Přiznejte si, že za vymýcení <font>u ve skutečnosti nechcete připlatit ani korunu. Sterilní prostředí může v důsledku škodit [K.19].

    Existující prohlížeče podporu ošklivých elementů záměrně neodeberou a je v zájmu uživatelů, aby je podporovaly i ty nové a alternativní => specifikace by je měla všechny obsahovat. To platí nejen pro <font>, ale i pro <big>, <u> a <s>, které ovšem v HTML 5 nepochopitelně chybějí. On i <font> je tam zmrzačen, jediným jeho povoleným atributem je style.


    Pozoruhodná je teoretická změna významu elementů <b> a <i>:

    Element <b> vyjadřuje stylisticky posunutý úsek textu oproti běžnému stylu bez přiřazení důležitosti, jako jsou třeba klíčová slova ve shrnutí dokumentu, názvy výrobků v recenzi, nebo jiné úseky textu, které se obvykle typograficky vyznačují tučně.

    HTML 5, 3.12.20. Element <b>

    Element <i> vyjadřuje intonačně, nálodově či jinak posunutý úsek textu oproti běžnému stylu, jako je třeba taxonomické určení, technický pojem, idiomatická fráze z jiného jazyka, myšlenka, jméno lodi nebo jiné úseky textu, které se obvykle typograficky vyznačují kurzívou.

    HTML 5, 3.12.19. Element <i>

    Není to poprvé [K.15], co Ian Hickson (hlavní motor HTML 5) navrhuje sémantickou recyklaci prezentačních elementů. Ani velkolepě oslavovaná specifikace nezmění nic na tom, že svět „tam venku“ používá čtveřici prezentačních/zdůrazňujících elementů podle nálady. Rozdíl mezi zvýrazněním a zdůrazněním není s ohledem na účel HTML [K.38] podstatný. Důležité sdělení je stylisticky i intonačně posunutý úsek textu. Podobně jako psaní velkými písmeny značí KŘIK!


    V souvislosti s novým HTML se podivně často mluví o jeho (ne)podpoře v prohlížečích. Kodéři běžně píšící <img />, <![CDATA[…]]>, xmlns="http://www.w3.org/1999/xhtml" a podobné zbytečnosti upozorňují, že starší prohlížeče budou některé novoty ignorovat. Krásný paradox.

    Srovnávat podporu HTML 4/XHTML 1 a (X)HTML 5 dost dobře nejde. Pětková verze už totiž není „hra na standard“. Je realistická a předpokládá, že bude podporována. Jediným jejím protivníkem je zkostnatělé myšlení kodérů. Neválčí už s prohlížeči, ani nestaví nedůležité ideály do cesty interoperability. Specifikace HTML 2 až 4 se opíraly o vznešené SGML — staly se alespoň formálně jeho nejslavnějším zástupcem, ale v praxi kolem SGML jen vzdáleně prolétly a vzaly si z něj trochu inteligence a lenosti, entity a báchorku o užitečnosti <!doctype> deklarace, jinak nic. Následně konsorcium uvařilo extra-cool XML a k samorostlému HTML přilepilo izolepou jedno sexy písmenko, které však u něj nikdy moc nedrželo (nebýt izolepy, X by upadlo). Teprve teď se W3C konečně stará o to, jak HTML doopravdy funguje — všimněte si toho přítomného času.

    Již nyní v podstatě používám HTML 5. Vy též. Když napíšete teď do kódu řetězec „<textarea />“, čím se bude řídit prohlížeč? HTML 4 ani XHTML 1 to nebude. Pracovní návrh HTML 5 popisuje současný stav mnohem výstižněji než jakákoliv jiná (X)HTML specifikace.

    Samozřejmě, že některé (pozor, zdaleka ne všechny) nové elementy, atributy či vlastnosti DOMu ve stávajících prohlížečích nepoběží. Stránku však je možné napsat ohleduplně. Pokrok je plynulý, v praxi žádná tlustá čára není. Ostrý zlom prožívá pouze teorie.

    Třetí svět přichází

    Před třemi roky jsem komentoval Acid 2:

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

    — má slova z Kyseliny II. Zbytečné [K.22]

    Dne 19. prosince 2007 mi sklaplo. Vývojáři Exploreru oznámili, že polotovar osmičkového jádra už umí zobrazit žlutý smajlík. Odvěké dilema „standardy vs. kompatibilita“ jako by najednou neexistovalo. Ještě v dubnu 2007 bylo pro MS klíčové a najednou nic. Oslavy a ticho. Bouři předcházející klid vydržel měsíc.

    Microsoft 21. ledna oznámil, že v příští verzi Internet Exploreru zavede třetí vykreslovací režim. Na jeho zapnutí prý bude potřeba dosud neprovařená <!doctype> deklarace (třeba <!doctype html>) nebo speciální HTTP hlavička nebo <meta> element:

    <meta http-equiv="X-UA-Compatible" content="IE=8">

    Nejčastěji se v této souvislosti mluví právě o tomto <meta> elementu. Nový mód zatím nemá oficiální jméno, obvykle se mu říká superstandardní. Motivaci pro jeho vznik asi už nemusím (podruhé) dlouze popisovat: zpětná kompatibilita je posvátná, World Wide Chaos přichází. Každá další nová verze Exploreru zavede nový režim. Důsledky podle mě sice nebudou tak strašlivé, jak si mnozí představují, přesto považuji veškeré dosavadní dělení vykreslovacích režimů za dost ošklivé. Jaké spatřuji nevýhody:

    Řada lidí oprávněně nadává, že vznikne bordel. Microsoft zase oprávněně lpí na zpětné kompatibilitě. Radikální rady ve stylu „Microsoft by měl nemilosrdně ignorovat nestandardní weby“ jsou extrémně naivní. Ti, kdo je vyslovují, věří svým kódům víc, než je zdrávo. Kolik z nich před rokem nadávalo, že jim sedmička rozbila web?

    Vývojáři mnoha webů obešli nedostatky a zjevné chyby Exploreru 6 a nyní očekávali, že bude sedmička pracovat stejně jako šestka. Očekávali od nás na příklad, že i ve standardním režimu ponecháme náš model přetékání obsahu ze svého boxu, přestože to není v souladu se specifikací — protože oni už přizpůsobili svůj obsah našemu modelu.

    Jakmile jsme učinili chování ve standardním režimu více standardním, <!DOCTYPE> přepínač při ochraně kompatibility ve skutečném světě selhal.

    — Chris Wilson, architekt Exploreru, Kompatibilita a Internet Explorer 8

    Webdesignu vládnou hacky a mýty. Kdo dnes opravdu zná a dodržuje standardy? Dosavadní (X)HTML specifikace minuly tuto planetu o pár světelných let a náprava je teprve ve stádiu návrhu. A styly? Podporu CSS v Mozille a Opeře si sice kdekdo pochvaluje, ale to už neplatí o CSS specifikacích. V nich panuje divočina: na CSS 2 se všeobecně dlabe, CSS 2.1 není dokončené (ačkoli už je ve fázi, kdy je žádoucí jej implementovat) a již tři a půl roku do něj nemluví žádný vyslanec Microsoftu (tasmánský Tantek odešel z MS [B.05]), což pochopitelně vede ke svatořečení konkurenčních implementací — když není kocour doma, hora kráčí k Mohamedovi.

    Za této situace jsou transparenty rozzuřených kodérů „Dodržujte lépe standardy!“ stejně praštěné jako tiskové prohlášení Microsoftu „Budeme lépe dodržovat standardy!“. Hlučné prázdné fráze. To, po čem všichni prahnou, je vzájemná kompatibilita a jednoduchost, ne?

    Svět se nezadržitelně řítí směrem k „webovým standardům“ a daní za jednotné pořádky je právě trestuhodný nepořádek ve vykreslovacích režimech. V důsledku tento stav ještě více semkne trh s prohlížeči. Ústřední myšlenka otevřené standardizace tak umírá, aniž by to návštěvníky a kodéry citelně trápilo.

    Superstandardní režim je zároveň jasným vzkazem pro W3C, že je Microsoft ochoten implementovat jakkoliv bezohlednou specifikaci pomocí dalšího dělení režimů. Pokud se heslem „hlavně nerozbít Web“ řídí majoritní prohlížeč, nemusí se jím řídit standardizátor, ne? Vzpomínáte si na hlavní příčinu vzniku dvou režimů [K.10]? Kroky vývojářů Exploreru jsou předvídatelné.

    (Mimochodem, skutečné XHTML je v prohlížečích, které jej podporují, také speciální vykreslovací režim.)

    Spokojený závěr

    Budu beztrestně porušovat HTML 5 a pojedu stále v quirku, chachacha