:

Szerző: Gálffy Csaba

2015. január 26. 16:33

EdgeHTML: a motor a Spartan mögött

Aktív kommunikációs offenzívába kezdett a Microsoft gyökeresen átalakított böngésző-stratégiája kapcsán. Ma Jacob Rossi, a böngészős csoport egyik vezető fejlesztője írt hosszú értekezést a Spartan és az új renderelőmotor fejlesztésének miértjeiről és hogyanjairól a Smashing Magazine számára, ebből szemezgettük az izgalmas részleteket.

Decemberben kezdett el szivárogni az információ, hogy a Microsoft új, az Internet Exporertől eltérő böngésző fejlesztésén dolgozik. A Spartan kódnevű szoftverről ma már elég sokat tudunk, felhasználói felülete alaposan megújul (és néhány érdekes képességet is kap), de a webfejlesztők számára még izgalmasabb kérdés a böngésző motorházteteje alatt dolgozó renderelő motor, amely a weboldalak megjelenítéséért felelős. Ez gondoskodik ugyanis arról, hogy az oldal úgy jelenjen meg, ahogy a fejlesztő szeretné - ez pedig az Internet Explorer történetét ismerve nem mindig zajlott zökkenőmentesen.

Új név: EdgeHTML

A Spartannal egy időben a Microsoft új motort is fejleszt, ez az EdgeHTML, amely a jó öreg Tridentet váltja közvetlen utódként. Az öreget itt érdemes szó szerint érteni, a Trident (MSHTML) motor az 1997-ben megjelent Internet Explorer 4-től fogva folyamatosan velünk volt és van. A Microsoft szerint a Tridentet mára túlságosan leterheli a visszafelé kompatibilitás és az évtizedes fejlesztés során rárakódott "kódrétegek". A céges filozófia szerint "senkit nem hagyunk hátra", ha egy weboldal működött és szépen jelent meg IE5.5, IE7 vagy bármelyik előző kiadás alatt, akkor az a legfrissebb Internet Explorer alatt sem törhet el. Ez az örökség azonban hatalmas teher a Trident vállán, ráadásul a modern webes trendek mellett feleslegessé is vált - állítja Jacob Rossi a Smashing Magazine-ben közzétett bejegyzésében.

A Gitlab mint DevSecOps platform (x)

Gyere el Radovan Baćović (Gitlab, Data Engineer) előadására a november 7-i DevOps Natives meetupon.

A Gitlab mint DevSecOps platform (x) Gyere el Radovan Baćović (Gitlab, Data Engineer) előadására a november 7-i DevOps Natives meetupon.

Az új motor szakít ezzel az évtizedek során lerakódott salakkal és tiszta lappal kezd. A tiszta lap itt némileg megtévesztő, hiszen nem egy vadonatúj megjelenítőről van szó, az EdgeHTML az IE11-es Trident megtisztított, kizárólag a modern szabványokra fókuszáló kiadása. Kódja azonban a Trident elágazása, nem a WebKit, a Blink vagy valamelyik egyéb motor leszármazottja.

A tiszta fork

"Tehát eldöntöttük, hogy írunk egy új motort és az IE11 szabványtámogatását használtuk alapként. Néztem, ahogy Justin Rogers, egyik mérnökünk megnyomja az Entert azon a commiton, ami forkolta a motort - majdnem 45 percbe telt, amíg ez lefutott (csak a commit, nem a build!). Mikor elkészült, felszabadító csend telepedett ránk, mivel éreztük, immár jogunk van kódot törölni, ami minden programozó munkájának egyik csúcspontja." - írja le a percet Rossi.

A fejlesztés következő néhány hónapjában pedig pontosan ezt végezte a csapat: a régi, nem szabványos működést implementáló kódot a csapat törölte. Eltűnt a VBScript, az IE8 layoutot emuláló réteg, az attachEvent, currentStyle, X-UA-Compatible és számtalan más letűnt technológia. Rossi szerint mára a kódbázis jobban különbözik az eredetitől, mint a WebKit Google-féle forkja, a Blink a saját forrásától.

