A Manifest V3 árnyékában mi lesz veletek Firefox kiegészítők?

kami911 képe

Közel évvel ezelőtt a Google előterjesztette a Manifest új verzióját a v3-at, amely számos alapvető változtatást tartalmazott a Chrome bővítmény keretrendszerében. E változások közül sok új inkompatibilitást vezet be a Firefox és a Chrome között. A Mozilla Firefox fejlesztői szeretnék fenntartani a kompatibilitás magas fokát a böngészők közötti fejlesztés támogatása érdekében. A Firefox megkapja a Manifest v3 támogatást a Firefox bővítményekhez. Azonban ott lesz eltérés a Chrome implementációjától, ahol úgy gondolják a Mozillánál, hogy ez fontos, mert az Mozilla értékei más megoldás felé mutatnak. A közös munka érdekében a W3C keretében megalakult egy közösségi csoport is a böngészőkön átívelő WebExtensions (WECG) fejlesztésére.

A Firefox tehát támogatni fogja az Manifest v3-at, és a Service Worker-ek is használható lesz, mint a háttéroldalak (background pages) helyettesítőjét. Az elmúlt két évben nyilvánvalóvá vált, hogy számos felhasználási eset veszélybe kerülne, ha ez a jelenlegi formájában folytatódna, ezért visszatértünk a tervezőasztalhoz. A WECG-ben javasolta a Firefox fejlesztői az Eseményoldalak (Event Pages) használatát, amit a közösség is üdvözölt, és az Apple támogatta a Safari böngészőben.

A Mozilla egy Developer Preview programot is indított, hogy visszajelzéseket gyűjtsön az Manifest v3 (Mv3) megvalósításával kapcsolatban. Az előzményeket áttekintve vizsgáljuk meg, hogy milyen döntéseket hoztak az Mv3 Firefoxban történő bevezetése során, milyen fejlesztések a legérdekesebbek illetve, hogy milyen módon tértek el a Chrome által eredetileg javasolt modelltől.

Miért fogadták el az MV3-at?

Amikor 2015-ben a Firefox fejlesztői úgy döntöttek, hogy áttérnek a WebExtensions-re, ez egy hosszú távú beruházás volt a böngészők közötti kompatibilitásra. A felhasználókat az szolgálja a legjobban, ha a hasznos bővítmények a lehető legtöbb böngészőhöz elérhetők. 2017 végére lezajlott ezt az átállást, és a Firefox teljesen áttért a WebExtensions modellre. Ma már számos platformokon átívelő bővítmény csak minimális változtatásokat igényel ahhoz, hogy a főbb böngészőkben működjön. Ezt a lépést hosszú távú sikernek tekinthető, és a Firefox mögött álló Mozilla továbbra is elkötelezett a modell mellett.

Ezek után 2018-ban a Chrome bejelentette a Manifest v3-at, majd a Microsoft elfogadta a Chromium böngészőt az új Edge böngésző alapjaként. Ez azt jelenti, hogy az MV3 támogatása a Chromium-alapú böngészők együttes részesedése révén a belátható jövőben a böngészőbővítmények de facto szabványa lesz. A WECG keretében a többi böngészőgyártóval való együttműködés a legjobb út egy olyan egészséges ökoszisztéma felé, amely egyensúlyt teremt a felhasználók és a fejlesztők igényei között. A Mozilla számára ez egy hosszú távú irány a WebExtensions szabványok által vezérelt jövőjére.

Miért fontos a Manifest v3 a WebExtensions fejlesztése szempontjából?

A Manifest v3 a WebExtensions következő iterációja, és lehetőséget kínál olyan fejlesztések bevezetésére, amelyek egyébként a visszafelé kompatibilitással kapcsolatos aggályok miatt nem lennének lehetségesek. Az Manifest v2-nek olyan architekturális korlátjai voltak, amelyek megnehezítették néhány kérdés megoldását; az Manifest v3-mal képesek az iparági fejlesztők változtatásokat eszközölni ennek megoldására.

