Devido à discordância com a política da Mozilla e dos distribuições que não permitem a distribuição de compilações do Firefox com a instalação desbloqueada de complementos não assinados e o uso da API WebExtensions Experiments, foi desenvolvido uma ferramenta que transforma compilações padrão do Firefox em uma versão "Developer Edition", permitindo o uso de complementos sem assinatura digital.
O desenvolvimento da ferramenta foi facilitado pelo fato de que a funcionalidade necessária no Firefox está implementada em código ECMAScript e faz parte de qualquer versão do Firefox, mas é ativada em tempo de execução com base nos valores constantes definidos. As constantes ("MOZ_DEV_EDITION", "MOZ_REQUIRE_SIGNING") são definidas em um arquivo ("modules/addons/AddonSettings.jsm"), que está localizado no arquivo zip "usr/lib/firefox/omni.ja".
A utilidade proposta analisa o arquivo necessário usando esprima-python, modifica o AST e serializa com jscodegen.py. A manipulação do formato zip é fornecida pelo libzip.py — binding para libzip. É recomendável instalar as bibliotecas mencionadas manualmente a partir dos respectivos repositórios git.
Além disso, pode-se destacar o script unpin.py, que permite desvincular as restrições "{", "==" e "~=" nas versões de dependências no pacote pré-compilado no formato wheel, usado por muitos desenvolvedores, evitando assim o downgrade automático ao instalar o pacote desejado via pip com as configurações padrão.
Fonte: opennet.ru
