Firefox превращается в Chrome, отказываясь от поддержки старых дополнений
Вчера Mozilla Foundation объявила о грядущих серьёзных изменениях в работе браузера Firefox. Стараясь не отставать от современных тенденций, браузер переходит на такую схему работы, где каждой отдельной вкладке будет соответствовать отдельный процесс. К сожалению, внедрение этой схемы означает, что браузеру придётся отказаться от поддержки дополнений, работающих при помощи текущего API.
Проект Electrolysis, который как раз должен обеспечить работу каждой вкладки со своим процессом, появился ещё в 2009 году. Но с тех пор он крайне вяло развивался, и постоянно переходил в стадию заморозки. Основная проблема, с которой столкнулись разработчики — невозможность подружить проект с существующим API для дополнений.
Текущее API браузера называется XPCOM (кросплатформенная объектная модель компонентов), позволяющая писать дополнения на различных языках: C++, JavaScript, Java, через слой абстракции XPConnect. Эта система помогла появлению огромного количества дополнений к браузеру, что сыграло не последнюю роль в наборе им популярности.
XPCOM позволяет дополнениям взаимодействовать с браузером на достаточно интимном уровне, дополняя и изменяя поведение всех его компонентов, от элементов интерфейса до рендера страниц. К сожалению, эта система имеет и обратную сторону — её очень сложно скрестить с идеей Electrolysis и отдельными процессами для каждой вкладки. По канонам этой идеи все дополнения должны работать в отдельных от основного браузера процессах, а в такой форме их взаимодействие с внутренностями Firefox крайне затруднено.
В попытках скрестить эти две сущности Mozilla вводила протокол CPOWs (cross process object wrappers, межпроцессные объектные обёртки), для общения между процессами. Но система получилась медленной, к тому же она не обрабатывает все возможные сценарии взаимодействия. В связи с этим от неё также решено отказаться.
Firefox обещает сохранить поддержку дополнений, использующих высокоуровневый API, если они не будут использовать XUL (язык разметки для создания динамических пользовательских интерфейсов на основе XML). В целом XPCOM, XUL и CPOW исчезнут из браузера через год-полтора.
В результате Mozilla внедряет API под названием WebExtensions на основе JavaScript и HTML, которое уже используют Chrome и Opera, а Microsoft добавляет очень похожую вещь в свой Edge. Так что положительная сторона этой затеи состоит в том, что разработчикам очень просто (теоретически) будет писать дополнения, которые будут работать во всех современных браузерах.
А плохая новость для разработчиков в том, что необходимо будет переделать текущие дополнения на работу в новой системе. Это значит, в частности, что все дополнения, которые больше не поддерживаются разработчиками (но пока всё ещё работают), канут в лету. При этом сама организация признаёт, что далеко не все существующие дополнения можно будет воспроизвести при помощи нового API, поскольку в нём просто нет всех возможностей, присутствующих в текущем API.
Кроме этого, заботясь о безопасности пользователей, Mozilla постепенно вводит обязательную сертификацию дополнений к браузеру. Уже начиная с 42-й версии браузера, которая появится в ноябре, невозможно будет установить дополнения без цифровой подписи. Такую подпись получат только те дополнения, которые будут одобрены организацией, и будут распространяться через репозиторий addons.mozilla.org.