Dajbych.net


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

, 8 minut čtení

Pro­jekt Spar­tan ne­po­cho­píme, po­kud si ne­u­vě­do­míme, z čeho vy­chází a kvůli čemu vznikl. Mů­žeme to ex­trémně zjed­no­du­šit na kon­sta­to­vání, že vy­chází z In­ter­net Ex­plo­reru a vznikl kvůli rychle se roz­víjejí­címu Chromu. Jenže tento po­hled z rychlíku nás ochudí o to nej­dů­le­ži­tější po­znání. Po­kud bych ozna­čil IE 1 – 6 za první éru a IE 7 – 11 za éru druhou, teď za­číná éra třetí. Ne­mohu si od­pus­tit při­rov­nání k ra­ketě, pro­tože Spar­tan je pro­ces od­dě­lení druhého ra­ke­to­vého stupně od tře­tího.

Mosaic

Na uni­ver­zitě v Il­li­nois na­psali v roce 1992 we­bový pro­hlí­žeč Mosaic. Ne­byl ani prv­ním, ani po­sled­ním pro­hlí­že­čem. Byl to ale první pro­hlí­žeč, který zob­ra­zo­val ob­rázky spo­lečně s tex­tem. Spo­leč­nost Spy­glass, ob­chodní odnož NCSA, si půj­čila zdro­jový kód to­hoto pro­hlí­žeče pro re­fe­renční im­ple­men­taci a vy­tvo­řila vlastní pro­hlí­žeč Spy­glass Mosaic. Z dneš­ního po­hledu bylo dů­le­žité, že bě­žel na Win­dows. Jeho zdro­jové kódy si li­cen­co­vala spo­leč­nost Net­s­cape a pro­hlí­žeč po­jme­no­vala jako Net­s­cape Na­vi­ga­tor. Pro­hlí­žeč měl velký úspěch a stal se de facto stan­dar­dem.

Micro­soft chtěl tento ob­chod dě­lat také, a tak si rov­něž li­cen­co­val zdro­jové kódy Spy­glass Mosaic a pro­hlí­žeč po­jme­no­val jako In­ter­net Ex­plo­rer. Spo­leč­nosti Spy­glass měl od­vá­dět podíly ze zisku z pro­deje pro­hlí­žeče. Jenže Micro­soft ho za­čal roz­dá­vat zdarma. To se po­cho­pi­telně Spy­glassu ne­lí­bilo, pro­tože podíl z ni­čeho je do­cela málo a vy­sou­dil na Micro­softu 8 mi­li­onů do­larů.

Válka prohlížečů

In­ter­net Ex­plo­rer byl jakýsi bo­nusWin­dows 95po­dobně jako BitLockerWin­dows Vista. V té době se po­klá­daly zá­klady webu, vzni­kaly CSS a HTML. Stan­dardy se te­prve utvá­řely, takže se stalo, že Net­s­cape im­ple­men­to­val CSS ji­nak, než si to před­sta­vo­vali lidé z W3C. We­bové stránky byly psané tak, aby se zob­ra­zo­valy správně, ne aby byly striktně podle stan­dardu a zob­ra­zo­valy se divně. Tým In­ter­net Ex­plo­reru se mu­sel roz­hod­nout, jestli bude dů­sledně do­dr­žo­vat stan­dardy, nebo zacho­vají kom­pa­ti­bi­litu s Na­vi­ga­to­rem. Roz­hodli se ne­roz­bít web a im­ple­men­to­vat CSS tak, aby se stránky zob­ra­zo­valy všude stejně. Jenže kon­sor­cium W3 tvr­do­šíjně tr­valo na svém po­jetí a dalo výrob­cům pro­hlí­žečů se­znam bodů, ve kterých se je­jich im­ple­men­tace liší od stan­dardu. In­ter­net Ex­plo­rer proto měl ve verzi 6 dva vy­kres­lo­vací re­žimy. Je­den podle stan­dardů a je­den pro kom­pa­ti­bilitu s Na­vi­ga­to­rem. Nůžky se za­čaly po­zvolna a ne­ná­padně ro­ze­vírat.

XML revoluce

Vše se zdálo být v po­řádku. Před­po­klá­dalo se, že nové stránky bu­dou na­psané pro stan­dardní re­žim a kom­pa­ti­bilní re­žim (dnes ozna­čo­vaný jako Quirks) bude pro do­žití již vy­tvo­ře­ných strá­nek. Jenže v té době byla v pl­ném proudu XML re­vo­luce. XML ko­nečně po­skytlo do­sta­tečně ex­pre­sivní formu toho, jak struk­tu­ro­vat, č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ře­vlá­dal ná­zor, že XML je přeci jen ele­gant­nější než HTML. Ten se zdál být pře­ko­nán a na­hra­dit ho měl XHTML. Správný XML do­ku­ment za­číná XML pro­lo­gem (který není po­vinný, po­kud je stránka v kó­do­vání UTF-8). A v tom byla právě ta po­tíž. In­ter­net Ex­plo­rer XHTML ne­pod­po­ro­val a výskyt pro­logu pře­pnul re­žim vy­kres­lo­vání ze stan­dard­ního do kom­pa­ti­bil­ního re­žimu. Místo toho, aby se we­b­de­sig­néři XHTML vzdali, před­há­něli se v tom, kdo pro­jde va­li­dá­to­rem kódu bez úhony. Problémy strá­nek psa­ných podle stan­dardů způ­so­bených vy­kres­lo­vá­ním v kom­pa­ti­bil­ním re­žimu se ře­šily spe­ci­ál­ními opra­vami ur­če­nými jen pro IE. Vzni­kalo mnoho webů, které byly psány podle stan­dardů, ale v IE se vy­kres­lo­valy podle jiných pra­vi­del. Toto ob­dobí tr­valo ne­zvykle dlouho. IE 7 byl vy­dán dlouhých 5 let po uve­dení IE 6. Tím vším se nůžky ro­ze­vřely úplně.

