Веб-стандарты / В продолжение темы защиты котят

в 3:53, , рубрики: css, css2.1, css3, css4, w3c, webkit, браузеры, версии, интриги, котята, модули, пиар, префиксы, расследования, скандалы, стандарты, статусы, утопия, метки: , , , , , , , , , , , , , , , , ,

Веб-стандарты / В продолжение темы защиты котят
Итак, неподражаемая Лиа Виру с ее блистательным призывом не позволить браузерной отсебятине причинить вред беззащитным пушистым созданиям, была услышана и на Хабре (если кто-то пропустил — срочно ознакомьтесь c переводом lahmatiy чуть ниже или моим переводом на css-live.ru — не пропадать же труду). Мы уже наслышаны о панике последней недели из-за намерения браузеров поддерживать чужие префиксы. Кто-то, возможно, успел подписать петицию против этого безобразия (как я). Кто-то, напротив, прислушивается к доводам Тантека Челика (между прочим, создателя микроформатов) и других экспертов, убеждающих, что не так всё страшно и еще немного бардака (вдобавок к текущему) нашему вебу особо не повредит (тем более ради будущего развития!). Немало шишек досталось самому W3C, который отбивается как может. И вот Лиа пришла и грамотно расписала не только «кто виноват», но и львиную долю «что делать». Браво!История, конечно, началась не в феврале 2012-го на парижской встрече рабочей группы CSS. И даже не в ноябре 2011-го, когда Генри Сивонен (между прочим, автор HTML5-парсера) написал огроменную статью о вреде префиксов, «подняв волну» в сообществе. И даже не в июне того же года, когда мы все праздновали долгожданное утверждение стандарта CSS2 (!), и лишь немногие смутно подозревали, что где-то явно притаился подвох (так и вышло). Началось всё тогда, когда стандартисты и реализаторы впервые не смогли найти единого ответа на главный вопрос.
А что можно называть словом «CSS3»?
Котята уже нервничают. Если JS в 2001-м был «самым недопонятым ЯП в мире», то CSS по сей день — самый недопонятый язык… чего? Оформления документов? Украшения текстов? Даже это непонятно! Уж точно не верстки, т.к. средства компоновки блоков нам, как ранее, лишь снятся. С цифрами того хлеще.
Казалось бы, в отличие от HTML5/ЖHTML, который разрабатывается «у двух нянек» WHATWG и W3C параллельно (и вообще смахивает на кота Шрёдингера в двух состояниях сразу — не он ли в подписи у Хиксона?), CSS разрабатывается в рамках одной организации, даже одной ее рабочей группы. И на ее страничке есть ссылка «Latest stable CSS» — оно? Где там. Документ, во-первых, 2010 года (староват!), во-вторых, в статусе Group Note, т.е.
Публикация заметок рабочей группы не предполагает одобрения членами W3C. Это черновик и он может быть изменен, заменен или отменен любым документом когда угодно.
т.е. — совсем по-простому — филькиной грамоты. Но ладно, лучше всё же, чем ничего. Если верить этому полуглюку, то стабильный, окончательный, предсказуемый CSS на сегодняшний (?) день представлен таким набором спецификаций:
CSS Level 2 Revision 1 (включая исправление ошибок)

CSS Style Attributes

Media Queries Level 3

CSS Namespaces

Selectors Level 3

CSS Color Level 3

Выходит, никакого CSS3-то и нет!