A fejlesztés vezérlő elve a konzisztencia volt - vagyis a Spartannak pontosan ugyanúgy kell működnie, mint a többi modern böngészőnek, így a webfejlesztőknek nem kell több különböző motorra tesztelni, optimalizálni, csiszolni az oldalakat. A fejlesztés kezdete óta több, mint 3000 különböző ilyen interoperatibilitási problémát orvosolt a csapat (ezek egy része még a '90-es évekből maradt a Tridentben). A meglévő implementációk javításán túl több, mint 40 új webes szabvány támogatását is leprogramozták a fejlesztés során - például hosszú ideje ismert innerHTML hibák tűntek el, a motor pedig már a Flexbox-szabvány legfrissebb verzióját is ismeri. A Spartan a szabványok emelt szintű támogatása mellett megújult fejlesztői készlettel ("F12 menü") jelentkezik.

Az új motorhoz a Microsoft új user stringet is írt, amelyről Rossi is beismeri, "úgy néz ki, mint a webfejlesztők notebookjának fedlapja", vagyis szinte mindent felsorol, ami létezik a piacon. A Microsoft magyarázata egyszerű (és logikus): a cég azt szeretné elkerülni, hogy az oldalak a user string alapján zárják ki a böngészőt a modern tartalmakból - ahogy az az Internet Explorerrel gyakran előfordul. A posztban egyébként Rossi külön felhívja a figyelmet, hogy a tartalom user string alapján történő kiszolgálásának gyakorlatát minden áron érdemes elkerülni - legalábbis a Microsoft szerint.

Mi lesz a visszafelé kompatibilitással?

A Tridentben nem véletlenül volt teljeskörű visszafelé kompatibilitás, rengeteg belső nagyvállalati weboldal van, amely az Internet Explorer egy korai változatára optimalizált, más böngészővel pedig egyszerűen képtelen működni. Az ilyen oldalak kedvéért az EdgeHTML mellett marad a Trident is, utóbbit akkor tölti be a böngésző, ha érzékeli, hogy az oldalnak kifejezetten arra van szüksége. A váltás a felhasználó számára teljesen transzparensen történik, és kizárólag a belső hálózaton működik - a weben soha, semmilyen körülmények között nem kapcsol vissza Tridentre a böngésző.

A "kétmotoros" megközelítés eredményeképp a Trident fejlesztése ettől a ponttól leáll, a renderelő a jövőben kizárólag biztonsági frissítéseket fog kapni. Az új szabványok implentációja az EdgeHTML-re korlátozódik, ez a motor a Microsoft ígérete szerint minden figyelmet megkap ahhoz, hogy mindig friss maradjon.

A motorok kettősségét a böngésző kettőssége is tükrözi. A Spartan mellett a Windows 10 része lesz az Internet Explorer is, mivel rengeteg nagyvállalati technológia használatához nélkülözhetetlen az IE speciális kiterjesztéseinek (ActiveX, eszköztárak, browser helper objektumok) támogatása. Ezt a támogatást nem vitte át a Microsoft a Spartanba, így a nagyvállalatok kedvéért a rendszerben benne marad az Internet Explorer is, külön "céges" böngészőnek. A webfejlesztők megnyugtatására Rossi gyorsan közli: az IE is kizárólag EdgeHTML-t használ a weben, így a Trident motort még akkor sem használhatja a felhasználó a weben, ha IE-re vált a Spartanról. A Chakra JavaScript motor ugyanakkor egységes marad és egyként fejlődik tovább.

Beszéljünk róla!

A Microsoft imázsváltásával összhangban a böngészős csapat is igyekszik barátságosabb hangot megütni és aktív kommunikációt kezdeményezni a webfejlesztőkkel. A böngészőt készítő csapat egyre nyíltabban beszél a terméktervekről, a következő fejlesztésekről és a szabványok támogatásának előre látható implementációjáról, ez például a Modern.ie státusz-oldalán is ma is követhető és a jövőben is frissülni fog.

Az EdgeHTML már kipróbálható, a motor első verziója ugyanis bekerült a Windows 10 Technical Preview múlt heti kiadásába. A motor alapértelmezésben nem aktív, azt az Internet Explorer about:flags oldalán kézzel kell bekapcsolni. Rossi ígérete szerint hamarosan a Spartan is elérhető lesz, szintén a Windows 10 egyik előzetesének részeként. Az OS X-et használó fejlesztők számára a Spartan és az EdgeHTML hamarosan a Remote.IE "böngésző-a-felhőben" ingyenes szolgáltatáson keresztül is kipróbálható lesz.

November 25-26-án 6 alkalmas K8s security és 10 alkalmas, a Go és a cloud native szoftverfejlesztés alapjaiba bevezető képzéseket indítunk. Az élő képzések órái utólag is visszanézhetők, és munkaidő végén kezdődnek. November 8-ig early bird kedvezménnyel!

a címlapról