План прекращения совместимости Firefox со старыми дополнениями
Разработчики проекта Mozilla опубликовали план постепенного прекращения поддержки дополнений, не переведенных на API WebExtensions или несовместимых с многопроцессным режимом работы Firefox. Как и было намечено ранее, полный переход на WebExtensions и прекращение поддержки XUL-дополнений ожидается в Firefox 57, который выйдет 28 ноября. В Firefox 57 также будет удалена прослойка для обеспечения совместимости с дополнениями, испытывающими проблемы с многопроцессным режимом работы.
В Firefox 53, намеченном на 18 апреля, многопроцессный режим будет включен по умолчанию для всех пользователей, с некоторыми исключениями. В частности, если установленное и активное дополнение снабжено специальным флагом multiprocessCompatible=false, указывающим на несовместимость с многопроцессным режимом, то Firefox будет запущен в однопроцессном режиме. Если дополнение не содержит данный флаг, но присутствует в черном списке дополнений, несовместимых с многопроцессным режимом, Firefox запустится в многопроцессном режиме, а дополнение будет отключено.
Кроме того, в Firefox 53 будет прекращена работа дополнений, загружающих бинарные компоненты и разделяемые библиотеки непосредственно в процесс Firefox. Загрузка бинарных компонентов будет разрешена только для дополнений, написанных с использованием WebExtensions и API Native Messaging, что подразумевает запуск связанного с дополнением исполняемого файла в отдельном процессе и организацию канала связи с ним.
В выпуске Firefox 54, ожидаемом 13 июня, планируется активировать sandbox-изоляцию, ограничивающую доступ дочерних процессов Firefox к системным вызовам, файловой системе и сторонним процессам. Для изоляции в Linux будет применяться ограничение доступа к системным вызовам при помощи Seccomp-bpf, также для изоляции используются PID namespace и chroot в пустую директорию. В Windows применяются разработанные Google библиотеки sandboxbroker и sandboxtarget, используемые в Chromium и Chrome.
В выпуске Firefox 55, намеченном на 8 августа, многопроцессный режим будет расширен средствами обработки контента в разных процессах. В отличие от уже применяемого разделения на два процесса - один для обработки содержимого вкладок и один для формирования интерфейса, новая возможность позволяет запустить более одного процесса для обработки контента. Подобный подход позволяет обеспечить дополнительную изоляцию обработчиков, повысить надежность (крах одной вкладки не приведет к закрытию всех остальных вкладок), повысить эффективность использования ресурсов многоядерных процессоров (разнесение нагрузки на все ядра), уменьшить фрагментацию памяти при длительной работе браузера.
Что касается каталога дополнений addons.mozilla.org (AMO), то начиная с 18 апреля, когда выйдет Firefox 53, будет прекращен прием дополнений к Firefox, не переведенных на технологию WebExtensions. Для XUL-дополнений, имеющих цифровую подпись, привязанную к Thunderbird или SeaMonkey, данное ограничение применяться не будет. Прием обновлений к ранее размещенным XUL-дополнениям будет продолжен, в том числе после ноябрьского релиза Firefox 57, в котором будет прекращена возможность использования дополнений, не переведенных на WebExtensions. Решение о времени полного блокирования XUL-дополнений в каталоге addons.mozilla.org пока не принято.
Напомним, что API WebExtensions построен с использованием штатных web-технологий, а разработка дополнений напоминает создание web-приложений на основе единых стандартов. Переход на новый API позволит унифицировать разработку дополнений с платформами Chrome, Opera, Safari и Edge, и упростить портирование дополнений между различными web-браузерами. Переход на WebExtensions также позволит полноценно использовать многопроцессный режим работы - дополнения WebExtensions могут выполняться в отдельных дочерних процессах, изолированно от остальных частей браузера. Различия между API Chrome и WebExtensions можно отследить на данной странице.