Aufgrund der Unvereinbarkeit mit der Mozilla-Politik sowie den Distributionen, die keine Builds von Firefox verbreiten, die die Installation nicht signierter Erweiterungen und die Nutzung von API WebExtensions Experiments ermöglichen, wurde ein Werkzeug entwickelt, das reguläre Firefox-Bauten in eine „Developer Edition“ umwandelt, die die Verwendung von nicht digital signierten Erweiterungen erlaubt.
Die Entwicklung des Werkzeugs wurde dadurch erleichtert, dass die erforderliche Funktionalität in Firefox bereits in ECMAScript-Code integriert ist und Teil jeder Firefox-Version ist, jedoch zur Laufzeit entsprechend den festgelegten Konstanten aktiviert wird. Die Konstanten („MOZ_DEV_EDITION“, „MOZ_REQUIRE_SIGNING“) sind in einer Datei („modules/addons/AddonSettings.jsm“) definiert, die sich im zip-Archiv „/usr/lib/firefox/omni.ja“ befindet.
Das vorgeschlagene Tool analysiert die benötigte Datei mit esprima-python, patcht den AST und serialisiert ihn mit jscodegen.py. Der Umgang mit dem zip-Format erfolgt über libzip.py – Bindings zu libzip. Es wird empfohlen, die genannten Bibliotheken manuell aus den entsprechenden Git-Repositories zu installieren.
Zusätzlich kann das Skript unpin.py erwähnt werden, das die Einschränkungen für die Versionsangaben «{«, «==» und «~=» in vorgefertigten Wheel-Paketen aufhebt, die von vielen Entwicklern verwendet werden. Dadurch wird ein automatisches Downgrade bei der Installation des benötigten Pakets über pip mit den Standard-Einstellungen vermieden.
Quelle: opennet.ru