A kiterjesztés architektúrájának egyik központi része a háttéroldal (Background Page), amely eleve állandóan fut. A memória- vagy platformkorlátok miatt (például: Androidon) nem lehet garantálni ezt az állapotot, és a háttéroldal leállítása (a bővítménnyel együtt) néha elkerülhetetlenül megtörténik. Az Mv3-ban új architektúrát vezetnek be: a háttérszkriptet úgy kell megtervezni, hogy újraindítható legyen. Ennek támogatására átdolgozták a meglévő rendszereket és új API-kat vezettek be, lehetővé téve a bővítmények számára, hogy megadhassák, hogyan viselkedjen a böngésző a háttérszkript igénybevétele nélkül.

A bővítmények másik alapvető része a tartalomszkriptek, amelyek közvetlenül interakcióba lépnek a weboldalakkal. Itt alapvető feladat megakadályozni a nem biztonságos kódolási gyakorlatokat, és biztonságosabb alternatívákat kínálni a bővítmények alapbiztonságának javítása érdekében: a bővítmény API-iból eltávolították a karakterlánc-alapú kódfuttatást. Ezen túlmenően, a különböző eredetű adatok elszigetelésének javítása érdekében a tartalomszkriptekből többé nem lehetségesek cross-origin kérések, kivéve, ha a céloldalak a CORS segítségével engedélyezik azt.

A webhely-hozzáférés felhasználói ellenőrzése

A bővítményeknek gyakran kell hozzáférniük a webhelyek felhasználói adataihoz. Miközben ez lehetővé tette, hogy a bővítmények hatékony funkciókat nyújtsanak és számos felhasználói igényt kielégítsenek, olyan visszaélésekkel előfordultak, amelyek hatással vannak a felhasználók adatvédelmére.

Az Mv3-tól kezdődően a bővítményektől érkező minden webhely-hozzáférési kérelem opcionális lesz, és a felhasználók számára átláthatóságot és vezérlést biztosítva. Így könnyebben kezelhetik, mely bővítmények férhetnek hozzá, mely webhelyek adataihoz.

Ugyanakkor ösztönözni kell a bővítménykészítőket, hogy olyan hozzáférési-modelleket használjanak, amelyek nem igényelnek állandó hozzáférést minden weboldalhoz, megkönnyítve a hozzáférés megadását a szűk körű vagy csak ideiglenes hozzáférést igénylő bővítmények számára. A felülvizsgálat zajlik, azzal kapcsolatban, hogyan lehet a legjobban kezelni azokat az eseteket, például az adatvédelmi és biztonsági kiterjesztéseket, amelyeknek a felhasználók teljes körű védelme érdekében az összes weboldal elfogására vagy befolyásolására van szükségük.

Vajon a Mozilla követi a Google-t ezekkel a változtatásokkal?

A böngészőbővítmények valódi szabványának hiányában a Firefox fejlesztői és felhasználói számára fontos a Chrome-mal való kompatibilitás fenntartása. A Firefox azonban nem köteles a v3 minden részét megvalósítani, és a Firefox WebExtensions API már a v2 alatt is számos olyan területen eltér, ahol szerintünk ennek van értelme.

A meglévő bővítmények továbbra is működni fognak a Manifest v3-ban?

A Google által javasolt változtatások, például a háttérfolyamatú Service Workerek használata, nem visszafelé kompatibilisek. A fejlesztőknek át kell alakítaniuk a bővítményeiket, hogy alkalmazkodjanak ezekhez a változásokhoz.

Mi lesz másképpen a Firefox böngészőben?

A WebRequest

A Chrome Manifest v3 megközelítésének egyik legvitatottabb változása a WebRequest blokkolásának eltávolítása, amely olyan szintű teljesítményt és rugalmasságot biztosít, amely kritikus fontosságú a fejlett adatvédelmi és tartalomblokkolási funkciók lehetővé tételéhez. Sajnos ezt a hatalmat arra is felhasználták, hogy különböző módon károsítsák a felhasználói élményt és lehetőségeket. A Chrome megoldása az Mv3-mal egy szűkebb hatókörű API (declarativeNetRequest) definiálása volt helyette. Ez azonban megfelelő helyettesítés nélkül korlátozza bizonyos típusú adatvédelmi bővítmények képességeit (például: reklámblokkolók).

