Утилита, превращающая обычные браузеры на основе Firefox в Developer Edition

В виду несогласия с политикой Mozilla и дистрибутивов не распространять сборки Firefox, имеющие незаблокированные возможности установки неподписанных дополнений и использования API WebExtensions Experiments, был разработан инструмент, поеобразующий обычные сборки Firefox в вариант “Developer Edition”, допускающий использование дополнений без цифровой подписи.

Разработка инструмента была облегчена тем, что нужная функциональность в Firefox реализована в коде на ECMAScript и входит в состав любого варианта Firefox, но включается во время выполнения кода в зависимости от установленных значений констант. Константы (“MOZ_DEV_EDITION”, “MOZ_REQUIRE_SIGNING”) определяются в одном файле (“modules/addons/AddonSettings.jsm”), который находится в zip-архиве “/usr/lib/firefox/omni.ja”.

Соответственно, предложенная утилита парсит нужный файл с помощью esprima-python, патчит AST, и сериализует с помощью jscodegen.py. Работа с форматом zip производится с помощью libzip.py – биндингов к libzip. Указанные библиотеки рекомендуется установить вручную из git.

Также можно отметить скрипт unpin.py, который позволяет отвязать ограничения “{“, “==” и “~=” на версии зависимостей в предсобранном пакете формата wheel, используемом многими разработчиками, что позволяет избежать их автоматического даунгрейда при установке нужного пакета через pip при настройках по умолчанию.

Release. Ссылка here.