Проект Mozilla анонсировал новый API WebExtensions для разработки браузерных дополнений, который придёт на смену традиционному API в будущих выпусках Firefox. Новый API построен с использованием штатных web-технологий и во многом совместим с API для Blink/Chrome, Opera и Safari, что позволяет унифицировать разработку дополнений для различных браузеров благодаря существенному упрощению портирования.

С новым API разработка браузерных дополнений станет похожей на разработку для Web - один и тот же код сможет работать в разных браузерах и будет зависеть от единых стандартов. С переходом на WebExtensions в Firefox после минимальных изменений смогут быть установлены дополнения, созданные для Chrome, Opera, Safari и, возможно в будущем, Microsoft Edge. По сути потребуется лишь переупаковка дополнения для разных платформ.

Кроме разрозненности методов разработки дополнений, среди проблем основанного на XUL API для создания дополнений упоминаются проблемы с работой при активации многопроцессного режима, невозможность использования XUL с многопоточным движком Servo и незащищённость от вредоносных дополнений.

Новый WebExtensions API полностью совместим с планируемым для скорого внедрения многопроцессным режимом работы Firefox и будет использовать отдельный дочерний процесс для кода дополнений. Из достоинств WebExtensions API также отмечается упрощение рецензирования дополнений, снижение зависимости от внутреннего кода (ниже вероятность поломать дополнения при изменении внутренностей браузера) и упрощение разработки дополнений.

Поддержка дополнений, разработанных с использованием XUL и XPCOM, в скором времени будет упразднена. Точный план пока не утверждён, но сообщается, что наиболее вероятно поддержка дополнений на базе XUL и XPCOM будет прекращена через 12-18 месяцев. Все зависящие от XUL и XPCOM дополнения потребуется переписать. WebExtensions API уже доступен в ночных сборках Firefox и будет поставляться начиная с выпуска Firefox 42.

Способствовать переходу на новый API также будет скорый перевод Firefox на многопроцессный режим (Electrolysis), при котором обработка содержимого каждой вкладки выполняется в отдельном процессе, отдельно от обработки интерфейса. Проблема в том, что с многопроцессным режимом в текущем виде несовместимо больше половины из протестированных дополнений, включая NoScript и Adblock Plus.

В настоящее время Electrolysis уже активирован по умолчанию в Firefox 42 Developer Edition. 3 ноября ожидается включение Electrolysis в бета-версии Firefox 43 и начало блокирования несовместимых с ним дополнений, приводящих к значительным проблемам с производительностью и стабильностью. Остальные, несовместимые с Electrolysis дополнения, будут выполняться с использованием специальной прослойки. В финальных выпусках Electrolysis может появиться по умолчанию уже в декабре в составе Firefox 43. Спустя 6 месяцев планируется удалить из Firefox CPOW (cross-process object wrappers) и прослойки для обеспечения совместимости.

Что касается проверки дополнений по цифровой подписи, то в Firefox 41 все неподписанные дополнения будут блокированы, но для пользователей будет предоставлена возможность отключения проверки через временную опцию xpinstall.signatures.required в about:config. В Firefox 42 данная опция будет удалена и для работы с неподписанными дополнениями придётся использовать ночные сборки или Firefox Developer Edition.

Источник: http://www.opennet.ru/opennews/art.shtml?num=42838