A Mozilla továbbra is támogatni fogja a WebRequest blokkolását az Mv3-ban. A többi böngészővel való kompatibilitás maximalizálása érdekében a declarativeNetRequest támogatását is szállítani fogja. A Mozilla továbbra is elszántan együtt fog működni a tartalomblokkolókkal és az API más kulcsfontosságú felhasználóival, hogy adott esetben jelenlegi és jövőbeli alternatívákat határozzon meg. A tartalomblokkolás a bővítmények egyik legfontosabb felhasználási területe, és Mozilla elkötelezett amellett, hogy a Firefox-felhasználók számára a legjobb adatvédelmi eszközöket biztosítsa

Az Esemény oldalak (Event Page)

A Chrome böngésző Manifest v3 verziója bevezette a Background Service Worker-t a (tartós) Background Page (háttéroldal) helyettesítésére. A Mozilla kompatibilitási okokból, de azért is dolgozik a bővítmény Service Worker-eken a Firefox böngészőben, mert tetszetős, ahogy ezek egy eseményvezérelt környezetet alkotnak, meghatározott élettartammal, amely már a Web Platform része, kiváló böngészők közötti támogatással.

Sajnos a Service Worker-ek nem tudják teljes mértékben támogatni a fontosnak tartott különböző felhasználási eseteket, különösen a DOM-mal kapcsolatos funkciók és API-k körül. Emellett a munkakörnyezet nem annyira ismerős a rendszeres webfejlesztők számára, és a fejlesztői közösség is kifejezte, hogy a bővítmények teljes átírása fárasztó lehet a meglévő bővítmények több ezer független fejlesztője számára.

A Firefox fejlesztői úgy döntöttek, hogy az Manifest v3-ben támogatják az eseményoldalakat, és a Service Worker-eket is. Ez segíteni fogja a fejlesztőket abban, hogy könnyebben átállítsák a meglévő, perzisztens háttéroldalakat az Mv3 támogatására, miközben megtartják az Mv2-ben elérhető összes DOM-mal kapcsolatos funkcióhoz való hozzáférést. Egy következő kiadásban a Firefox támogatni fogja az Eseményoldalakat is az Manifest v2-ben, ami további segítséget nyújt a migrációhoz, mivel lehetővé teszi a bővítmények számára, hogy a meglévő Mv2-es bővítményeket több kiadáson keresztül átállítsák.

2022-ben kiadták a MV3, a bővítményplatform legújabb verziójának kezdeti implementációját a Firefoxban. Azóta keményen dolgoztak más böngészőfejlesztőkkel és a közösségi tagokkal együttműködve a W3C WebExtensions Community Group (WECG) keretein belül. Közös céljaink között szerepelt a bővítmény API-k fejlesztése és a böngészők közötti kompatibilitás kezelése. Ez az együttműködés eddig nagyszerű eredményeket hozott, és büszkék vagyunk arra, hogy részvételünk alapvető szerepet játszott ezeknek az API-knak a kialakításában és tervezésében, hogy szélesebb körű alkalmazhatóságot biztosítsunk a különböző böngészőkben.

A Manifest v3 fejlesztői előnézeti programjával kiegészítők szerzői tesztelhették az Mv3 implementációt, hogy segítsenek azonosítani a hiányosságokat vagy inkompatibilitásokat a megvalósításunkban. A munka ezzel párhuzamosan folytatódott, és 2022 végére, a Firefox 109-cel minden felhasználó számára elérhetővé vált az Mv3 támogatása.

A bővítményfejlesztők feltölthetik a Firefox Manifest 3 (Mv3) kompatibilis bővítményeiket az addons.mozilla.org (AMO) weboldalra, és Mv3-as bővítményként aláírhatják azokat.

