Google и Opera отделились от WebKit, чтобы создать Blink, собственный механизм рендеринга HTML, и все беспокоились о влиянии на стандарты. Теперь у нас есть первый большой пример разделения в виде поддержки CSS Regions.
Сначала вам нужно знать, что такое CSS Regions.
По сути, регионы используются для обеспечения веб-эквивалента потока текста, концепция, хорошо знакомая всем, кто использовал программу DTP (DeskTop Publishing). Основная идея состоит в том, что вы определяете контейнеры для текстового потока, который затем перетекает из одного контейнера в другой, чтобы обеспечить сложный многоколоночный макет.
Вы можете догадаться, что это введение в CSS является результатом усилий Adobe, многолетней компании, занимающейся DTP и графикой. Adobe несет основную ответственность не только за предложение стандартов W3C для регионов, но и за большую часть его реализации в WebKit.
Регионы звучит неплохо, но у нее есть критики. Главный из них заключается в том, что для него требуется несемантическая разметка — то есть для реализации контейнеров вам нужно поместить в HTML теги, которые используются для целей макета, а не для указания содержимого. Также утверждается, что области не являются частью адаптивного дизайна, который может изменяться в зависимости от доступного разрешения экрана. Возможно, последняя изобличающая критика состоит в том, что это очень сложная система.
Внимание Google привлекла сложность предложения. В сообщении на форуме Chromium Эрик Зайдель делает много интересных замечаний о том, как сделать Blink более эффективным, удалив поддержку регионов, которая по умолчанию отключена по умолчанию:
«Недавно я попытался понять, какой именно код использует Blink для поддержки регионов, локально удалив (большую часть) кода, связанного с регионами, из моей локальной кассы. Я был очень удивлен, обнаружив, что этот патч содержит более 10 000 строк!
Для справки, весь C ++ Blink насчитывает всего ~ 350 000 строк кода. Более того, около половины найденного мной кода регионов разбросано по более чем 140 файлам, большинство из которых, как можно наивно предположить, не должны ничего знать о регионах. »
Напрашивается вывод, что из Blink надо убрать регионы. Также кажется, что план состоит в том, чтобы вернуться к более ранней реализации кода CSS Columns, которая не соответствует стандарту.
На этом этапе вы можете кричать и обвинять Google в высоком уровне стандартов, но вам нужно принять во внимание текущую ситуацию. На данный момент Mozilla не планирует внедрять регионы, и у нее есть свои собственные предложения — фрагменты, которые могут выполнять большую часть той же работы. Также есть столбцы CSS, которые обеспечивают большую часть той же функциональности, что и регионы, но не так гибки в макете.
Если Google удалит код регионов, что выглядит весьма вероятным, Safari и IE 10/11 останутся единственными двумя основными браузерами, поддерживающими регионы. И Apple, и Microsoft заинтересованы в том, чтобы их оборудование можно было использовать для создания высококачественных макетов в стиле журналов — Google и Opera не беспокоятся об этом.
Это поднимает вопрос, почему механизмы рендеринга HTML не более модульны на двоичном уровне. Если бы это было так, такие функции, как регионы, могли бы динамически загружаться по мере необходимости и, следовательно, создавать накладные расходы только тогда, когда страница фактически использовала эту функцию.
Этот инцидент также поднимает более широкий вопрос.
Обычно мы ожидаем, что органы по стандартизации, такие как W3C, будут работать над созданием спецификаций для стандартов. Затем производители браузеров, такие как Google, берут стандарты и внедряют их. В результате получаются совместимые браузеры, которые работают более или менее одинаково.
Итак, что должно произойти, когда производитель браузера решит, что у стандарта есть проблемы с реализацией, и решит не внедрять его? Несомненно, разработчику браузера следовало повлиять на стандартную организацию намного раньше?
В реальном мире все гораздо запутаннее, чем простая модель «стандарты приводят к реализации». Возможно, W3C нужно быть более реалистичным.