Сегодня 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.
Если вам понравилась эта статья, поделитесь ею и похлопайте 👏 👏. Спасибо!