Ki kell hangsúlyozni, hogy a Firefox a belátható jövőben továbbra is támogatni fogja az MV2 kiterjesztéseket, miután az MV3 kiterjesztések 2023. január 17-én, a Firefox 109 kiadásában elérhetővé váltak. A cél az volt, hogy a kiterjesztésfejlesztők számára zökkenőmentes átmenetet legyen az Mv2-ről az Mv3-ra. Fokozatos megközelítést alkalmazva és az Mv3 fejlődésével párhuzamosan visszajelzéseket gyűjtve arra számítanak a Mozillánál, hogy idővel lehetőségek nyílik majd a kezdeti Mv3 képesség-kínálat módosítására. Ezekben az esetekben szándékuk volt elegendő időt szánni arra, hogy megalapozott döntéseket szülessen a Firefox megközelítéssel kapcsolatban.

2023 vége felé döntést hoznak az Mv2 elavultatásának megfelelő időkeretéről. Ami egyelőre az lett, hogy nem lett ilyen időkeret. Ezt az útmutató a kiegészítők MV2 és MV3 verzióinak közötti migrációról és AMO-n való támogatásáról szól.

A Firefox továbbra is támogatja a DOM-alapú háttérszkripteket az Eseményoldalak (Event pages) formájában, valamint a blokkoló webRequest funkciót. A Chrome MV3 verziója service worker-alapú háttérszkripteket követel meg, amit egyelőre nem támogat a Firefox. Azonban egy bővítmény megadhatja mindkettőt, és így működhet a Chrome 121+ és a Firefox 121+ verzióiban is. Az Eseményoldalak és a blokkoló webRequest támogatása egy eltérés a Chrome-tól, amely lehetővé teszi olyan esetek kezelését, amelyeket a Chrome MV3 implementációja nem fed le.

És mi lesz az MV2-vel, kérdezed? Jó kérdés – ha esetleg lemaradtál róla, a Google a múlt év végén bejelentette, hogy folytatja az MV2 elavulási ütemtervének végrehajtását. A Firefox-nak azonban továbbra sincs szándékában megszüntetni az MV2 támogatását, és a belátható jövőben továbbra is támogatni fogja az MV2 bővítményeket. Még ha a jövőben újraértékelik is ezt a döntést, várhatóan legalább 12 hónapos értesítést biztosítanakk a fejlesztők számára, hogy alkalmazkodhassanak, és ne érezzék siettetve magukat.

Ahogy terveik szilárdulnak, a jövőbeni frissítéseket az MV3 törekvéseinkkel kapcsolatban ezen a blogon osztjuk meg. Egy másik nagyszerű forrás, amit érdemes megnézni, a közelmúltbeli FOSDEM előadás, amelyet néhány csapattag tartott, „Firefox, Android és Böngészőközi WebExtensions 2024-ben” címmel.

A Mozilla elképzelése a Firefox MV3-ról

A Firefox Mv3 egyszerűsített és konszolidált API-kat, továbbfejlesztett biztonsági és adatvédelmi mechanizmusokat, valamint a mobil platformokat jobban támogató funkciókat kínál. Miközben továbbra is együttműködünk más böngészőgyártókkal és a fejlesztői közösséggel az MV3 kialakításában, alapvető szempontnak tekintjük a böngészők közötti kompatibilitást. Ennek ellenére a Firefox termék és a közösség igényeihez igazodva különálló elemeket is megvalósítunk. Szeretnénk kreatív rugalmasságot és választási lehetőséget biztosítani a bővítményfejlesztők számára, miközben a felhasználók számára a legmagasabb szintű bővítmény-szabályozási és biztonsági szabványokat biztosítjuk. A Firefox MV3 két kritikus szempontból különbözik az MV3 többi iterációjától:

Míg más böngészőgyártók az MV3-ban bevezették a declarativeNetRequest (DNR) funkciót a webes kérések blokkolása helyett, a Firefox MV3 továbbra is támogatja a webes kérések blokkolását, és a jövőben támogatni fogja a DNR kompatibilis verzióját. Úgy véljük, hogy a Web Request által elérhető blokkolás rugalmasabb, mint a DNR, így kreatívabb felhasználási eseteket tesz lehetővé a tartalomblokkolókban és más adatvédelmi és biztonsági kiterjesztésekben. A DNR-nek azonban fontos teljesítmény- és kompatibilitási jellemzői is vannak, amelyeket támogatni szeretnének.