Да, у CSS нет версий (в привычном понимании), а есть «уровни». Т.е. ждать «выхода CSS3» бессмысленно, можно лишь дождаться выхода нужных нам модулей 3-го уровня (двух уже дождались). Что, впрочем, ничего не решит, т.к. за ними побегут модули 4-го и выше уровней — с той же вечной проблемой экспериментальных реализаций (селекторы — уже). А «CSS3» — лишь маркетинговая «фишка», как и «HTML5». Бедные котята!
Ладно, предположим, я хочу провалидировать свой CSS по определению из той филькиной спеки — этот список, по-видимому, меняться уже не должен. Могу ли я это сделать? Сюрприз: уже в «основополагающей» спецификации CSS2.1 «валидность» определяется… через уровень используемой спецификации! Т.е., по факту, версию. Валидатор точно так же предлагает лишь две опции на выбор — CSS2.1 и CSS3 (не считая заведомо устаревших и экзотических). Парадокс: давно мертвый CSS1 я проверить могу, эфемерный «CSS3», минимум два модуля которого вообще еще не написаны — могу (как?..), а единственный актуальный на сегодняшний день, заведомо (ну, почти;) безопасный для котят использования в сегодняшних браузерах без «экспериментальных» рисков простой человеческий CSS — нет!
Как простому человеку с улицы, не «варившемуся» в кухне веб-стандартизации, мне это кажется диким.
Так что, во всем виноват валидатор?

Конечно нет. Напротив: именно он много лет, как мог, пытался предостеречь нас от нынешнего маCSSаракша (вспомним, сколько было ругани на тему «почему свойства с вендорским префиксом считатся ошибкой»?). Валидатор — программа тупая, ее дело — проверить синтаксис да посмотреть, значится ли свойство в списке. Был бы нормальный список…
Трудно понять, кто больше виноват в нежелании браузерописателей предлагать свои фичи на стандартизацию, но даже при беглом взгляде на список спецификаций — скриншот которого виден на первой картинке в топике — нет ощущения надежности. Вот была там такая зеленая кочка «CSS Basic UI L.3» — долго была, аж с 2004-го в статусе кандидата в рекомендации! — и бац, с прошлого года там опять бурая трясина черновика («последний звонок»-то он последний, но, к сожалению, нередко за «последним звонком» следует «последний звонок—2» и т.д.). И такое в последнее время, увы, скорее правило, а не исключение.
Для ученых такая сверхосторожность с постоянной перепроверкой на ошибки похвальна. Для того, на что многие смотрят как на локомотив бурно развивающейся отрасли — как минимум странна. Стандарты на то и стандарты, чтобы быть предсказуемыми на будущее, а не превращаться в тыкву от малейшего неосторожного движения. Хотя статусы спецификаций и без того сбивают с толку (ну кто догадается, что «последний черновик» — это «всё готово», «кандидат в рекомендации» — «готово и испытано», а «рекомендация» — «готово много лет назад и протестировано», а вовсе не «что-то, лишь рекомендованное в качестве будущего стандарта»?).
И как в этой путанице среднему человеку с улицы (вроде меня) разобраться, что какой-нибудь неизвестный text-combine-mode — это CSS3, а веками (XX-м и XXI-м:) проверенный и почти кроссбраузерный zoom — нет? Гуглить списки рассылок W3C? Нет, правда?
Да какая разница, если самого «CSS3» не существует!

Разработчикам браузеров неважно, «ласт колл что-то» или «кандидат во что-то» та или иная фича. Им важно, чтобы спецификация внезапно не изменилась так, что они останутся с разбитым корытом нигде уже не описанной нестандартной реализации (Мозиллу и вебкиты недавно так обломали с флексбоксами).
Разработчикам сайтов неважно, «CSS3» та или иная фича или не «CSS3». Им важно, чтобы фича предсказуемо работала в браузерах. Цифры важны разве что маркетологам, они красиво смотрятся в рекламе.
В общем, и тем, и другим нужен этакий светофор. Красный: стой, сюда не ходи, здесь ничего не готово, работы ведутся. Желтый: осторожно, всё новое, краска не везде высохла, очень невтерпеж поиграться — играйтесь, но мы ничего не гарантируем. Зеленый: всё надежно и проверенно, пользуйтесь на здоровье.
Теперь снова смотрим на первую картинку и…
Эврика?

