Он скачал 1217 спецификаций с помощью
wget
и подбил статистику утилитой wc -w
(количество слов). Оказалось, что весь текущий каталог спецификаций W3C составляет 114 млн слов. Для сравнения, объём спецификации C11 составляет 208 220 слов, а длина романа «Война и мир» — 188 088 слов.Дрю ДеВолт делает вывод, что сегодня уже невозможно разработать новый браузер с нуля, поскольку невозможно реализовать поддержку веб-стандартов в таком количестве.
Для сравнения многословности спецификаций W3C разработчик приводит размер других спецификаций и текстов:
- Все IETF RFC (текстовый формат), 8754 штук: 57 716 641 слов
- POSIX (формат HTML): 2 017 056
- USB 3.2 (PDF): 872 395
- UEFI (PDF): 659 580
- C++17 (PDF, последний открытый черновик): 576 344
- C11 (PDF, последний открытый черновик): 208 220
- Intel x86 ISA (PDF): 2 312 414
Даже если сложить всё это вместе со списком самых длинных в мире литературных романов, то спецификации W3C всё равно окажутся больше на 12 млн слов.
Дрю ДеВолт предполагает причину, по которой мы дошли до такого состояния: «Начиная с первой браузерной войны между Netscape и Internet Explorer, веб-браузеры использовали свои функции в качестве основного средства конкуренции друг с другом. Эта стратегия неограниченного размаха и вечной ползучести функций безрассудна, и ей позволили продолжаться слишком долго, — пишет он. — Сложность веба просто неприлична. Создание нового веб-браузера сравнимо по своим усилиям с программой "Аполлон" или Манхэттенским проектом».
То есть не то, что невозможно реализовать безопасную или корректную поддержку веба, её невозможно реализовать вообще.
Создание собственного браузерного движка, чтобы конкурировать с Google или Mozilla на сегодняшний день — совершенно глупая затея. Последняя серьёзная попытка сделать новый браузер, Servo, стала «отчасти инкубатором для рефакторинга кода Firefox, отчасти песочницей для скучающих инженеров Mozilla, чтобы повозиться с никому не нужной технологией» (WebVR).
«Последствия этого очевидны. Браузеры — это самое дорогое программное обеспечение, которое работает на обычных компьютерах. Они печально известны тем, что используют всю вашу оперативную память, захватывают очередь процессора и ввод-вывод, разряжают аккумулятор и так далее. На браузеры приходится более 8000 известных уязвимостей», — пишет Дрю ДеВолт. Статистика CVE приведена с официального сайта cve.mitre.org по поисковым запросам «firefox», «chrome», «safari» и «internet explorer», в сумме.
Создать конкурентную альтернативу стало задачей непреодолимой сложности. Из-за этого разработчики браузеров почувствовали безнаказанность. Браузеры перестают работать как «агенты пользователя», а вместо этого начинают работать как агенты своих создателей: «Firefox заполняется рекламой, отслеживанием и обязательными плагинами. Chrome используется компанией Google как инструмент для того, чтобы эффективно отслеживать вашу историю открытых страниц и продвигать в экосистему вредоносные технологии, такие как DRM и AMP. Дуополия браузеров также только усиливается, поскольку Microsoft теряет Edge, а WebKit значительно отстаёт от своих конкурентов».
Конечно, браузерные движки распространяются с открытым исходным кодом. К сожалению, даже сделать работоспособный форк — практически невыполнимая задача. Дело в том, что количество спецификаций W3C растёт в среднем на 200 новых спецификаций в год. Это около четырёх миллионов новых слов. Грубо говоря, около одного POSIX каждые 4-6 месяцев. «Как возможно для новой команды идти в ногу с этим поверх того возмутительного объёма, который есть уже есть? — спрашивает ДеВолт. — Браузерным войнам позволили продолжаться слишком долго. Они давно должны были сосредоточиться на конкуренции с точки зрения производительности и стабильности, а не новых "функций". Это абсолютно нелепо, и это должно прекратиться».
dim_s
Интересно, подтолкнет ли что-то или кто-то сообщество к созданию совершенно иного веб браузера, не на стандартах W3C. Даже если такой представить, то думаю это может быть совершенно иной подход, где будет только низкоуровневая абстракция в виде VM байткода и что-то вроде низкоуровнего апи для отрисовки, а разработчики будут создавать движки для этого браузера. В итоге получим что-то вроде игрового браузера.
RPG18
Уже всё придумано WebAssembly, WebGL.
dim_s
Я думаю это надстройка, это если взять эти 2 технологии и всем сказать, все нет никакого html, css и js, делайте сами свои движки и языки поверх этого.
RPG18
Если это будет востребовано, то появятся новые фреймворки под это дело. Рим не один день строился.
vitaliy2
Которое тоже есть в спецификации :)
lain8dono
Лучше уж WebAssembly + WebGPU. WebGL перестал развиваться.
staticlab
Это далеко не всё. WebAssembly — это только спецификация низкоуровневой виртуальной машины. WebGL — это только низкоуровневый рендеринг 3D-графики. Чтобы приложение могло взаимодействовать с внешним миром, ему понадобятся ещё сетевой API, дисковый API (нужно хранить кеш и локальные параметры, иметь доступ к выбранному пользователем файлу), API для устройств ввода (клавиатура, мышь, тачскрин, игровые контроллеры), API для получения информации об экране (размеры, события переворачивания, изменения размера), API для поддержки доступности (слабовидящие и незрячие пользователи тоже пользуются браузерами), API для ввода и вывода звука, API для веб-камеры. На всё перечисленное нужны соответствующие спецификации, дабы приложения могли работать на разных операционных системах и разных устройствах одинаково.
RPG18
Как бы уже есть спецификации, называются WebAPI
staticlab
Как бы нет. Они предназначены для JavaScript. Для WebAssembly нужны «сишные» API. Кроме того, здесь нет API для сети, ввода, окна и доступности.
RPG18
Как это нет API для сети, когда fetch, XMLHttpRequest это часть WebAPI, так же как Window через который делается ввод. То что это сейчас доступно через JavaScript, не значит что не будет доступно в будущем из WebAssembly.
staticlab
Не забывайте, что это сетевые высокоуровневые API и только для HTTP/HTTPS. Под капотом у них CORS, работа с куками и т.д. и т.п. Чтобы адаптировать эти API для WebAssembly, не зависимого от браузера, нужно дополнительно специфицировать все эти нюансы. Вообще же кажется, что сетевые API для WASM должны быть более низкоуровневые, как минимум, транспортного уровня (TCP, UDP).
Window изначально заточен на браузер и является частью DOM API. Кроме того, Window не обеспечивает достаточного уровня взаимодействия с ОС: не позволяет управлять меню окна и приложения, не позволяет выставить иконку окна и так далее. Даже просто создание окна через
Window.open()
требует указания URL открываемой страницы. Так что писать Window API для новой платформы тоже нужно с нуля.RPG18
Вы уже пытаетесь увести тему с обсуждения веба и браузера.
И это замечательно, т.к. станет вопрос безопасности.
Напомню, API это application programming interface, это интерфейс, это не реализация. Естественно реализацию на новую платформу придется писать с нуля, как и любой другой runtime.
staticlab
В начале треда предполагалась как раз низкоуровневая платформа:
Разумеется без нативной поддержки HTML, CSS, etc. То есть концепция URL для открытия окон тоже должна быть переосмыслена.
Так придётся не только писать реализацию, но и саму спецификацию, потому что сейчас она прибита к JavaScript и DOM.
rmrfchik
WebAssembly?
Хотя я думаю, время новых браузеров уже ушло. Это коммодити, подавляющее большинство которое им пользуется это не специалисты.
Пока не сменится концепция потребления информации и взаимодействия, ситуация не поменяется.
Возможно, все уйдут в подобие WeChat, и там расцветут новые ужасные стандарты и свои игроки со своими API.
Или нам с этим жить вечно...
S-e-n
Doomsday_nxt
Мне вот кажется что рано или поздно начнётся движение от того что сейчас: автор (сайт) отдаёт информацию вместе со способом её отображения… В сторону передачи только информации. Сейчас очень много однотипных сайтов (можно даже выделить несколько категорий, которые покроют текущий веб чуть менее чем полностью)…
Vindicar
Я боюсь, движение будет идти в обратную сторону — стриминг отрендеренных страниц. В конце концов, нельзя же позволять пользователю отделять информацию от рекламы?
dim_s
Это же какие вычислительные мощности нужны, сомневаюсь что так будет. И какая нагрузка на всемирную сеть. А главное, авторам таких сайтов придется очень много платить за трафик.
Tatikoma
*удалено*
klirichek
Чего сразу авторам-то? Рекламодателям. За уникальную возможность "неотделяемой рекламы"
zkrvndm
Поверьте, к тому моменту уже придумают умные блокировщики рекламы, которые смогут вырезать ее напрямую из отдаваемого изображения. Противостояние меча и щита бесконечно.
Chamie
Так неотделяемая реклама уже есть. Называется «нативная интеграция». На Ютубе, например. И не вырезается пока никак.
nin-jin
Зато замечательно проматывается.
algotrader2013
Трафик дорогой для тех, кто не в теме. К примеру, если попробовать стримить такое через сервисы AWS, то разоришься.
Но, тот же Cloudflare с бесплатными, но при этом очень жирными тарифами, или пиратские кинотеатры, работающие за копейки с баннеров, показывают, что для тех, кто знает, где и у кого покупать, и готов брать серьезный объем, трафик дешев до безобразия.
Так что, если кто-то, умеющий покупать пропускную способность задешево, как saas сервис запилит, и будет проксировать через себя траф, то вполне может идея и зайти. К сожалению(
dim_s
Если все этим будут пользоваться массово, очень скоро трафик подорожает и не будет уже такой халявы.
denisshabr
Были времена ещё всего лишь 10-15 лет назад, когда дата-центры даже доплачивали за трафик. Тот же мастерхост например — nag.ru/news/newsline/98/masterhost-nachal-platit-za-ishodyaschiy-trafik-.html
Stas911
Ну вот для примера сервис AWS Workspaces, вот его цены. Это в чистом виде стриминг используя протокол DCV, где там плата за траффик вообще?
Tatikoma
Vaadin же есть. Он фактически этим и занимается.
peacemakerv
Youtube v.2.0?
staticlab
Ну вон выше человек предлагает отдавать весь рендеринг на откуп самому приложению. Отследить, что именно оно рисует, не получится. Тонны невырезаемой рекламы гарантированы.
AllexIn
Вот только эти однотипыне сайты вообще никакой роли не играют.
Стандарт определяют мощные ресурсы, которые дают максимум возможностей.
Гугл сервисы, социальные сети, и т.п.
Именно они являются потребителями всех тех функций, которые описываются 200-ми новыми стандартами каждый год.
S-trace
А так ли нужна эта вся хня в стандарте, если её можно реализовать (и заблокировать!) в виде javascript-плагинов к обычным честным HTML-страницам?
AllexIn
Видимо нужна, раз делают.
Akon32
Другой браузер? А какие задачи он будет решать? Если лишь те, которые решаются сегодняшними браузерами, — тогда гораздо проще использовать обычный браузер. Если что-то новое — возможно, это довольно просто можно интегрировать в обычный браузер, и тогда будет "16 стандартов взамен 15-ти".
Можете попробовать рассматривать магазин приложений как интернет, а приложения — как сайты. Вроде бы, такая схема менее удобна для задач браузера, но суть близка — безопасное выполнение загруженного кода. Не думаю, что какой-нибудь kotlin+android api существенно проще, чем js + спецификации w3c.
И при таком подходе у нас уже есть несколько раздельных "интернетов" — под android, под windows, от apple, и от canonnical или samsung каких-нибудь.
YChebotaev
Проблема в том, что этот «обычный браузер» — Chrome и принадлежит он компании Google. И не просто принадлежат права на IP, а его разрабатывают сотрудники Google, он распространяется с сайта Google, обновляется Google, и все остальное тоже делает Google. Кроме расширений, но они тоже загружаются и скачиваются с сайта, принадлежащего Google.
Вот если бы компания Google все это добро передало в общественное пользование и пускала бы к себе других вендров, можно было бы говорить об «обычном» браузере.
Akon32
А как же firefox?
Всё добро — это не только исходный код, но и сотрудников и сервера передать в общественное достояние? Хм.
Исходники-то доступны, можно взять и пропатчить, чтобы расширения со своего сайта ставить.
tundrawolf_kiba
Я думаю речь все же в первую очередь об управлении исходным кодом. Да, любой может скачать исходники хромиума и сделать на их основе свой браузер. Но при что именно будет в коде хромиума — определяется только гуглом, а не скажем каким-нибудь аналогом W3C.
Balling
Вот только разработчики google плевать хотели на то, что там Google хочет, и делают свое в полном соответсвии с W3C/RFC/IEEE/MPEG и т.д. Также считается, что это не браузер Google, а браузер всех, например, Microsoft теперь тоже работает над Chrome/Chromium напрямую, да и Samsung с Opera, хотя и меньше, но тоже помогают, ну и Mozilla, куда без него. Вы хоть представляете сколько там кода? Явно нет.
Также это google пишет W3C во многих случает, на github можно посмотреть. Вот недавно спорили, что делать с этой фигней, но пока не договорились github.com/w3c/csswg-drafts/issues/3184
batyrmastyr
Про полное соответствие вы уж загнули, так загнули. Логику автозаполнения и автодополнения уже не первый раз ломают под соусом «заботы» о пользователях. В итоге работавшие год назад способы их выключения и указания, что вот здесь мне нужен только номер дома, а не полный адрес с указанием страны и почтового индекса работать перестают.
Balling
У нас issues перевалило за 1 000 000, там некоторые такие, что у вас волосы встанут дыбом. Так что, идете и репортите bugs.chromium.org
YChebotaev
Да. Исходный код — это хорошо, но не достаточно. Типа, конечно я могу его форкнуть и сделать свой. Но кому он нужен будет? Никому. В хром каждый день попадают десятки коммитов. Просто чтобы их догнать мне потребуется толпа разработчиков на фуллтайме. Это не реально.
Поэтому, да. Чтобы называть хром «обычным» нужно передать не только код, но и все остальное: каналы дистрибуции, бренд, рабочую силу и т.д.
Ziptar
Чтобы всё это быстренько самоуничтожилось, и появилась возможность у кого угодно начать с нуля? Отличный план! Правда мы подобное в истории проходили уже не раз и не два, и ничем хорошим это начинание с нуля обычно не кончалось.
YChebotaev
Почему оно должно самоуничтожиться? Что мы проходили в истории? Вы говорите загадками, я вас не понимаю.
chapuza
https://brave.com
Без рекламы, без трекинга, без блекджека.
YChebotaev
Что? Зачем? Меня не смущают ни реклама, ни трекинг.
Меня смущает, что гугл завтра пидумает гуглоизм (ну, они не будут называть это гуглоизм, они будут называть это «этическая политика» или типа того) и никто ничего не сможет по этому поводу сделать.
chapuza
Приватность, очевидно.
Lsh
Закопанный Flash?
chapuza
https://brave.com
Очень грамотный форк движка + отрезанные щупальца гугла.
ShadowTheAge
только к сожалению это довольно быстро разобъется о требование правильно (и быстро) отображать текст со смайликами вида «черная мама и еще одна белая мама с сыном-азиатом», текстом right-to-left и left-to-right в одном абзаце и прочим юникодом, и в т.ч. это WYSIWYG редактировать.
В играх с этим особо не парятся, там в полях ввода даже не всегда выделение и ctrl+v работает.
кроме того, та часть которая не касается скриптинга и отображения (работа с сетью, аппаратное кодировние и декодирование видео и аудио (для видеозвонков, стримов и т.п.), куки, защиты от всевозможных типичных атак вроде xss, ...) остается практически без изменений.
ну и не говоря о том что это будет нещадно тормозить на более-менее сложном контенте (вроде странички с парой тысяч комментов), т.к. в оптимизацию отрисовки хрома под кучу платформ вбуханы миллионы (может даже миллиарды) человеко-часов
Finesse
Кажется, это называется «операционная система»
AllexIn
Ага. Chrome OS
balajahe
Уже придумано, называется Flutter, который, по слухам, войдет в фуксию. Там отказались от CSS, и встроили стилизацию в разметку (дерево виджетов), плюс добавили декларативщины из React. Интересная штука, но без CSS очень и очень нечитабельно получается, увы.
Clasen01
И чтобы на таком браузере запустить лендинг про про скидку на пару ботинок, нужно будет искать системщика? А че не на ассемблере? Или на байт кодах, вот уж точно, принципиально новый подход будет)
crea7or
Пока всё идёт в обратную сторону, использование вместо наормальныз приложений — браузера. Пример — PWA (и Electron), технология, которая очень скоро всё засрёт.