[Перевод] Невменяемый, необъятный масштаб браузеров
Увидев вот эту публикацию про браузерные войны, я хотел было написать альтернативное наблюдение за тем, как мы докатились до такой жизни. Но Дрю ДеВолт уже всё сказал за меня.
Начиная с первых войн между Netscape и IE, главным инструментом в конкурентной борьбе браузеров стала функциональность. Вот только стратегия неограниченного роста и расширения — совершенно безумная. Слишком долго мы позволяли ей продолжаться.
С помощью wget я скачал все 1217 спецификаций W3C, опубликованных на текущий момент1. Существенная часть из них должна быть реализована в браузере, чтобы современный веб работал. Я подсчитал объём этих спецификаций. Как думаете, насколько сложен современный веб?
[1] По состоянию на 2020–03–18. Без учёта спецификаций WebGL, за которые отвечает Khronos.
Суммарно, на сегодня, каталог спецификаций WC3 содержит 114 миллионов слов. Если взять стандарты C11, C++17, UEFI, USB 3.2, и POSIX, добавить к ним все 8754 опубликованных RFC, а также всё из списка самых длинных литературных произведений на Википедии — у W3C всё равно на 12 миллионов слов длиннее2.
[2] Оставшееся место можно легко заполнить с помощью 5038 страниц руководства Intel по архитектуре x86. Только придётся его скопировать где-то раз шесть.
Мой вывод: новый веб-браузер создать невозможно. Сложность просто зашкаливает. Создание нового браузера по трудоёмкости сравнимо с отправкой человека на Луну или созданием ядерной бомбы с нуля.
Невозможно реализовать веб корректно.
Невозможно реализовать веб безопасно.
Невозможно реализовать веб в принципе.
Создать принципиально новый браузер, чтобы конкурировать с Гуглом или Мозиллой? Да это настолько глупо, что вас тут же спросят, есть ли в нём нескучные обои. Последняя серьёзная попытка — Servo — понемногу превратилась в наполовину инкубатор для рефакторингов Файрфокса, наполовину в развлечение для скучающих инженеров Мозиллы, где они могут безопасно поиграться с никому не нужными технологиями. Жизнеспособный современный браузер? Что это? Кому это надо, когда у нас есть WebVR! Круто же, да? Да?
Последствия очевидны. Браузеры — это наиболее сложный и тяжёлый софт, который люди запускают на типичных потребительских компьютерах. Все знают, как хорошо браузеры жрут оперативку, процессор, батарейку, и т. д. В одних только браузерах найдено более 8000 уязвимостей3.
[3] Количество CVE в базе cve.mitre.org по ключевым словам «firefox», «chrome», «safari», «internet explorer».
Из-за монополии, гарантированной поистине космической стоимостью создания альтернативы, браузеры перестали служить пользователям и теперь служат своим создателям. Файрфокс тянет с собой всё больше рекламы, телеметрии, и обязательных плагинов. Хром используется Гуглом для наблюдения за вашим поведением в интернете, а также для насаждения вредоносных технологий вроде DRM и AMP. Браузерная дуополия становится всё сильнее вместе с тем как Microsoft отказывается от Edge, а WebKit давно остановился в развитии.
Исходный код большинства браузеров открыт. Обычно если open-source проект творит какую-то дичь, то сообщество может его форкнуть, чтобы создать альтернативу. Однако, для браузеров это не сработает. W3C печатает в среднем 200 новых спецификаций каждый год — это 4 миллиона слов — как новый POSIX каждые 4–6 месяцев. Покажите мне команду, которая сможет угнаться за всем этим развитием — ещё и реализовав в срок ту гору спецификаций, что накопилась уже сейчас.
Браузерные войны затянулись. Давным давно следовало начать состязаться в стабильности и производительности браузеров, вместо производительности команд разработки измеряемой в фичах за спринт. Вы долбанулись. Астанавитесь!
Прим.: Если вам интересна методология подсчёта слов в спецификациях, то её у меня есть.