Итак, нам нужен сводный документ, в котором бы наглядно отражалась степень готовности любых фич — неважно, стандартных или не очень — к немедленной реализации на «боевых» или экспериментальных сайтах соответственно. Естественно, по-настоящему проприетарные фичи будут в нем попадать в «красный» список, но если они окажутся нужными и распространенными, смогут переползти в «желтый». А там — кто знает, может, их так и узаконят. В порядке индивидуального исключения, по факту. С чьим-то префиксом — так с ним, без — так без. По крайней мере, любой вебмастер всегда сможет узнать, «на каком свете»… ой, цвете, находится нужное ему свойство — и, соответственно, смело пользоваться или искать альтернативу. Что-то вроде caniuse.com, но в ранге стандарта. Без нудной гуглёжки.
И валидатор CSS должен будет отталкиваться от этого документа. И тоже выдавать «ворнинги» на свойства из «желтого» списка и ошибки — на свойства из «красного». Валидация CSS обретет смысл помимо отлова глупых опечаток — едва ли не впервые за свою историю.
CSS станет первой технологией, сочетающей плюсы «живого стандарта» и модульной схемы развития. Для разработчиков отдельных модулей практически ничего не изменится, кроме необходимости пару раз в квартал — логично привязать периодичность к релизным циклам современных браузеров — отчитываться об актуальном состоянии своей спеки составителям «стандарта-светофора». У всех остальных появится долгожданная определенность.
И у меня — вернее, у самого W3C — есть прекрасная «рекомендация в кандидаты» на роль такого объединяющего документа. Тот самый «CSS Snapshot», тот самый «последний стабильный CSS», который пока филькина грамота и «бедный родственник» «настоящим» спекам! В новой жизни у него всегда будет статус рекомендации (скорее всего, снэпшоты придется готовить заранее, где-то за год, чтоб они как раз «дозревали» к сроку… хотя, возможно, для них стоит придумать особую, более проворную процедуру).
Всё уже есть! Дело за малым — собрать да запустить. Всего делов-то.
Кто сказал, что это должно быть сложно и скучно?

Я, как и все, в восторге от статьи, но особенно — от «мессиджа», который посылает Лиа во второй ее половине: «Веб-стандарты — это не что-то отвлеченное и далекое, это то, что может зависеть от вас, участвуйте, пробуйте, действуйте — и у вас всё получится!».
Так вот, почему бы нам не пойти дальше? Что мешает хотя бы попробовать изменить правила игры?
Рыться по мейл-архивам — и впрямь прошлый век. Как насчет того, чтобы раз в месяц или типа того вызывать авторов спецификаций на онлайновые пресс-конференции? Пусть расскажут, что там у них на уме накопилось, а заодно «почувствуют вкус реальности» и услышат потребности народа, думаю, полезно будет всем (вон одно интервью Челика Мейеру сколько всего прояснило, а там эффект в разы круче). Где, черт побери, завалящая багзилла для CSS-спецификаций, почему баг в стандарте «репортить» должно быть труднее, чем баг в браузере? Если ее не осилили поднять сами стандартисты — это далеко не значит, что ее должно не быть вообще (а если она уже есть — почему я о ней не знаю?). Опять же, у WHATWG и тех же микроформатов есть свои вики. Что мешает быть вики CSS? Каковы могут быть возможности краудсорсинга стандартов, не может ли получиться так, что миллионы веб-практиков скорее договорятся о формализации своих потребностей, чем пара десятков экспертов-теоретиков от их имени — и экспертам останется лишь приложить печать, а браузероделам — реализовать? И как узнать это, если не попробовать?)Впрочем, в последнем абзаце, кажись, моего внутреннего Остапа понесло:). Но в главном я не сомневаюсь. Котят мы спасем. И веб не развалится. Изменится — да, в какую сторону… поживем — увидим. А то вот возьмем и сообща подтолкнем в нужную!
Заранее спасибо за любые отклики!При написании статьи ни один котёнок не пострадал. В оформлении статьи использованы исключительно свободные для копирования фотографии с сайта www.freestockphotos.biz, а также плоды авторских графических стараний в открытом редакторе GIMP.

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js