WHATWG
WHATWG (Web Hypertext Application Technology Working Group) — это сообщество разработчиков веб-браузеров и веб-технологий, занимающееся развитием и стандартизацией языка гипертекстовой разметки HTML и смежных технологий (DOM, Fetch, URL и других). Организация была основана в 2004 году как независимая группа, альтернативная консорциуму W3C (World Wide Web Consortium), с целью ускорения процесса внедрения новых веб-стандартов и обеспечения их практической совместимости в браузерах.
История
Предпосылки создания
К началу 2000-х годов процесс стандартизации HTML в рамках W3C замедлился. В 1998 году W3C объявил о прекращении работы над HTML 4.0 и сосредоточился на развитии XHTML (расширяемого языка разметки на основе XML). Однако XHTML не получил широкого распространения в реальных веб-приложениях из-за строгих правил синтаксиса и проблем с обратной совместимостью. В то же время Apple, Mozilla и Opera активно развивали собственные реализации HTML, что приводило к фрагментации веб-платформы.
Основание и первые годы
В 2004 году на конференции W3C в Сан-Хосе (Калифорния) представители Apple, Mozilla Foundation и Opera Software предложили создать рабочую группу для разработки новой версии HTML, ориентированной на практические нужды разработчиков. Предложение было отклонено W3C. В ответ на это 4 июня 2004 года была основана WHATWG. Первоначально группа сосредоточилась на разработке двух спецификаций: Web Forms 2.0 и Web Applications 1.0. В 2005 году эти спецификации были объединены в единый документ под названием HTML5.
Конфликт с W3C и переход к единому стандарту
В 2007 году W3C признал необходимость возобновления работы над HTML и создал собственную рабочую группу HTML5, которая взяла за основу черновики WHATWG. Однако подходы к стандартизации различались: W3C стремился к созданию фиксированных версий стандарта (например, HTML 5.0, 5.1, 5.2), в то время как WHATWG придерживался модели «живого стандарта» (Living Standard), который постоянно обновляется и не имеет версий. Это привело к параллельному существованию двух спецификаций, что вызывало путаницу у разработчиков.
В 2019 году W3C и WHATWG достигли соглашения, по которому W3C прекратил разработку собственной версии HTML и признал «живой стандарт» WHATWG единственным официальным стандартом HTML. С этого момента W3C выступает в роли утверждающего органа, а WHATWG — разработчиком спецификаций.
Организационная структура
WHATWG является некоммерческой организацией, управляемой на основе консенсуса участников. Ключевые роли:
- Редакторы — лица, ответственные за написание и поддержание конкретных спецификаций (например, HTML, DOM, Fetch). Редакторы назначаются сообществом и обладают значительной автономией.
- Участники — сотрудники компаний-разработчиков браузеров (Google, Apple, Mozilla, Microsoft), а также независимые эксперты. Участие является добровольным и не требует членских взносов.
- Стейкхолдеры — организации, заинтересованные в развитии веб-платформы (например, Cloudflare, Adobe, GitHub). Они могут влиять на процесс принятия решений, но не обладают правом вето.
Решение о включении новой функции в стандарт принимается на основе консенсуса между участниками. Если консенсус не достигнут, функция может быть отложена или отклонена. Формального голосования не предусмотрено.
Основные спецификации
WHATWG поддерживает несколько ключевых спецификаций, которые составляют основу современной веб-платформы:
HTML Living Standard
Основной документ, описывающий синтаксис, семантику и API языка HTML. Включает элементы, атрибуты, события, модель обработки ошибок, а также интерфейсы для работы с формами, мультимедиа, графикой (Canvas) и другими возможностями. Стандарт постоянно обновляется: новые функции добавляются по мере их реализации в браузерах.
DOM (Document Object Model)
Спецификация, определяющая структуру и интерфейсы для программного доступа к HTML- и XML-документам. Включает такие объекты, как Document, Element, Node, Event, а также методы для манипуляции деревом документа (создание, удаление, изменение узлов). DOM Living Standard заменил несколько устаревших спецификаций W3C (DOM Level 1–3).
Fetch
Стандарт, описывающий интерфейс fetch() для выполнения сетевых запросов из JavaScript. Заменил устаревший объект XMLHttpRequest. Включает поддержку потоковой передачи данных, обработку заголовков, управление кэшированием и работу с запросами разных типов (GET, POST, PUT и т.д.).
URL
Спецификация, определяющая стандартный синтаксис и алгоритмы разбора URL-адресов. Включает такие понятия, как URL, URLSearchParams, а также правила кодирования и декодирования символов. Используется всеми современными браузерами и серверными средами (например, Node.js).
Streams
Стандарт для работы с потоками данных (чтение, запись, преобразование). Позволяет обрабатывать большие объёмы данных (например, видео, файлы) по частям, не загружая их целиком в память. Включает интерфейсы ReadableStream, WritableStream, TransformStream.
Encoding
Спецификация, определяющая алгоритмы преобразования текстовых данных между различными кодировками (UTF-8, Windows-1251, ISO-8859-1 и др.). Используется браузерами для корректного отображения веб-страниц на разных языках.
Процесс разработки стандартов
Разработка новой функции в WHATWG проходит несколько этапов:
- Предложение — участник или группа участников описывает новую возможность, обосновывает её необходимость и приводит примеры использования.
- Обсуждение — предложение обсуждается в списке рассылки или на GitHub-репозитории соответствующей спецификации. Участники анализируют технические детали, совместимость с существующими функциями и потенциальные проблемы безопасности.
- Разработка черновика — если предложение получает поддержку, редактор спецификации добавляет описание функции в черновик. Черновик может содержать пометку «At Risk» (под риском), если функция ещё не реализована ни в одном браузере.
- Реализация в браузерах — разработчики браузеров (Google Chrome, Apple Safari, Mozilla Firefox, Microsoft Edge) реализуют функцию в своих продуктах. Реализация может быть экспериментальной (за флагом) или стабильной.
- Тестирование и обратная связь — после появления реализации начинается этап тестирования. Разработчики веб-приложений выявляют ошибки, несоответствия спецификации и проблемы с производительностью. Результаты тестирования передаются в WHATWG.
- Стабилизация — на основе полученной обратной связи редактор вносит изменения в спецификацию. Функция может быть изменена, дополнена или удалена.
- Включение в стандарт — после того как функция реализована как минимум в двух браузерах и прошла тестирование, она становится частью «живого стандарта». Удаление функции из стандарта возможно только в случае, если она не используется и не поддерживается браузерами.
Критика и ограничения
WHATWG подвергается критике по нескольким направлениям:
- Отсутствие формальной демократии — решения принимаются на основе консенсуса, но фактически ключевые решения часто лоббируются крупными компаниями (Google, Apple, Microsoft). Независимые разработчики и малые компании имеют ограниченное влияние.
- Скорость изменений — «живой стандарт» обновляется очень часто (иногда несколько раз в день), что создаёт трудности для разработчиков, которые хотят использовать стабильные версии. Для решения этой проблемы WHATWG публикует «срезы» (snapshots) стандарта, но они не являются обязательными.
- Сложность и объём — спецификация HTML Living Standard насчитывает более 1000 страниц. Многие разработчики считают её излишне детализированной и трудной для изучения.
- Конфликт с W3C — хотя соглашение 2019 года разрешило формальный конфликт, некоторые участники W3C выражают опасения, что WHATWG монополизировала стандартизацию HTML и не уделяет достаточного внимания вопросам доступности (accessibility) и интернационализации.
Значение для веб-разработки
WHATWG сыграла ключевую роль в эволюции веб-платформы. Благодаря её работе были внедрены такие технологии, как:
- HTML5 — семантические элементы (header, nav, article, section), мультимедийные теги (audio, video), API для работы с графикой (Canvas, SVG), локальное хранилище (localStorage, sessionStorage).
- DOM4 — современные интерфейсы для работы с деревом документа (querySelector, classList, dataset).
- Fetch API — замена устаревшего XMLHttpRequest.
- Streams API — эффективная обработка потоковых данных.
- URL Standard — единый алгоритм разбора URL, устраняющий различия между браузерами.
В настоящее время WHATWG является основным органом, определяющим направление развития HTML и смежных технологий. Её спецификации реализованы во всех современных браузерах и используются миллионами веб-разработчиков по всему миру.
Источники
- WHATWG. «HTML Living Standard». — WHATWG, 2024.
- WHATWG. «DOM Living Standard». — WHATWG, 2024.
- WHATWG. «Fetch Living Standard». — WHATWG, 2024.
- W3C. «HTML 5.2 Recommendation». — W3C, 2017.
- W3C. «Memorandum of Understanding Between W3C and WHATWG». — W3C, 2019.
- Hickson, I. «The WHATWG and the HTML5 Standard». — A List Apart, 2007.
- Pilgrim, M. «Dive Into HTML5». — O'Reilly Media, 2011.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →