- Вот это как раз недавно изменилось. Когда мы делали IE6, я работал над платформой и даже не знал, как выглядят люди, работающие над пользовательским интерфейсом. Они находились в другом здании, они получали компоненты, всё остальное вокруг строилось где-то в другом месте. Сейчас мы все работаем в одной команде, и если за два месяца до конца окажется, что у кого-то из нас куда меньше багов, чем у других, может быть, я пойду чинить баги в интерфейсе, или люди из интерфейса пойдут чинить баги платформы. То есть теперь мы действительно работаем как одна команда.
- Сколько составляет цикл разработки?
- Каждый раз, когда мы выпускаем новую версию, мы решаем это заново. У нас нет такого правила как у создателей лэптопов, игр или телефонов - каждый год что-то выпускать в одно и то же время или приуроченно к какому-нибудь событию вроде рождества или начала учёбы.
- В некоторых опенсорсных проектах принято выпускать релизы регулярно.
- Это не совсем так. Если посмотреть, как выходит Firefox, то окажется чаще, чем IE, но тоже не строго по часам. Необходим баланс между тем, что можно переписать серьёзно, и как часто мы это можем делать. Мы хотим делать это как можно чаще, но если речь о том, чтобы добавить что-нибудь вроде SVG (а документация SVG - вот такой [показывает сантиметров восемь - прим. автора] величины) или полностью переписать движок JavaScript, нужно какое-то время.
- Давайте поговорим о стандартах. Есть ли какая-то общая стратегия их внедрения?
- Самая главная стратегия - делать стандарты, которые действительно кому-то нужны. Стандарты в интернете - это не стандарты в физике или экономике. Стандарты в интернете - это какой-то набор соглашений между производителями и разработчиками о том, как вещи должны работать, чтобы они были совместимы. И почти все стандарты, о которых мы говорим, имеют довольно длинный цикл от предложения до настоящего стандарта. HTML5 – это не стандарт и ещё лет десять не станет стандартом, CSS 2.1 - это ещё не стандарт, он только в этом году может стать стандартом. Поэтому во всех наших разработках мы рассматриваем нужды разработчиков и пользователей и выбираем самые востребованные свойства. Это, впрочем, относится к чему угодно другому. Если окажется, что то, что хотят люди, нигде в стандарте не представлено, мы, наверное (теперь, когда мы любим стандарты), пошлём предложение в соответствующую организацию, чтобы это стало стандартом.
- То есть отставание в поддержке стандартов от других браузеров - намеренное?
- Я такого не говорил! То, что стало назваться стандартами, появилось, когда люди решили написать новые браузеры и не обременять себя с тем, что уже написано. То есть давайте сделаем революцию и те, кто написал для "Нетскейпа" что-нибудь до 1998 года, останется там, а мы сделаем по-новому, и новые страницы будут писаться для нас. Такого рода вещи случаются, они случаются редко, как правило не работают. Когда люди в бывшем Netscape нам об этом сказали, мы не поверили, мы решили "не, ребята, у вас ничего не получится". В тот момент шестой IE имел 95 процентов рынка, мы решили, что идти за революционерами – глупо, менять браузер, которым все пользуются – тоже глупо, поэтому мы перестали этим заниматься лет на пять или шесть. Там была цепь неправильных решений - я не буду их защищать, но это остаётся фактом - мы не занимались браузером очень долго. Если чем-то не заниматься очень долго, то конкуренты могут чего-нибудь достичь. Те люди, которым мы не поверили, стали популярными и сделали что-то новое и стали называть это стандартами. Так вот, теперь мы видим, что то, что придумали наши друзья, популярно, и мы добавляем в наш браузер эти новые интересные вещи, которые люди называют стандартами.
- Выходит, Microsoft всё же хочет присоединиться к тем, кто любит быстро добавлять новые функции?
- Ещё раз скажу, что мы делаем то, что людям нужно.
- То, что есть в IE9 Preview – это всё, что войдёт в релиз, или возможны ещё какие-то нововведения?
- Это не всё, будет ещё кое-что.
- Именно в области стандартов?
– Да.
- А когда новая версия выходит?
- Я ещё не могу объявлять дату.
- Ну, в этом году?
- Вы можете посмотреть на историю предыдущей версии, посмотреть сколько примерно проходит времени между первым выпуском и окончательным релизом [это заняло около года – прим. автора]. Если я вам скажу точную дату, и она не сбудется, вы будете показывать на меня пальцем!
- Насколько важна для браузера скорость? Приоритетна ли она по отношению к поддержке стандартов?
- Если бы мы сделали много новых свойств, но сделали бы их очень медленными, никому бы это не было нужно. Если бы мы сделали только очень-очень быстрый браузер, но без единого нового свойства, это, наверное, было бы полезно.
- Выходит, скорость в приоритете?
- Совершенно верно.
- Каким образом в новой версии достигается это ускорение? В частности, графики.
- Производительность - это довольно многомерная вещь. Есть много вещей, которые участвуют в процессе от обращения к проводу до того момента, когда пиксели загорятся на мониторе. И в этом процессе есть несколько вещей, которые мы переделываем очень серьёзно. У нас есть новый движок JavaScript, который работает намного быстрее, чем предыдущий. Он написан совсем с нуля с учётом того, как сейчас используется JavaScript. Мы учли и новые подходы к программированию и существование новых многоядерных процессоров. Есть новая графическая система, которая использует ресурсы видеокарты. Кто- то пробовал превью и обнаружил ускорение в сто раз между Chrome и IE9 на некоторых тестируемых вещах, связанных с большим количеством графики. Есть и другие серьёзные улучшения.
- Хотелось бы узнать технические подробности. Как именно достигнуто ускорение JavaScript?
- Не знаю, насколько технически глубоко рассказывать, я не читаю каждую строчку кода, но ключевая вещь, которую делает наш движок JavaScript - это компиляция. Важно также решение, когда нужно и когда не нужно компилировать. Бывает так, что если скрипт исполняет каждую строчку по разу, то компилировать будет бесполезно и медленно. Есть другая важная вещь – компиляция происходит в фоновом процессе, обычно на другом ядре. То линейное время, которое требовалось скрипту, раньше не только становится меньше, но исчезает.
- В целом, это звучит похоже на Tracemonkey и Opera.
- В общем это современная технология программирования. За большую часть того, что мы делаем, мы не получим Нобелевскую премию.
- Давайте поговорим о новых возможностях. В IE9 будет поддерживаться тег video и кодек H.264. Почему именно этот кодек?
- Это хороший стандарт - этого достаточно.
- Mozilla, к примеру, агитирует за поддержку Theora.
- Я знаю, почему Mozilla агитирует за Theora. У них нет кода для поддержки H.264. Если бы им кто- нибудь дал бесплатно код, они бы были совершенно счастливы.
- Но они же даже заблокировали плагин, реализующий H.264 из идеологических соображений.
- Именно так. Всё, что делает Mozilla, должно быть открыто, а open-source кода для H.264 пока что никто не написал. Когда кто-нибудь напишет, Mozilla будет счастлива. Или им самим придётся написать.
- То есть поддержки Theora в IE можно не ждать?
- Политические вопросы вокруг Theora я обсуждать не могу.
- А если Google будет использовать для тега video свой кодек VP8, Microsoft последует?