Vanwege verschillen met het beleid van Mozilla en distributies die geen versies van Firefox verspreiden waarmee niet-ondertekende add-ons kunnen worden geïnstalleerd en de API WebExtensions Experiments kunnen worden gebruikt, is er een tool ontwikkeld die gewone versies van Firefox omzet naar een 'Developer Edition', die het gebruik van add-ons zonder digitale handtekening toestaat.
De ontwikkeling van de tool werd vergemakkelijkt doordat de vereiste functionaliteit in Firefox is geïmplementeerd in ECMAScript-code en deel uitmaakt van elke versie van Firefox, maar tijdens het uitvoeren van de code wordt geactiveerd, afhankelijk van de ingestelde constanten. De constanten ('MOZ_DEV_EDITION', 'MOZ_REQUIRE_SIGNING') worden gedefinieerd in één bestand ('modules/addons/AddonSettings.jsm'), dat zich bevindt in het zip-archief '/usr/lib/firefox/omni.ja'.
De voorgestelde utility parse het benodigde bestand met behulp van esprima-python, patcht de AST en serializeert met behulp van jscodegen.py. Het werken met het zip-formaat wordt mogelijk gemaakt door libzip.py - bindingen voor libzip. Het is aan te raden om de genoemde bibliotheken handmatig te installeren vanuit de bijbehorende git-repositories.
Bovendien kan het script unpin.py worden opgemerkt, dat het mogelijk maakt om de beperkingen '{', '==' en '~=' op versies van afhankelijkheden in het voorgecompileerde pakket van het wheel-formaat los te koppelen, dat door veel ontwikkelaars wordt gebruikt, wat voorkomt dat automatisch een downgrade plaatsvindt bij het installeren van het benodigde pakket via pip met de standaardinstellingen.
Bron: opennet.ru
