Dieses Kapitel erklärt den sogenannten TC39-Prozess, der regelt, wie ECMAScript-Features entworfen werden, beginnend mit ECMAScript 2016 (ES7).
Antwort: TC39 (Technical Committee 39).
TC39 ist das Komitee, das JavaScript weiterentwickelt. Seine Mitglieder sind Unternehmen (unter anderem alle großen Browserhersteller). TC39 trifft sich regelmäßig, seine Treffen werden von Delegierten besucht, die die Mitglieder entsenden, und von eingeladenen Experten. Protokolle der Treffen sind online verfügbar und geben einen guten Einblick, wie TC39 arbeitet.
Gelegentlich (auch in diesem Buch) werden Sie den Begriff TC39-Mitglied für eine Person verwenden. Dann bedeutet es: ein Delegierter, der von einem TC39-Mitgliedsunternehmen entsandt wurde.
Es ist interessant zu beachten, dass TC39 im Konsensverfahren arbeitet: Entscheidungen erfordern eine breite Mehrheit und niemanden, der stark genug widerspricht, um ein Veto einzulegen. Für viele Mitglieder führen Übereinkünfte zu echten Verpflichtungen (sie müssen Features implementieren etc.).
Die jüngste Veröffentlichung von ECMAScript, ES6, ist groß und wurde fast 6 Jahre nach ES5 standardisiert (Dezember 2009 vs. Juni 2015). Zwei Hauptprobleme ergeben sich aus so langen Zeitabständen zwischen den Veröffentlichungen:
Daher werden ab ECMAScript 2016 (ES7) Veröffentlichungen häufiger und als Konsequenz viel kleiner erfolgen. Es wird eine Veröffentlichung pro Jahr geben, und sie wird alle Features enthalten, die bis zu einer jährlichen Frist fertiggestellt sind.
Jeder Vorschlag für ein ECMAScript-Feature durchläuft die folgenden Reifestadien, beginnend mit Stufe 0. Der Fortschritt von einer Stufe zur nächsten muss von TC39 genehmigt werden.
Was ist das? Eine freiformale Möglichkeit, Ideen zur Weiterentwicklung von ECMAScript einzureichen. Einreichungen müssen entweder von einem TC39-Mitglied oder einem Nicht-Mitglied stammen, der als TC39-Mitarbeiter registriert ist.
Was ist erforderlich? Das Dokument muss auf einem TC39-Treffen überprüft werden (Quelle) und wird dann zur Seite mit den Vorschlägen der Stufe 0 hinzugefügt.
Was ist das? Ein formeller Vorschlag für das Feature.
Was ist erforderlich? Ein sogenannter Champion muss benannt werden, der für den Vorschlag verantwortlich ist. Entweder der Champion oder ein Co-Champion muss Mitglied von TC39 sein (Quelle). Das vom Vorschlag gelöste Problem muss in Prosa beschrieben werden. Die Lösung muss anhand von Beispielen, einer API und einer Diskussion von Semantik und Algorithmen beschrieben werden. Schließlich müssen potenzielle Hindernisse für den Vorschlag identifiziert werden, wie z. B. Wechselwirkungen mit anderen Features und Implementierungsherausforderungen. Implementierungsseitig sind Polyfills und Demos erforderlich.
Was kommt als Nächstes? Durch die Annahme eines Vorschlags für Stufe 1 erklärt TC39 seine Bereitschaft, den Vorschlag zu prüfen, zu diskutieren und dazu beizutragen. Es werden wesentliche Änderungen am Vorschlag erwartet.
Was ist das? Eine erste Version dessen, was in der Spezifikation enthalten sein wird. Zu diesem Zeitpunkt ist eine spätere Aufnahme des Features in den Standard wahrscheinlich.
Was ist erforderlich? Der Vorschlag muss nun zusätzlich eine formale Beschreibung der Syntax und Semantik des Features enthalten (mit der formalen Sprache der ECMAScript-Spezifikation). Die Beschreibung sollte so vollständig wie möglich sein, kann aber To-dos und Platzhalter enthalten. Zwei experimentelle Implementierungen des Features sind erforderlich, aber eine davon kann in einem Transpiler wie Babel erfolgen.
Was kommt als Nächstes? Von nun an sind nur noch inkrementelle Änderungen zu erwarten.
Was ist das? Der Vorschlag ist weitgehend fertig und benötigt nun Feedback von Implementierungen und Benutzern, um weiterzukommen.
Was ist erforderlich? Der Spezifikationstext muss vollständig sein. Benannte Prüfer (von TC39 ernannt, nicht vom Champion) und der ECMAScript-Spezifikationseditor müssen den Spezifikationstext abzeichnen. Es müssen mindestens zwei spezifikationskonforme Implementierungen vorhanden sein (die nicht standardmäßig aktiviert sein müssen).
Was kommt als Nächstes? Von nun an sollten Änderungen nur noch als Reaktion auf kritische Probleme vorgenommen werden, die von den Implementierungen und ihrer Nutzung aufgeworfen werden.
Was ist das? Der Vorschlag ist bereit, in den Standard aufgenommen zu werden.
Was ist erforderlich? Die folgenden Dinge sind erforderlich, bevor ein Vorschlag dieses Stadium erreichen kann:
Was kommt als Nächstes? Der Vorschlag wird so bald wie möglich in die ECMAScript-Spezifikation aufgenommen. Wenn die Spezifikation ihre jährliche Ratifizierung als Standard durchläuft, wird der Vorschlag als Teil davon ratifiziert.
Wie Sie sehen, können Sie erst sicher sein, dass ein Feature in den Standard aufgenommen wird, wenn dessen Vorschlag Stufe 4 erreicht hat. Dann ist seine Aufnahme in die nächste ECMAScript-Veröffentlichung wahrscheinlich, aber nicht 100% sicher (es kann länger dauern). Daher können Sie Vorschläge nicht mehr als z. B. „ES7-Features“ oder „ES2016-Features“ bezeichnen. Meine beiden bevorzugten Möglichkeiten, Überschriften für Artikel und Blogbeiträge zu schreiben, sind daher:
Wenn ein Vorschlag in Stufe 4 ist, wäre es in Ordnung, ihn als ES20xx-Feature zu bezeichnen, aber am sichersten ist es, zu warten, bis der Spezifikationseditor bestätigt, in welche Veröffentlichung er aufgenommen wird. Object.observe ist ein Beispiel für einen ECMAScript-Vorschlag, der bis Stufe 2 fortgeschritten war, aber letztendlich zurückgezogen wurde.
Die folgenden waren wichtige Quellen für dieses Kapitel:
Weitere Lektüre: