Доступно об АйТи: Почему осталось всего два браузерных движка
Я застал время, когда движков было четыре: Trident (IE), Gecko (Firefox), WebKit (Chrome) и Presto (Opera).
Ныне осталось два: Quantum (Firefox) и Blink (Chrome).
На первом работают специализированные «лисицы» вроде какого-нибудь полностью освобождённого IceWeasel или защищённого Tor Browser. На втором — целая плеяда хромоидов вроде Opera, Vivaldi, Brave и (тьфу-тьфу) Амиго, а также куча софта вроде Steam и Slack, представляющие собой браузер, показывающий единственный сайт.
А причины две — крайняя сложность и проникшая в веб-стандарты защита от копирования.
Сложность
Я по крайней мере в браузере вижу такие основные части.
Сетевая подсистема — обращение к сети, поддержка протоколов.
Движок рендеринга — показ страниц.
Типографский движок — вывод текста.
Движок скриптинга — выполнение JavaScript.
Фреймворк безопасности — дополнительная защита от ошибок.
Когда человек пишет мини-браузер, предназначенный для показа каких-то текстов в его проге, он пишет только одно — рендерер, причём не с веб-качеством.
«С веб-качеством» означает: настолько защитное программирование, что маловероятно, что обнаружится критичная ошибка. Кстати, Rust — новый язык программирования, набирающий силу — был сделан именно для Firefox, чтобы уменьшить вероятность таких ошибок.
Скорость тоже важна — долго Firefox тормозил на системе отслеживания ошибок Jira.
Собственный типографский движок позволяет рендерить загружаемые шрифты, снижает риск критичной ошибки при рендеринге сложных строк и раньше всех поддерживает новые версии Юникода. Так уж вышло, что ставший де-факто стандартом формат шрифтовых инструкций OpenType определённые свойства символов берёт из типографского движка — в отличие от альтернативного Graphite, который всё своё носит с собой.
В сентябре 2024 года в Юникод добавили гарай — экспериментальную (уступившую латинице и нко) африканскую письменность. Юникод устроен так, что проги давным-давно знают, что определённый диапазон кодов зарезервирован под письменности справа налево, но с умляутами беда. Firefox первым корректно поддержал гарай около Нового 2025 года, a хромоиды всё ещё (октябрь 2025) не поддерживают.
Кстати, типографский движок у всех браузеров один — Skia за авторством Гугла. Просто Рыжая добавила в него свежие базы Юникода, а авторы хромоидов — нет.
Почти все сайты заскриптованы так, что превратились в настоящие программы, и браузер должен уметь выполнять эти программы корректно и быстро. Оба движка, Blink и Quantum, не просто интерпретируют JavaScript, но и умеют компилировать его в процессорный код!
Наконец, фреймворк безопасности — сравнительно новое (десять лет в обед 😊) изобретение Гугла, впоследствии реализованное и Firefox в своём Quantum. Уязвимости случаются, и задача этого компонента — сделать, чтобы «пробитая» память не доросла до критической уязвимости. Для этого браузер раскидывает работу по процессам с минимальными правами, в результате ошибки закрываются без особого шума, браузер редко зависает целиком, никогда не «падает» и потребляет уйму памяти. 😊
Если вы писали расширения браузера, то знаете, что есть центральный скрипт и скрипт вкладки, и между ними общение только сообщениями — это тоже «вина» фреймворка безопасности.
Защита медиаконтента от копирования
У нас не важно, на Западе — очень.
Скорее всего, была пролоббирована Netflix. До этого он использовал Silverlight, и часто этот странный плагин устанавливали только для того, чтобы смотреть Netflix. Существуют три подсистемы защиты: Microsoft, Apple и Google; все хромоиды и Firefox управляются последней. Гугл даёт ключи неохотно: появившийся в 2015 году Vivaldi только в 2020-м отпраздновал включение в гугловский Widevine.
Главное препятствие для написания своей системы — убедить киношников доверять ей.
Как-то так. Когда-то самолёты строили в гаражах, сейчас нельзя. По моим прикидкам, некоторые отрасли являются таким хайтеком, что для прибыльности нужен едва ли не целый мир, и устойчивая конфигурация там — один лидер и один аутсайдер, не дающий лидеру заламывать любые условия. И Гугл намеренно содержит аутсайдера Firefox: останется один — государства на него обрушатся и/или вырастет значительно менее удобный для него аутсайдер.