Firefox 48: célegyenesben az Electrolysis
Már a célegyenesben az Electrolysis projekt! - jelentette be a Mozilla, illetve személyesen Asa Dotzler, a fejlesztés egyik vezető alakja. Dotzler szerint a tesztek jól haladnak, így a Firefox 48-cal a stabil ágon is megjelenik a drámaian átalakított belső architektúra.
Az Electrolysisről sokadszorra
A 2009-ben (!) indult projekt célkitűzése, hogy külön programfolyamatra (process) rendezi a tartalmat-renderinget (a weboldalon futó JavaScriptet például) és a böngésző egyéb programrészeit (például a görgetést vagy a UI-t), így például a JavaScript szemétgyűjtése (garbage collection) nem akasztja be a felhasználói felületet, illetve ha a tartalom valamiért terheli a CPU-t, akkor attól még a UI használható marad. És persze a szétbontás a többmagos processzorok kihasználásához is szükséges.
Illusztrációképp kerestünk valamit 2009-ből. Ez egy BlackBerry Tour.
A Mozilla Wiki szerint az Electrolysis a webes tartalom futtatását és renderelését a háttérben futó child process-ek végzik, amelyek a fő programfolyamattal különböző IPDL protokollokon kommunikálnak. A megközelítésnek rögtön két előnye van, mind a biztonságot, mind a teljesítményt nagyban javítani tudja. A biztonságot úgy, hogy a fő programfolyamatot (és annak jogosultságait) elszigeteli a webes tartalomtól, a teljesítményt pedig úgy, hogy jobban kihasználhatóvá teszi a kliens számítási kapacitását. Nem mellékesen a stabilitásnak is jót tesz a szétszálazás, így egy-egy process hibája nem rántja magával a teljes böngészőt és az összes megnyitott weboldalt. Hogy ez mennyire fontos, azt jól mutatja, hogy a Chrome az első verzió óta, az Internet Explorer pedig 2009-tól használ multiprocess architektúrát - ezt talán idén a Firefoxnak is sikerül meglépnie.
A jelenlegi, élesíteni tervezett implementációban a régi NPAPI-t használó beépülők kapnak dedikált process-t, de külön folyamatban fut a médialejátszás és a webes tartalom. A jövőben ehhez csatlakozhat a grafikus megjelenítés (composition), illetve a WebExtensions API-t használó kiegészítők is.
Néhány ábra 2011-ből. Gyakorlatilag ez jött most meg.
Ahogy az első bejelentés óta eltelt cirka hét év mutatja, a monolitikus Firefox szétrobbantása azonban a vártnál sokkal-sokkal komolyabb projektnek bizonyult. Az első felismerés 2011-ben jött, amikor a Mozilla úgy döntött, hogy más, sürgetőbb fejlesztésekre csoportosítja át az erőforrásokat, az Electrolysist pedig leállítja. Ennek akkor több, amúgy helytálló oka volt. Egyrészt a Firefox ezidőtájt kezdett komolyan részesedést veszíteni a gyorsabb, könnyűsúlyú Chrome-mal szemben, a felhasználók imádták, hogy a Chrome egyszerűen gyorsabb és kevesebb memóriát használ, a JavaScriptben pedig megalázó vereséget mért mindenkire.
A felfüggesztés másik oka lehetett, hogy az Electrolysis nem volt kompatibilis a beépülőkkel, 2011 táján pedig ezek a pluginek jelentették a Chrome-mal szemben a Firefox legnagyobb versenyelőnyét. A kiépült és amúgy prosperáló ökoszisztémát pedig a Mozilla vezérkara nem merte egy mozdulattal kidobni, akármekkora architektúra-hátrányba is került ezzel a Firefox.
Ilyen körülmények között a fejlesztők inkább úgy döntöttek, hogy az erőforrásokat oda csoportosítják át, ahol egységnyi befektetéssel a legnagyobb hatást lehet elérni (például a JavaScript-motornál), az Electrolysis pedig várhat. A munka így csak 2013-ban indult el újra, ez fordult (remélhetőleg) termőre idén a Firefox 48-cal.
Éles lesz? Talán.
A hosszúra (és már régen abszurdba) nyúlt történetnek ezzel még mindig nincs azért vége. Az Electrolysisnek ugyanis még mindig komoly kompatibilitási problémái vannak, emiatt nem mindenki számára élesíti egyelőre a Mozilla ezt a képességet. Dotzler becslése szerint nagyjából a felhasználói bázis fele kapja meg azonnal a fejlesztést, a másik fele majd valamikor később használhatja az évtizedes találmányt. És hogy ki került a második csoportba? A Windows XP-felhasználók, a felolvasó-programok használói, a böngészőt jobbról-balra írásmóddal használók és mindenki, aki használ bármilyen kiegészítőt.
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.
Mivel nagyon komoly belső architekturális változásokat hoz az Electrolysis, a funkciót csak nagyon óvatosan meri a Mozilla élesíteni a felhasználóknak. Így első körben csak a kompatibilis (tehát a fenti csoportokba nem tartozó) telepítések 1 százalékánál aktiválódik az Electrolysis, amit a terv szerint 10 napos adatgyűjtés követ, és ha a fejlesztők mindent rendben találnak, akkor a következő hetekben fokozatosan élesedik az a többi felhasználó számára is. Ha az analitika problémát mutat, akkor a rolloutot a Mozilla fel tudja függeszteni, ha pedig kritikus a helyzet, akkor gombnyomásra mindenhol lekapcsolható a fejlesztés.
Dotzler leszögezi, hogy a cél az, hogy minden Firefox-felhasználónál működjön az Electrolysis, de annyira mélyek a változások, hogy azonnal nem lehet sok százmillió felhasználónál gombnyomásra bekapcsolni a technológiát.
Tovább is van
Az Electrolysis csak a kezdet a Firefox architektúrájának átalakításához. A következő lépés - kapaszkodjunk meg - a tartalmat futtató programfolyamat további szétszálazása lesz, várhatóan külön folyamatban fut majd a minden fül (ez a képesség a Chrome-ban 2008-ban debütált). A még távolabbi jövőben a biztonsági sandbox, illetve a kiterjesztések külön folyamatokba történő kiszervezése látszik. Arra, hogy ezek a fejlesztések mikor kerülhetnek bele a stabil kiadásba, Dotzler egyelőre nem tippelt.