Сегодня JavaScript является одним из наиболее часто используемых языков программирования. Конечно, своей популярностью он обязан (р)эволюции ECMAScript. Но кто контролирует JavaScript и ECMAScript? Кто решает выпуски в версиях ECMAScript?

Кто разрабатывает ECMAScript?

Комитет Ecma TC39 отвечает за разработку языка программирования ECMAScript и разработку спецификации. Комитет работает на основе консенсуса и имеет право изменять спецификацию по своему усмотрению.

Его членами являются компании (в том числе все основные поставщики браузеров). TC39 собирается регулярно, на его собраниях присутствуют делегаты, присланные членами, и приглашенные эксперты. Они решают, какие предложения принять, какие отменить, какие продвинуть вперед, а какие включить в следующую версию JavaScript. Встречи доступны онлайн и дают вам хорошее представление о том, как работает TC39.

Предложения, на каком этапе они находятся, различные формы, набор тестов и, что очень важно, протоколы собраний и многое другое можно просмотреть в их репозиториях github.com: Ecma TC39

Вы также можете ознакомиться с процессами TC39, которые отвечают за внесение изменений и добавление функций в спецификацию ECMAScript.

Как устроен ECMAScript и как работает процесс TC39?

Каждое предложение по функции ECMAScript проходит следующие этапы зрелости, начиная с этапа 0. Переход от одного этапа к другому должен быть одобрен TC39.

Этап 0: Соломенный человек

Что это такое? Свободный способ подачи идей по развитию ECMAScript. Материалы должны поступать либо от члена TC39, либо от лица, не являющегося членом, которое зарегистрировалось в качестве участника TC39.

Что требуется? Документ должен быть рассмотрен на заседании TC39 (источник), а затем добавлен на страницу с предложениями этапа 0.

Этап 1: Предложение

Что это? Официальное предложение по этой функции.

Что требуется? Необходимо определить так называемого чемпиона, ответственного за предложение. Либо чемпион, либо со-чемпион должен быть членом TC39 (источник). Проблема, решаемая предложением, должна быть описана прозой. Решение должно быть описано с помощью примеров, API и обсуждения семантики и алгоритмов. Наконец, необходимо определить потенциальные препятствия для предложения, такие как взаимодействие с другими функциями и проблемы реализации. С точки зрения реализации необходимы полифиллы и демонстрации.

Что дальше? Принимая предложение для этапа 1, TC39 заявляет о своей готовности изучить, обсудить и внести свой вклад в предложение. В дальнейшем ожидаются серьезные изменения в предложении.

Этап 3: Кандидат

Что это? Предложение в основном завершено, и теперь для дальнейшего продвижения требуется обратная связь от разработчиков и пользователей.

Что требуется? Текст спецификации должен быть полным. Назначенные рецензенты (назначаемые TC39, а не чемпионом) и редактор спецификации ECMAScript должны подписать текст спецификации. Должно быть как минимум две реализации, соответствующие спецификации (которые не обязательно должны быть включены по умолчанию).

Что дальше? Отныне изменения следует вносить только в ответ на критические проблемы, возникающие при реализации и ее использовании.

Этап 4: завершен

Что это? Предложение готово для включения в стандарт.

Что требуется? Чтобы предложение достигло этой стадии, необходимо выполнить следующие действия:

  • Приемочные тесты Test 262 (грубо говоря, модульные тесты для языковой функции, написанные на JavaScript).
  • Две соответствующие спецификации реализации доставки, прошедшие тесты.
  • Большой практический опыт внедрения.
  • Редактор спецификации ECMAScript должен подписать текст спецификации.

Что дальше? Предложение будет включено в спецификацию ECMAScript как можно скорее. Когда спецификация проходит ежегодную ратификацию в качестве стандарта, предложение ратифицируется как ее часть.

Заключение: процесс TC39

Если вам интересно, на каком этапе находятся различные предлагаемые функции, обратитесь к readme репозитория ECMA-262 GitHub.

В репозитории TC39 перечислены законченные предложения и указано, в каких версиях ECMAScript они представлены.

Как правило, вы также можете найти их комментарии или обсуждения различных функций JavaScript, особенно предстоящих, здесь: ES Discuss.

Если вам понравилась эта статья, поделитесь ею и похлопайте 👏 👏. Спасибо!