company_banner

Язык до Кембриджа доведёт, или Как я перестал волноваться и полюбил W3C

    Посвящается Чарльзу, sine qua non.


    У писателей и сценаристов есть такой художественный приём: в начале книги или фильма герои оказываются в какой-то очень странной и непонятной ситуации, а затем в течение двух часов постепенно проясняется, каким же образом они в эту ситуацию попали.

    Сегодня я расскажу тебе, %username%, именно такую детективную историю. И завязкой в этой истории будет внезапное возникновение вот здесь, под номером 5, одной подозрительно русской фамилии:

    www.w3.org/2001/tag

    История эта начинается в дождливом марте 2013 года, когда я узнал, что рабочая группа W3C Pointer Events собирает последние комментарии к своей спецификации. (Честно говоря, я совершенно не помню, какая была погода в марте, но мне почему-то хочется, чтобы она была дождливой.)



    Дело в том, что за полгода до того мы убили на реализацию работы с pointer-событиями в IE10 какое-то несоразмерное количество времени. Я бы даже сказал, какое-то абсурдно несоразмерное количество времени. Сложность реализации этого функционала оказалась гораздо больше оценочной вследствие (а) непродуманности и сырости самого стандарта, (б) наличия кучи тонких и не описанных в документации моментов, (в) существенной разницы в реализации на разных платформах (Win 7 / Win 8).

    Да, забыл сказать, «мы» — это, в данном случае, команда API Яндекс.Карт, которую я имею честь возглавлять. Мы в API традиционно уделяем существенное время поддержке разного рода мобильных/тач браузеров, но IE10 превзошел все мыслимые ожидания. Думаю, не сильно покривлю душой, если скажу, что на IE10/IEMobile мы убили больше времени, чем на все остальные мобильные браузеры вместе взятые.

    И вот, в конце марта наш консультант по веб-стандартам Чарльз МакКети Невилл aka chaals рассказал, что W3C собирает последние замечания по проекту стандарта Pointer Events, и поинтересовался, есть ли у кого-то комментарии. (Note: если ты ничего не понял из этого предложения, %username%, см. большое интервью Чарльза о том, как работает W3C.)

    Я почитал эту спецификацию; как ни удивительно, она представляла собой точную кальку уже реализованного в IE10 функционала, только что без префикса «MS». «Давно я не брал в руки шашку», — подумал я, и сел писать замечания.

    За перипетиям этой замечательной переписки вы можете пронаблюдать в официальной рассылке группы Pointer Events, начиная вот с этого письма: lists.w3.org/Archives/Public/public-pointer-events/2013JanMar/0184.html и далее по ссылкам. Исходное письмо написал Чарльз, а вот последующие письма от Sergey Konstantinov — это мои.

    Упс, я, кажется, невольно раскрыл своё инкогнито. Впрочем, по итогам всей той истории, что я вам рассказываю, я стал существенно более публичным человеком, чем хотел бы; так что, кажется, пришло время немножко развиртуализироваться и на Хабре. Меня зовут Сергей Константинов, я возглавляю группу разработки API Яндекс.Карт (в Яндексе, как подсказывает нам кэп), а с недавних пор ещё и участвую в деятельности W3C Technical Architecture Group (aka TAG). Но до этого мы ещё дойдём.

    У меня, кстати, есть виртуал на Хабре — SergeyKonstantinov — которого я заводил, чтобы постить официальные статьи и новости. Надолго меня не хватило — не моё это :) Поэтому не стоит воспринимать меня как какого-то официального представителя Яндекса на Хабре. Я здесь занимаюсь тем, чем мне нравится; в основном — троллю и набрасываю, местами довольно эпично. Кстати, пользуясь случаем, хотел бы передать отдельный привет тем, кто минусовал этот комментарий.

    Так вот, вернёмся к нашим баранам. Пересказывать здесь длительную и бесплодную переписку с Pointer Events WG я не буду; все ответы на мои замечания выглядели примерно так: либо «хороший пойнт, обязательно запилим во второй версии спецификации», либо «а наши эксперты говорят, что так ок». (Например, вопрос: а как мне отменять реакцию на события браузера через одну часть канваса, а через другую — пропускать? Ответ: заведи два канваса, чо как маленький.) В итоге мне удалось добиться ровно одного: из спецификации убрали требование событиям мыши иметь id = 1. (Что, как вы понимаете, не потребовало внесения никаких изменений в код IE.)

    Я бросил эту бесполезную переписку примерно через три недели, когда понял, что (а) никто ничего не будет менять, (б) а если и поменяет, то хуже от этого будет исключительно нам, т.к. нам придётся переписать весь код под IE. Ну и до кучи мне уже начали там немного хамить в стиле «what's wrong with you, man?»



    Короче говоря, мой первый заход на более плотное общение с разработчикам стандартов закончился полным фейлом и демотивацией. В реальности повлиять на разработчиков стандартов стороннему человеку оказалось практически невозможно. Пришлось пойти другим путём, а именно — через W3C TAG.

    TAG (Technical Architecture Group) — это особая группа в W3C, основной задачей которой является координация всех остальных рабочих групп, решение кросс-стандартных вопросов и — самое главное! — разработка единого архитектурного подхода к веб-стандартам. Подробнее об этом можно почитать в TAG Charter. TAG состоит из 9 участников и председателя, которым является Тим Бёрнерс-Ли. Троих участников назначает председатель, а ещё шестерых избирает W3C Advisory Committee.

    В мае один из шести избранных участников досрочно покинул TAG, т.к. перешёл работать в Mozilla, а правила TAG запрещают одной компании делегировать более одного участника в TAG. Таким образом, были объявлены досрочные выборы, и мы (Яндекс) решили принять в них участие.

    Признаться честно, ввязываясь во всю эту авантюру, я не очень-то рассчитывал на успех. Я написал несколько «предвыборных» постов, доступных в моём tumblr-блоге: konstantinov.cc, в которых (довольно мягко) покритиковал невнимание рабочих групп к внешнему фидбеку и общую фрагментированность архитектурных принципов в разных рабочих группах. Кроме того, я написал большой пост о том, как, по моему мнению, следует разрабатывать API. (Спойлер: приходите на YaC, там будет часовой доклад от нашей команды про архитектуру API.)

    И вот, 18 июля я вдруг обнаружил в почте письмо от Дэниэла Эппелквиста, со-председателя TAG, с поздравлением и курсом молодого бойца. Признаться, я до сих пор пребываю в некотором шоке, хотя прошел уже месяц, я успел поучаствовать в трёх телеконференциях, одном ревью и сделать первый коммит в гитхаб w3ctag.

    У TAG нет каких-то особенных формальных обязанностей; каждый её участник, в основном, сам определяет направления своей деятельности. Я же, как и обещал, вызвался проводить ревью новых спецификаций и разрабатывать API Design Guide, чем и пытаюсь заниматься в меру своих скромных сил.



    На этом, кажется, почти детективная история появления моей фамилии в списке W3C TAG закончена. Stay tuned.

    P.S. Большая просьба к комментаторам не изгаляться в петросянстве. Меня уже попросили сделать нормальное событие change в инпутах и запретить поддомены www. TAG этим не занимается, не надо писать тут безумных предложений; я интеллигентный человек, могу и матернуть.

    P.P.S. Но, при этом, одной из целей моей деятельности является донесение пожеланий русскоязычных разработчиков до W3C (и наоборот), так что фидбек на организацию взаимодействия W3C и разработчиков принимается.
    Яндекс
    472.93
    Как мы делаем Яндекс
    Share post

    Comments 44

      +23
      If you can’t beat em, join em
        +4
        Долой англизацию интернета!!!
        Если пьянку нельзя предотвратить, ее надо возглавить — как-то так…
        Что касается топикстартера — поздравляю и желаю нашим интернет-деятелям быть поактивнее и почаще заявлять о себе, а то коллайдер мы уже профукали.
          +2
          > англизацию интернета

          англизацию Internet'а, да?:)
            +2
            Топикстартера, говорите…
          +15
          Делайте в W3C, что хотите, но только ни по типу БЭМ :))))
          Уж очень код «неизящный» получается, а так хочется красоты и гармонии.
            +2
            Я и не собираюсь.
            TAG Charter не только не приветствует, но и явно запрещает участникам представлять интересы своих компаний. Нашей ответственностью является архитектура Сети в целом.
            +8
            Поздравляю.
            Или соболезную?
              +25
              Я сам ещё не понял.
              +3
              Вы так и не рассказали самое интересное: что с Pointer Events-то в итоге стало?
                0
                Ничего. Ждите теперь pointer events в других браузерах.
                  0
                  Т.е. даже теперь, когда вы в группе, итог такой же, как и после переписки: id !=1 и все? Уже поздно что-то менять? Пункт (б) перевесил? Или интереснее и важнее задачи появились?
                    +1
                    Менять теоретически не поздно, если набрать достаточную массу возражений, можно эту спеку отправить на доработку. Практически это бессмысленно — да, ввиду пункта (б).

                    Теперь я пытаюсь не допустить появления таких ситуаций в будущем. См., например, большую дискуссию про Web Audio API: lists.w3.org/Archives/Public/www-tag/2013Jul/0062.html
                      0
                      Понятно. Удачи вам в работе! И здравого смысла побольше :)
                        0
                        Спасибо )
                          0
                          Будет замечательно, если вы напишете о своей работе несколько постов. Это несколько иной угол зрения на происходящее, отличающийся от того, что видит большинство программистов, создающих конечный продукт.
                            0
                            Это легко сказать, но трудно сделать. TAG рассматривает, прямо скажем, не самые интересные и завхватывающие проблемы.
                              +1
                              Вы смотрите на отрасль с другой стороны. Это в любом случае «по-другому». И это «по-другому» интересно само по себе, даже без захватывающих проблем.
                +4
                Стоило написать этот пост в момент выдвижения в TAG, чтобы было понятно, откуда в Твитере взялось массированное наступление под лозунгом «Голосуй за Сергея!»

                В остальном — рад, что получилось и желаю удачи.
                  0
                  Ну, я написал, даже три :) А этот пост — так, ретроспекция длинного пути.
                  +2
                  Я почитал эту спецификацию; как ни удивительно, она представляла собой точную кальку уже реализованного в IE10 функционала, только что без префикса «MS». «Давно я не брал в руки шашку», — подумал я, и сел писать замечания.
                  Вообще-то, на статусе «последний созыв» уже поздно предлагать существенные изменения — поэтому предложения были ожидаемо отложены на следующий уровень. У таких предложений есть шанс успеть только на этапе черновика или в случае, если спецификация будет признана недостаточно проработанной, чтобы быть возвращённой опять в статус черновика.

                  Было бы интересно почитать ваш отзыв на Pointer Events — вам явно есть что рассказать.
                    0
                    > Вообще-то на статусе «последний созыв» уже поздно предлагать существенные изменения — поэтому предложения были ожидаемо отложены на следующий уровень.

                    Формально говоря, я мог бы собрать свои возражения и высказать их при утверждении спецификации Тимом Бернерсом-Ли. Но проблема не в этом, а в том, что спека уже была реализована в IE до внесения в W3C. Соответственно, любые несовместимые изменения в спеке привели бы к необходимости переписывать существующий код да ещё и детектить версию IE.

                    > Вообще, будет интересно почитать ваш отзыв на Pointer Events — вам явно есть что рассказать.

                    Дык а, собственно, в переписке PointerEvents WG всё есть.
                      0
                      Дык а, собственно, в переписке PointerEvents WG всё есть.
                      Уже читаю, но было бы интереснее почитать структуированную и ситематизировую рецензию, чтобы было понятней.
                        0
                        Эээ. В данный момент я пишу две других структурированных и систематизированных рецензии. Так что ничего не обещаю )
                    +3
                    «Наши в тылу врага» :-D
                      +25
                      Я ждал этого коммента и даже заготовил картинку.

                      +1
                      На сколько W3C и вашей группе будет интересно поглядеть вот в эту сторону?

                      habrahabr.ru/post/102720/

                      Как по мне, эта идея лучше всего, что было придумано для позиционирования элементов на странице. Вот тут есть еще немного гайдлайнов:

                      github.com/s0rr0w/guidelines/tree/master/spec/images
                        0
                        TAG — не рабочая группа и не принимает стандарты.
                        Вы можете организовать собственную рабочую группу в W3C и написать собственную спецификацию.
                          0
                          Для целей вашего предложения по ссылке активно разрабатывается CSS Grid Layout, а в простых случаях для управления элементами по одной оси уже работает CSS Flexible Box Layout.
                            0
                            А вот интересно, у груп по разработке есть календарь, когда планируют переводить драфт в состояние стандарта?
                              0
                              У кого-то есть, у кого-то нет.
                                +1
                                У Flexbox вопрос в реализациях, для этого должен быть составлен набор тестов и как минимум две реализации должны их проходить.

                                А Grid Layout — пока ещё черновик, там должен быть решён ряд вопросов. Все понимают важность этих спецификаций, так что как только так сразу.
                                0
                                Не заметил, как автор уже ответил, и написал ответ к его комментарию.
                                • UFO just landed and posted this here
                              0
                              Поздравляю с присоединением к элитному подразделению веб-войск )
                                0
                                Спасибо )
                                +1
                                Серега, ты крут! Поздравляю!
                                  0
                                  Спасибо )
                                  0
                                  А все начиналось с безобидных сайтегов…
                                    0
                                    ещё скажи в 301 аудитории.
                                    +3
                                    >не стоит воспринимать меня как какого-то официального представителя Яндекса на Хабре
                                    Ок, для этого другие люди есть. ;)
                                    Тебя теперь будут считать официальным представителем W3C на хабре :)
                                      +2
                                      Почему-то Гугл предполагает, что на картинке изображён Эйнштейн? Может, и вправду похожи?
                                      <img src=""/>

                                      И второй вопрос, а почему вы разоблачились под этим ником, а не под вторым виртуалом? Все бы остались на своих местах.: )
                                        +1
                                        Гугл вообще какой-то странный.
                                          0
                                          Да. Странно, что там делает пожилая женщина в одежде…
                                            0
                                            как бы фотограф

                                      Only users with full accounts can post comments. Log in, please.