HTML5

Víte, proč má HTML5 ta­kový doctype, jaký má? Je to je­diný doctype, který žádný z pro­hlí­žečů ne­pře­pne do kom­pa­ti­bil­ního re­žimu. Cílem HTML5 ne­bylo ani tak při­nést nové věci, jako spíš za­chy­tit sou­časný stav. Stan­dardy se ko­nečně za­čaly psát s ohle­dem na to, jaká byla re­a­lita. Nutno po­dotk­nout, že s tím ne­přišlo W3, ale WHATWG. Sou­časně tak ale snaha ver­zo­vat HTML byla ta­tam.

Všechny pro­hlí­žeče si do­sud vy­sta­čily se třemi vy­kres­lo­va­cími režimy – stan­dards, al­most stan­dards a quirks. Až na In­ter­net Ex­plo­rer. Ten si musel zacho­vat zpět­nou kom­pa­ti­bi­litu s úpra­vami ur­če­nými jen pro něj, které často zne­u­ží­valy od­klony od stan­dardů. Díky tomu se pro tento po­stup vžil po­jem CSS hack. A tak se ve­dle pře­pí­nání mezi vy­kres­lo­va­cími re­žimy za­čalo pře­pí­nat ještě mezi verzemi pro­hlí­žeče, pro­tože vy­kres­lovací re­žimy se sa­mo­zřejmě mezi jed­not­li­vými ver­zemi vy­víjely.

Micro­soft měl před­stavu, že vý­vo­jáři de­kla­rují, pro ja­kou verzi kte­rého pro­hlí­žeče je web ur­čený. Tím se za­chytí stav im­ple­men­tace stan­dardů v kon­krét­ních pro­hlí­že­čích v kon­krét­ním čase. Pak bude hned jasné, jak se má pro­hlí­žeč zacho­vat. Zpo­čátku to fun­go­valo, ale ča­sem se uká­zal je­den ve­liký problém.

Edge

Všechny pro­hlí­žeče ne­do­končí im­ple­men­taci všech stan­dardů sou­časně. To by samo o sobě ne­va­dilo, kdyby we­bový vý­vo­jář podle do­po­ru­čení Micro­softu ne­za­fi­xo­val svůj web na kon­krétní verzi IE. Když je na webu na­pří­klad SVG a web je fi­xo­vaný na IE 8, který ještě SVG ne­u­měl, může při­jít ko­lik vyš­ších verzí IE s pod­po­rou SVG chce, ale v nich se SVG prostě ne­zob­razí, pro­tože se po­u­žije kom­pa­ti­bilní re­žim IE 8. A ze zku­še­nosti už víme, že spo­léhat se na to, že všichni své weby pra­vi­delně ak­tua­li­zují, je ve­lice na­ivní. Ne­zbylo nic ji­ného, než za­čít fi­xaci na kon­krétní verzi pro­hlí­žeče ig­no­ro­vat. Tím ale najed­nou celý systém zpětné kom­pa­ti­bi­lity IE ztra­til smysl.

Zpětná a dopředná kompatibilita

Dě­jiny In­ter­net Ex­plo­reru nás učí, jak moc dů­le­žitá je zpětná i do­předná kom­pa­ti­bi­lita a že snaha o aka­de­micky lí­bivé ře­šení bez ohledu na zjev­nou re­a­litu je marná.

Zpětná kom­pa­ti­bi­lita zna­mená vy­kres­lo­vat v nové verzi pro­hlí­žeče všechny sou­časné HTML do­ku­menty tak, jako se vy­kres­lo­valy v před­chozí verzi. Pro­to­typ In­ter­net Ex­plo­reru 7 od­stra­nil mnoho chyb pře­de­šlé verze. Když ho ale jeho vý­vo­jáři uká­zali li­dem z Yahoo, do­zvě­děli se od nich, že ho ne­bude ni­kdo po­u­ží­vat, pro­tože není s ni­čím kom­pa­ti­bilní.

S mož­ností cí­lit HTML do­ku­ment na kon­krétní verzi při­šel IE o svou do­před­nou kom­pa­ti­bi­litu. Když pak v do­ku­mentu při­bylo něco no­vého, co se ale pro­hlí­žeč me­zi­tím na­u­čil, bylo všechno stále při starém.

Snahy vylep­šit něco způ­so­bem, 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­po­tézy, ale nežá­doucí, když jde o pe­níze.

2. díl – pro­hlí­žeč v kor­po­raci