Dajbych.net


Projekt Spartan, 1. díl – dějiny Internet Exploreru v kostce

, 7 minut čtení

Pro­jekt Spar­tan nepochopíme, pokud si neu­vě­domíme, z čeho vy­chází a kvůli čemu vznikl. Můžeme to ex­trémně zjedn­odušit na kon­s­ta­tování, že vy­chází z In­ter­net Ex­ploreru a vznikl kvůli rychle se rozví­je­jícímu Chromu. Jenže tento poh­led z rych­líku nás ochudí o to ne­jdůležitější poznání. Pokud bych oz­načil IE 1 – 6 za první éru a IE 7 – 11 za éru druhou, teď začíná éra třetí. Nemohu si od­pustit přirovnání k raketě, pro­tože Spar­tan je pro­ces od­dělení druhého rake­tového stupně od třetího.

Mosaic

Na uni­verz­itě v Illi­nois nap­sali v roce 1992 we­bový proh­lížeč Mo­saic. Nebyl ani prvním, ani posled­ním proh­lížečem. Byl to ale první proh­lížeč, který zo­bra­zo­val obrázky společně s tex­tem. Společnost Spy­glass, ob­chodní od­nož NCSA, si půjčila zdro­jový kód to­hoto proh­lížeče pro ref­erenční im­ple­mentaci a vytvořila vlastní proh­lížeč Spy­glass Mo­saic. Z dnešního poh­ledu bylo důležité, že běžel na Win­dows. Jeho zdro­jové kódy si li­cen­co­vala společnost Nets­cape a proh­lížeč po­j­men­o­vala jako Nets­cape Nav­i­ga­tor. Proh­lížeč měl velký úspěch a stal se de facto stan­dar­dem.

Mi­crosoft chtěl tento ob­chod dělat také, a tak si rovněž li­cen­co­val zdro­jové kódy Spy­glass Mo­saic a proh­lížeč po­j­men­o­val jako In­ter­net Ex­plorer. Společnosti Spy­glass měl od­vádět podíly ze zisku z prodeje proh­lížeče. Jenže Mi­crosoft ho začal rozdá­vat zdarma. To se pocho­pitelně Spy­glassu nelí­bilo, pro­tože podíl z ničeho je do­cela málo a vysoudil na Mi­crosoftu 8 mil­ionů dolarů.

Válka prohlížečů

In­ter­net Ex­plorer byl jakýsi bonusWin­dows 95 podobně jako Bit­LockerWin­dows Vista. V té době se pok­lá­daly zák­lady webu, vznikaly CSS a HTML. Stan­dardy se teprve utvářely, takže se stalo, že Nets­cape im­ple­men­to­val CSS ji­nak, než si to před­s­tavo­vali lidé z W3C. We­bové stránky byly psané tak, aby se zo­bra­zo­valy správně, ne aby byly strik­tně po­dle stan­dardu a zo­bra­zo­valy se di­vně. Tým In­ter­net Ex­ploreru se musel rozhod­nout, jestli bude důsledně do­držo­vat stan­dardy, nebo za­cho­vají kom­pat­i­bil­itu s Nav­i­ga­torem. Rozhodli se nerozbít web a im­ple­men­to­vat CSS tak, aby se stránky zo­bra­zo­valy všude ste­jně. Jenže kon­sor­cium W3 tvr­došíjně tr­valo na svém po­jetí a dalo výrobcům proh­lížečů sez­nam bodů, ve kterých se je­jich im­ple­men­tace liší od stan­dardu. In­ter­net Ex­plorer proto měl ve verzi 6 dva vykreslo­vací režimy. Je­den po­dle stan­dardů a je­den pro kom­pat­i­bilitu s Nav­i­ga­torem. Nůžky se začaly pozvolna a nená­padně rozevírat.

XML revoluce

Vše se zdálo být v pořádku. Před­pok­lá­dalo se, že nové stránky bu­dou nap­sané pro stan­dardní režim a kom­pat­i­bilní režim (dnes oz­načo­vaný jako Quirks) bude pro dožití již vytvořených stránek. Jenže v té době byla v pl­ném proudu XML rev­oluce. XML konečně poskytlo dostatečně ex­pre­sivní formu toho, jak struk­tur­ovat, či přes­něji, jak vyjádřit sé­man­tiku dat. Ač syn­taxe HTML i XML vy­chází ze SGML, ně­jak převlá­dal ná­zor, že XML je přeci jen el­e­gant­nější než HTML. Ten se zdál být překonán a nahra­dit ho měl XHTML. Správný XML doku­ment začíná XML pro­lo­gem (který není povinný, pokud je stránka v kó­dování UTF-8). A v tom byla právě ta potíž. In­ter­net Ex­plorer XHTML nepod­poroval a výskyt pro­logu přep­nul režim vykreslování ze stan­dard­ního do kom­pat­i­bil­ního režimu. Místo toho, aby se web­de­signéři XHTML vz­dali, před­háněli se v tom, kdo pro­jde validá­torem kódu bez úhony. Prob­lémy stránek psaných po­dle stan­dardů způ­sobených vykreslováním v kom­pat­i­bil­ním režimu se řešily speciál­ními opravami určenými jen pro IE. Vznikalo mnoho webů, které byly psány po­dle stan­dardů, ale v IE se vykreslo­valy po­dle jiných pravidel. Toto ob­dobí tr­valo nezvykle dlouho. IE 7 byl vy­dán dlouhých 5 let po uve­dení IE 6. Tím vším se nůžky rozevřely úplně.

