A causa del disaccordo con la politica di Mozilla e delle distribuzioni nel non distribuire versioni di Firefox con possibilità non bloccate di installare componenti aggiuntivi non firmati e di utilizzare le API WebExtensions Experiments, è stato sviluppato uno strumento che trasforma le versioni standard di Firefox in una variante "Developer Edition", che consente l'uso di componenti aggiuntivi senza firma digitale.
Lo sviluppo dello strumento è stato facilitato dal fatto che la funzionalità richiesta in Firefox è implementata nel codice ECMAScript e fa parte di qualsiasi versione di Firefox, ma viene attivata durante l'esecuzione del codice in base ai valori delle costanti impostate. Le costanti ("MOZ_DEV_EDITION", "MOZ_REQUIRE_SIGNING") sono definite in un file ("modules/addons/AddonSettings.jsm"), che si trova nell'archivio zip "usr/lib/firefox/omni.ja".
L'utilità proposta analizza il file necessario utilizzando esprima-python, modifica l'AST e сериалizza utilizzando jscodegen.py. Lavorare con il formato zip è supportato da libzip.py, che è il binding a libzip. Si consiglia di installare manualmente le librerie indicate dai rispettivi repository git.
Inoltre, si può notare lo script unpin.py, che consente di rimuovere le restrizioni "{", "==" e "~=" sulle versioni delle dipendenze nel pacchetto precompilato in formato wheel, utilizzato da molti sviluppatori, il che consente di evitare un downgrade automatico durante l'installazione del pacchetto desiderato tramite pip con le impostazioni predefinite.
Fonte: opennet.ru
