HTML5 — свежайшая версия этого языка. Но несмотря на то, что она собирается принести с собой значительные изменения и новые возможности, нельзя сказать, что подобное происходит впервые и до этого язык никак не развивался. Развивался и постоянно улучшался, причем с самого своего появления.
Как и всемирная сеть вообще, HTML — язык разметки гипертекста (HyperText Mark-up Language) — является детищем сэра Тима Берненс-Ли (Sir Tim Berners-Lee). В 1991 году он написал работу, озаглавленную «HTML Tags», в которой описал чуть меньше двух дюжин тегов, предложенных им для разметки веб-страниц.
Идея использовать для этого кодовые слова внутри треугольных скобок, впрочем, не принадлежит сэру Тиму. Такая система на тот момент уже существовала и использовалась в SGML (Standard Generalised Markup Language, стандартный обобщённый язык разметки), и вместо того, чтобы изобретать что-то с нуля, сэр Тим посчитал более рациональным взять за основу уже существующие решения. Аналогичный подход применялся и вообще на всем пути к HTML5 в процессах разработки.
От IEFT к W3C: дорога к HTML 4
Версии HTML 1 никогда не существовало. Первой официальной спецификацией был сразу HTML 2.0, и издала его организация IETF (Internet Engineering Task Force, Специальная комиссия интернет-разработок). Многие из возможностей языка, описанных в этой спецификации, были основаны на уже используемых сторонних разработках. Например, тег для вставки картинок на страницы был реализован в лидирующем на тот момент (мы говорим о 1994 году) браузере Mosaic, и потом просто перекочевал в стандарт для HTML 2.0.
Эстафету IEFT позже подхватил W3C (World Wide Web Consortium, Консорциум Всемирной Паутины), который и занимался всеми последующими версиями HTML. Во второй половине девяностых велась активная работа над пересмотром и изменением спецификаций, которые в конце концов (точнее, в 1999 году) дали жизнь HTML 4.01.
После этого в истории HTML наступил первый ключевой поворот.
XHTML 1: HTML в виде XML
Новая версия языка разметки после HTML 4.01 была названа XHTML 1.0. «Икс» в названии означал eXtreme, и веб-разработчики были обязаны скрещивать перед собой руки каждый раз, когда произносили это слово.
Нет, конечно нет. На самом деле «икс» означал eXtensible («расширяемый»), а скрещивание рук было по желанию.
Сама по себе спецификация для XHTML 1.0 ничем не отличалась от HTML 4.01. Не добавилось никаких новых тегов или параметров — разница была лишь в правилах синтаксиса. Если в HTML разработчикам была дана полная свобода относительно стиля написания кода, в XHTML требовалось соблюдать правила языка XML, — куда более жесткого и нетерпимого к вольностям, — на котором основывалось большинство разрабатываемых Консорциумом технологий.
Жесткие правила, впрочем, пришлись как раз кстати. Они побуждали кодеров придерживаться единого стиля, например — писать все теги и параметры исключительно в нижнем регистре, тогда как в HTML можно было делать как придется.
Выход XHTML 1.0 совпал с возросшим уровнем поддержки современными браузерами таблиц стилей — CSS, — и строгий синтаксис XHTML укрепился в сообществе разработчиков с репутацией лучшего способа написания кода разметки.
Потом был XHTML 1.1.
Если версия 1.0 была просто HTML, сделанным под XML, то XHTML 1.1 — это уже настоящий, чистый XML. В том смысле, что к нему уже нельзя было применить mime-type text/html и нужно было обозначить документ как отформатированный в XML. Однако в том случае его никак не смог бы отобразить самый популярный на тот момент браузер — Internet Explorer, — так что применять на практике этот язык было явно не вариантом.
Создавалось впечатление, что W3C в свои разработках начинает терять связь с реальностью, по которой жила всемирная сеть.
XHTML 2: нет, это уже ни в какие ворота не лезет
Если бы герой Дастина Хоффмана из фильма «Выпускник» был веб-дизайнером, W3C сказал был ему только одно слово: XML.
Консорциум был уверен, что HTML изжил себя после четвертой версии, и начал работу над XHTML 2, задачей которого было привести сеть к светлому XML-ному будущему. И несмотря на то, что название осталось прежним, новая версия не имела абсолютно ничего общего с XHTML 1. Более того, она не собиралась быть обратно-совместимой со своими предшественниками и старыми версиями HTML (а значит — всем существующим содержимым сети). Вместо этого она должна была представить новый чистый язык, не отягощенный никакими пережитками прошлых спецификаций.
Иными словами, это был бред.
Раскол: W(HATWG) TF?
В среде Консорциума назрело восстание. Было очевидно, что он собирается вести разработку стандартов, — пусть новых, чистых и прекрасных, — но совершенно не отвечающих нуждам современного сообщества веб-дизайнеров и разработчиков. Opera, Apple и Mozilla были явно от этого не в восторге, так как ожидали совершенно другого — больше упора на форматы, позволяющие расширить возможности для создания веб-приложений.
Начало переменам было положено в 2004 году на одном из собраний. Ян Хиксон (Ian Hickson), который на тот момент был сотрудником Opera Software, выдвинул предложение заняться развитием HTML до уровня, позволяющего использовать этот язык для веб-приложений. Предложение было отклонено.
Разочарованные бунтари вынуждены были отколоться от Консорциума и организовать собственную группу: Web Hypertext Application Technology Working Group, сокращенно WHATWG.
От Web Apps 1.0 к HTML5
Принцип работы WHATWG несколько отличался от того, что был в W3C. В W3C вопросы поднимаются, обсуждается, и конечное решение выносится всеобщим голосованием. В WHATWG вопросы так же поднимаются, обсуждается, но окончательные решения относительно того, что включается в спецификацию, а что нет, остаются за главным редактором — Яном Хиксоном.
С виду может показаться, что система в W3C более демократична и честна, но практика показывает, что бесконечные споры и внутренние перебранки жутко тормозят процесс развития. В WHATWG, где каждый может внести свой вклад, но последнее слово остается за Главным, дела движутся куда быстрее. Главред, впрочем, и не обладает абсолютной властью — избранная группа руководящих лиц может оспорить его решение в том маловероятном случае, если оно того требует.
Первоначально, WHATWG было занято двумя спецификациями — Web Forms 2.0 и Web Apps 1.0, — обе из которых должны были стать расширениями для HTML. Но со временем они были объединены в одну общую, названную просто HTML5.
Воссоединение
В то время как в WHATWG работали над HTML5, W3C продолжал канителиться со своим XHTML 2. Нельзя сказать, что вся эта затея скатывалось в говно. Она в него медленно-медленно погружалась.
В октябре 2006-го сэр Тим Бернерс-Ли признал в своем блоге, то идея перевести сеть с HTML на XML была глупой. Спустя несколько месяцев W3C выдал новую установку для HTML Working Group: было разумно решено, что будущие версии HTML следует основать на наработках WHATWG, вместо того, чтобы делать что-то с нуля.
Все эти развороты и смены курса привели к несколько запутанной ситуации. Какое-то время W3C одновременно работал над двумя совершенно несовместимыми языками разметки — XTHML 2 и HTML 5 (обратите внимание, с пробелом), — в то время как WHATWG, отдельная организация, занималась спецификацией HTML5 (без пробела), которая должна была стать основой для другой спецификации в W3C. Хрен срастишь тут, что к чему. Проще было заняться разгадкой последовательности событий в «Мементо» и работах Дэвида Линча.
XHTML мертв, да здравствует синтаксис XHTML
Ситуация начала проясняться в 2009-ом, когда W3C объявил, что обновлений по XHTML 2 больше поступать не будет. По сути, они просто официально признали, что формат был мертв с самого рождения.
Однако, странным образом, вместо того, чтобы обойтись без лишнего внимания, смерть XHTML 2 породила какие-то злорадные бурления. Противники XML превратили новость в призыв отказаться от XHTML 1, хотя с XHTML 2 тот, как мы знаем, не имел ничего общего. В свою очередь сторонники XHTML 1, адепты строгого синтаксиса, были обеспокоены тем, что HTML5 вновь узаконит небрежную верстку.
Последнее, впрочем, не должно казаться серьезной проблемой — как мы рассмотрим далее, степень сторогости синтаксиса HTML5 каждый вправе выбрать для себя самостоятельно.
Развитие HTML5
Текущее состояние HTML5 не настолько туманное как раньше, но и все еще не слишком прозрачное.
Две организации сейчас работают над этим форматом. В WHATWG разрабатывают спецификацию, основываясь на принципе «сначала запустить, потом проверять». W3C HTML Working Group в свою очередь берет эту спецификацию и пропускает ее через процесс «сначала проверить, потом запустить». Как видно, такое сотрудничество вряд ли можно назвать крепким и эффективным. Но по крайней мере, вроде как разрешился вопрос «ставить или не ставить пробел» в названии стандарта (ставить его не надо, если что, — HTML5).
Что сейчас больше всего волнует веб-дизайнеров, которые уже опробывали некоторые из возможностей нового языка, это вопрос «Когда это будет готово?» В одном из интервью Ян Хиксон упомянул 2022-ой год как дату, когда HTML5 получит статус «proposed recommendation». Это вызвало волну возмущения среди дизайнеров, так как они понятия не имели, что значит «proposed recommendation», но точно знали, что им явно не хватает пальцев посчитать, сколько лет надо еще ждать до 2022-го.
Если разобраться, возмущения необоснованы. В данном случае «proposed recommendation» означает, что к этому времени в браузерах должна быть полная поддержка всех возможностей языка. В этом случае ориентироваться на 2022 даже слишком смело; мы все знаем, что многие браузеры с трудом подхватывали в свое время даже существующие стандарты. Взять хотя бы Internet Explorer, которому понадобилось больше десяти лет, чтобы начать элементарно поддерживать тег .
Дата, на которую действительно надо ориентироваться, это 2012 год, когда HTML5 будет присвоен статус «candidate recommendation», означающий, что спецификация окончательно сформулирована и как таковой стандарт готов.
Но, ясное дело, это не будет означать, что все из него будет сразу доступно к применению — нужно будет следить за тем, как браузеры постепенно добавляют поддержку тех или иных фич и начинать их использовать по мере появления. Точно так же было с CSS 2.1, на самом деле: мы начали применять возможности этого стандарта по мере того, как браузеры включали его поддержку по частям. Если бы мы предпочли ждать, когда они реализуют его целиком, мы бы ждали до сих пор.
Иными словами, не будет такого момента, когда можно будет сказать «Бах, время HTML5 пришло!». Но начинать работать с ними можно уже сейчас. Благо, язык этот получил рождение не через революцию, а в процессе эволюции, и основывается на том, что было создано до него. Таким образом, можно сказать, что если вы пользуетесь любыми предыдущими версиями HTML, вы уже пользуетесь HTML5.