HTML5

Víte, proč má HTML5 takový doc­type, jaký má? Je to jed­iný doc­type, který žádný z proh­lížečů nepřepne do kom­pat­i­bil­ního režimu. Cílem HTML5 nebylo ani tak přinést nové věci, jako spíš zachytit současný stav. Stan­dardy se konečně začaly psát s oh­le­dem na to, jaká byla re­alita. Nutno podot­knout, že s tím nepřišlo W3, ale WHATWG. Současně tak ale snaha ver­zo­vat HTML byla tatam.

Všechny proh­lížeče si do­sud vys­tačily se třemi vykreslo­vacími režimy – stan­dards, al­most stan­dards a quirks. Až na In­ter­net Ex­plorer. Ten si musel za­cho­vat zpět­nou kom­pat­i­bil­itu s úpravami určenými jen pro něj, které často zneuží­valy od­k­lony od stan­dardů. Díky tomu se pro tento postup vžil po­jem CSS hack. A tak se ve­dle přepínání mezi vykreslo­vacími režimy začalo přepí­nat ještě mezi verzemi proh­lížeče, pro­tože vykreslovací režimy se samozře­jmě mezi jed­notlivými verzemi vyví­jely.

Mi­crosoft měl před­s­tavu, že vývo­jáři deklarují, pro jakou verzi kterého proh­lížeče je web určený. Tím se zachytí stav im­ple­men­tace stan­dardů v konkrét­ních proh­lížečích v konkrét­ním čase. Pak bude hned jasné, jak se má proh­lížeč za­cho­vat. Zpočátku to fun­go­valo, ale časem se ukázal je­den ve­liký prob­lém.

Edge

Všechny proh­lížeče ne­dokončí im­ple­mentaci všech stan­dardů současně. To by samo o sobě nevadilo, kdyby we­bový vývo­jář po­dle do­poručení Mi­crosoftu nezafixo­val svůj web na konkrétní verzi IE. Když je na webu napřík­lad SVG a web je fixo­vaný na IE 8, který ještě SVG neuměl, může při­jít ko­lik vyšších verzí IE s pod­porou SVG chce, ale v nich se SVG prostě ne­zo­brazí, pro­tože se použije kom­pat­i­bilní režim IE 8. A ze zkušenosti už víme, že spoléhat se na to, že všichni své weby pravidelně ak­tu­al­izují, je velice naivní. Nezbylo nic jiného, než začít fixaci na konkrétní verzi proh­lížeče ig­norovat. Tím ale na­jed­nou celý sys­tém zpětné kom­pat­i­bility IE ztratil smysl.

Zpětná a dopředná kompatibilita

Dějiny In­ter­net Ex­ploreru nás učí, jak moc důležitá je zpětná i dopředná kom­pat­i­bilita a že snaha o aka­demicky líbivé řešení bez oh­ledu na zjev­nou re­al­itu je marná.

Zpětná kom­pat­i­bilita zna­mená vykreslo­vat v nové verzi proh­lížeče všechny současné HTML doku­menty tak, jako se vykreslo­valy v před­chozí verzi. Pro­to­typ In­ter­net Ex­ploreru 7 od­s­tranil mnoho chyb předešlé verze. Když ho ale jeho vývo­jáři ukázali li­dem z Ya­hoo, dozvěděli se od nich, že ho neb­ude nikdo použí­vat, pro­tože není s ničím kom­pat­i­bilní.

S možností cílit HTML doku­ment na konkrétní verzi přišel IE o svou dopřed­nou kom­pat­i­bil­itu. Když pak v doku­mentu přibylo něco nového, co se ale proh­lížeč mez­itím naučil, bylo všechno stále při starém.

Snahy vylepšit něco způ­sobem, kterým se za­hodí vše, co zatím je a začne se znova od začátku, vždy ztrosko­taly. Je žá­doucí se tak cho­vat, když jde o vědecké hy­potézy, ale nežá­doucí, když jde o peníze.

2. díl – proh­lížeč v ko­r­po­raci