На этой неделе компания Google рассказала, каким именно видит поэтапный отказ от использования Manifest V2, который определяет возможности и ограничения для расширений в Chrome. Также разработчики поделились планами по доведению до полной функциональности скандально известного Manifest V3, который стал доступен еще в бета-версии Chrome 88.
Предыстория
Напомню, что впервые о Manifest V3 заговорили еще в 2018 году. Тогда разработчики Google сообщили, что намерены ограничить работу webRequest API, вместо которого блокировщики контента и другие расширения станут использовать declarativeNetRequest. Разумеется, сообщалось, что эти улучшения призваны повысить безопасность и производительность, а также дать пользователям больший контроль над тем, что расширения делают и с какими сайтами взаимодействуют.
Проблема заключалась в том, что разработчики расширений быстро обнаружили, что переход на другой API, сильно отличающийся от webRequest и во многом ему уступающий, в сущности, станет «смертью» их продуктов. В частности это касалось блокировщиков рекламы, антивирусов, решений для родительского контроля и различных продуктов, повышающих конфиденциальность.
Дело в том, что webRequest API позволяет расширениям не просто блокировать рекламный контент на страницах, но и перехватывать сетевые запросы, чтобы иметь возможность блокировать, модифицировать и перенаправлять их. Но, по мнению разработчиков Google, это слишком сильно сказывалось на скорости загрузки страниц, поэтому планировались, что в будущем webRequest API будет разрешено только читать запросы, но не вмешиваться.
В свою очередь, declarativeNetRequest позволяет Chrome (но не самому расширению) решать, как поступать с сетевыми запросами, устраняя при этом «узкое место» и повышая безопасность. Разработчики Google были уверены, что использование declarativeNetRequest API будет лучше для приватности пользователей, ведь так расширения более не смогут читать сетевые запросы, сделанные от лица пользователя.
Как уже было сказано выше, замысел Google подвергся жесткой критике. Одним из первых свою точку зрения высказал разработчик популярных блокировщиков uBlock Origin и uMatrix Реймонд Хил (Raymond Hill). К примеру, он объяснял, что declarativeNetRequest предлагает разработчикам единственную имплементацию фильтровочного движка, к тому же ограниченную всего 30 000 фильтров, что не выдерживало сравнения даже с EasyList.
Хилл предупредил, что отказ от webRequest станет «смертью» для его продуктов, а также выразил опасение, что переход на API declarativeNetRequest может пагубно сказаться на работе других решений, и эту точку зрения поддержали множество других разработчиков.
В итоге, под давлением общественности разработчики Google были вынуждены отказаться от некоторых обновлений из числа Manifest V3, а затем пересмотрели свои планы еще больше, отменив еще ряд изменений.
С тех пор изменения Manifest V3 уже начали внедрять в Chrome, и недовольство постепенно утихло, хотя некоторые разработчики блокировщиков, похоже, просто смирились тем, что их продукты не смогут надежно блокировать рекламу, как только изменения достигнут стабильных версий Chrome.
Планы по внедрению Manifest V3
Как теперь пишет Дэвид Ли (David Li), менеджер по продуктам Chrome Extensions и Chrome Web Store:
«Разрабатываемый годами Manifest V3 стал более безопасным и производительным, чем его предшественник, а такжелучше обеспечивает конфиденциальность. Это эволюция платформы расширений, которая учитывает меняющийся веб-ландшафт и будущее расширений для браузеров».
Ли рассказывает, что Google постепенно откажется от Manifest V2, и в этом процессе уже обозначены две ключевые даты:
- 17 января 2022 года: новые расширения с поддержкой Manifest V2 больше не будут приниматься в Chrome Web Store. Разработчики по-прежнему смогут обновлять существующие расширения Manifest V2.
- Январь 2023 года: браузер Chrome перестанет использовать расширения Manifest V2. Разработчики больше не смогут обновлять существующие расширения Manifest V2.
Более детальный график отказа от манифеста второй версии можно увидеть здесь.
До января 2023 года разработчики Google обещают продолжать доработку нового манифеста, чтобы учесть все пожелания и критику разработчиков расширений, а также внедрить в него все желаемые функции. В частности в Google заявляют, что уже добавили дополнительные механизмы в новый Scripting API и расширили возможности Declarative Net Request API для поддержки нескольких статических наборов правил, правил сеанса и фильтрации на основе tab ID.
«В ближайшие месяцы, среди других новых возможностей, мы запустим поддержку динамически настраиваемых скриптов контента и возможность хранения in-memory. Эти изменения разработаны с учетом полученных от сообщества отзывов, и мы продолжим создавать более мощные API расширений по мере того, как разработчики будут делиться с нами дополнительной информацией о проблемах миграции и своих бизнес-потребностях», — уверяет Ли.
Журналисты издания Bleeping Computer поинтересовались у Ли, будут ли учтены прошлые пожелания разработчиков, которые объясняли, что новшества Google фактически погубят их продукты. Ли ответил, что «изменения находятся в процессе проектирования» и подчеркнул, что компания учитывает отзывы разработчиков и пользователей.