Mozilla объявила, что Firefox делает еще один шаг к тому, чтобы стать похожим на Chome. Проще говоря, Firefox отказывается от своей базовой технологии XUL и XCOM и принимает надстройки Chrome вместо своих собственных.
На первый взгляд заявление Mozilla о переходе на стандартный API для надстроек кажется разумным. Если бы все браузеры поддерживали один и тот же API надстройки, нам нужно было бы написать только одно универсальное дополнение, и оно работало бы со всем. Это та же утопическая мечта, которая движет остальной частью Интернета в форме HTML, CSS, JavaScript и других стандартов.
Но с расширениями для браузеров дело обстоит сложнее. Можно сказать, что Firefox важен из-за своей модели расширений. Firefox с самого начала создавался с использованием веб-технологий. Его внутреннее устройство основано на XUL и XCOM, оба из которых основаны на веб-стандартах. XUL близок к HTML, что означает, что пользовательский интерфейс Firefox подобен веб-странице, а расширения Firefox могут взаимодействовать со страницей, загруженной в браузере, и пользовательским интерфейсом браузера таким же образом и на глубоком уровне. Это стало известно как модель «разрешающих надстроек», но на самом деле это было главным основанием для создания Firefox в первую очередь.
Расширение Firefox может более или менее подключиться к внутренней работе браузера, чтобы радикально изменить его поведение. Это привело к тому, что Firefox стал чем-то вроде испытательного стенда и среды разработки для инновационных расширений, и это то, что скоро исчезнет.
Конечно, с другой стороны, такая тесная интеграция с внутренними компонентами браузера означает, что расширения могут быть хрупкими. Известно, что расширения ломаются из-за изменений кода, которые не должны были иметь никакого эффекта.
Согласно блогу Mozilla Addon-ons:
«В самых крайних случаях изменение форматирования метода в Firefox может вызвать проблемы, вызванные надстройками, которые изменяют наш код с помощью регулярных выражений. Надстройки также могут вызывать сбой Firefox, когда они используют API-интерфейсы неожиданным образом».
По-видимому, этого достаточно, и в этом сообщении в блоге объявляется, что XUL и XCOM должны быть постепенно заменены гораздо менее мощным API — WebExtensions. Это API JavaScript, который предоставляет доступ только к тем частям браузера, которые включены в его вызовы.
API-интерфейс Mozilla WebExtensions должен быть совместим с API-интерфейсом Google Blink. В блоге говорится:
«С этой целью мы внедряем новый, совместимый с Blink API в Firefox под названием WebExtensions. Код расширения, написанный для Chrome, Opera или, возможно, в будущем, Microsoft Edge будет работать в Firefox с небольшими изменениями как WebExtension».
В настоящее время реализованы не все API WebExtensions. Совершенно очевидно, что шансы надстройки Chrome работать с Firefox без каких-либо модификаций равны нулю. Это означает, что пользователи не смогут заменить старые неподдерживаемые расширения расширениями Chrome, если они не поддерживаются, и программист не захочет поработать.
Что еще более странно в этой несовместимой совместимости, так это то, что Mozilla признает, что новый API слишком слаб для поддержки многих существующих надстроек. В результате он планирует реализовать в API дополнительные функции для Firefox и перечисляет следующее:
Функциональность типа NoScript. Это могло бы появиться в виде расширений для webRequest и, возможно, contentSettings.
Боковые панели. Opera уже поддерживает функции боковой панели; Хром может скоро. Мы хотели бы иметь возможность реализовать вкладки в стиле дерева или вертикальные вкладки, скрывая полосу вкладок и показывая боковую панель вкладок.
Панели инструментов. В Firefox есть множество надстроек для панели инструментов.
Лучшая поддержка сочетаний клавиш. Мы хотели бы поддерживать функциональность типа Vimperator.
Возможность добавлять вкладки в about: addons.
Возможность изменять полосу вкладок (Tab Mix Plus).
Возможность делать изображения рамок / вкладок (например, canvas.drawWindow)
Это также дает вам некоторое представление о том, насколько слаб существующий API.
Таким образом, мы можем перенести расширения Chrome в Firefox, а затем расширить их, чтобы они работали только в Firefox.
Еще одна хорошая вещь в изменении API заключается в том, что он поддерживает многопроцессорные браузеры. До сих пор Firefox был однопоточным браузером, и это имело существенные недостатки. Проект Electrolysis работал над его преобразованием, чтобы каждая вкладка работала в своем собственном потоке. Однако это означает, что существующие надстройки в большинстве случаев работать не будут. Новые надстройки, использующие API WebExtensions, будут работать.
Добавьте к этому тот факт, что начиная с Firefox 42 все надстройки должны быть подписаны Mozilla, и вы увидите, что вся инфраструктура надстроек Firefox и экосистема вот-вот будут уничтожены — и, надеюсь, перестроены.
Firefox уступает позиции Chrome и IE / Edge. Предположительно, эти изменения также имеют то преимущество, что Firefox может получить все надстройки, которые есть в Chrome, даже несмотря на то, что рыночная доля Firefox снизилась до 11%.
В настоящее время многие существующие разработчики Firefox недовольны тем, что приходится начинать заново, а некоторые просто откажутся от браузера после того, как существующий API будет удален и доступ ограничен.
График всех этих изменений довольно быстр:
Подписание расширений начинается с Firefox 41, хотя в сентябре этого не происходит. Электролиз, то есть многопоточность, должен быть развернут для конечных пользователей в декабре. Надстройки на основе XUL / XCOM будут прекращены через 12–18 месяцев.
Также есть намек на то, что XUL / XCOM будут полностью удалены из Firefox, хотя это займет намного больше времени.
Вы не можете не заметить отчетливую прохладу в воздухе по отношению к Firefox, где когда-то было столько розового сияния.