A Firefox MV3 a Service Workers-ek helyett az Eseményoldalakat (Event Pages) kínálja háttérszkriptként, bár a kompatibilitás érdekében a jövőben tervezzük a szolgáltatásmunkások támogatását. Az Eseményoldalak olyan előnyöket kínálnak, mint a DOM és a webes API-k, amelyek a szervizmunkások számára nem állnak rendelkezésre, miközben általában egyszerűbb migrációs utat is biztosítanak.

A jövő évi következő kiadások során tovább bővítjük a Firefox MV3 kompatibilitást.

Az MV3 egy izgalmas felhasználói felületváltozást is hoz az új Egységesített bővítmények (Unified Extensions) gomb formájában (a Firefox Nightly-ban és Bétá-ban már elérhető). Ezzel a felhasználók közvetlenül irányíthatják, hogy mely bővítmények érhetnek el bizonyos weboldalakat.

Az Egységesített bővítmények gomb segítségével a Firefox-felhasználók közvetlenül szabályozhatják a weboldal-specifikus bővítményengedélyeket.

A felhasználók képesek felülvizsgálni, engedélyezni vagy visszavonni az MV3 bővítmény hozzáférését bármely weboldalhoz. Az MV2 kiterjesztések megjelennek a gomb felületén, de az engedélyekhez való hozzáférés nem elérhető. Az új Egységesített bővítmények gombról további információkat ebben a bejegyzésben talál.

Ha azt tervezi, hogy az MV2 bővítményét áttelepíti az MV3-ra, vannak olyan lépések, amelyeket még ma megtehet, hogy elinduljon az áttérés útján. Ha visszajelzései lennének itt tudja őket megtenni:

A Manifest v3 (Mv3) új, felhasználóbarát változásokat hozott a Firefoxban is, köztük az Egységes bővítmények gombot a telepített és engedélyezett böngészőbővítmények engedélyeinek (hozzáférés-vezérlés) kezelésére, amely a Firefox-felhasználók számára biztosítja a böngészőjükhöz való bővítmény-hozzáférés ellenőrzését.

Az MV2-ben a hosztjogosultságokat a felhasználó adja meg a telepítéskor, és nincs elegáns módja annak, hogy a felhasználó megváltoztassa ezt a beállítást (kivéve az eltávolítás, illetve újratelepítés és más jogosultságok kiválasztása). A Firefox MV3 új, egységesített bővítmények gombjával azonban a Firefoxban a felhasználók könnyen hozzáférhetnek és tartósan ellenőrizhetik, hogy mely bővítmények férhetnek hozzá bármely weboldalhoz, bármikor. A felhasználók szabadon megadhatják a folyamatos hozzáférést egy weboldalhoz, vagy látogatásonként dönthetnek. Ennek lehetővé tétele érdekében az MV3 a tárhelyengedélyeket (a bővítmény manifest-fájljában felsorolt) opt-in-ként kezeli (példa).

A eszköztárgomb megjeleníti a felhasználó telepített és engedélyezett bővítményeit, valamint azok aktuális jogosultsági állapotát. A panel a hosztjogosultságok kezelése mellett lehetővé teszi a felhasználó számára a bővítmény kezelését, eltávolítását vagy jelentését is. A böngészőműveletekkel rendelkező bővítmények hasonlóan viselkednek az eszköztáron, mint a panelen.

A Manifest V2 (MV2) kiterjesztések szintén megjelennek a panelen; azonban a felhasználók nem tudnak műveleteket végezni az MV2 hosztjogosultságok tekintetében, mivel azokat a telepítéskor adták meg, és ez a döntés nem vonható vissza az MV2-ben a kiterjesztés eltávolítása és újrakezdése nélkül.

Az Egységesített bővítménygombról további információkat a support.mozilla.org oldalon találhat.

(forrás, forrás, forrás, forrás, forrás, forrás)