This article is written for TC39 delegates 代理人 (see joining TC39). If you're not a delegate, you can help proposal champions out with some of these tasks as well, but some of the work involves being physically present at TC39 meetings, delivering presentations, and building consensus in committee.

Championing 拥护 a proposal at TC39 Back

So, you want to propose a new feature for JavaScript? That proposal needs a TC39 delegate as a champion to move it through the stage process. This document describes how to do that.

Championing a proposal is an exercise is of parallel work in developing a proposal outside of committee, together with presentations to the committee to collect more ideas, feedback, and eventually to advance proposals through stages. The work outside of committee rarely needs to block on progress in the committee, but committee stage advancement can be a good acknowledgement of milestones and buy-in. Promotion to Stage 4 is required for a feature to be added to the JavaScript specification.

Work outside of committee

Most of the work supporting a proposal can be done outside of TC39, without blocking on the committee's approval. Moving this work ahead can build more evidence for advancing stages in TC39. Some components of this work are:

Managing a GitHub repository

Each staged proposal should have a GitHub repository, included in the tc39 organization once the proposal is presented to the committee. A good place to start is by copying (not forking) the template-for-proposals repository. Your proposal's repository should include resources like the explainer, draft specification text, and sometimes draft implementations or example programs. The repository's issue tracker can be used to discuss design issues with the committee and the community. These proposal repositories are managed in accordance with TC39's Code of Conduct.

Stage process tracking issue

To work through the stage process, a tracking issue in the GitHub repository can be useful. Below is a template you can use for such a tracking issue:

Stage 1

Stage 2

Stage 3

Stage 4

Moving through the stages in committee

Building on the authoritative documentation for the stage process, this section builds on that with some additional practical advice for activities which may be helpful at various stages.

Stage advancement happens in TC39 meetings, when a proposal is presented to the committee, based on consensus of the committee that the proposal should advance to the stage. See presentation advice for more details.

Stage 1

Entrance criteria from the process document:

Acceptance signifies:

The committee expects to devote time to examining the problem space, solutions and cross-cutting concerns

Leading up to Stage 1,

Stage 1 represents more that the committee is thinking into this design space, rather than any sort of consensus on moving JavaScript in a particular direction.

Following Stage 1 (or even before), it could be useful to do some of the following:

Stage 2

Entrance criteria from the process document:

Acceptance signifies:

The committee expects the feature to be developed and eventually included in the standard

Leading up to Stage 2,

By the time a proposal gets to Stage 2, we have agreement that we want to go ahead with something like this proposal, eventually becoming standard JavaScript.

Following Stage 2 (or even before), it could be useful to do some of the following:

Stage 3

Entrance criteria from the process document:

Acceptance signifies:

The solution is complete and no further work is possible without implementation experience, significant usage and external feedback.

Leading up to Stage 3,

Following Stage 3 (or even before),

Stage 4

Entrance criteria from the process document:

Acceptance signifies:

The addition will be included in the soonest practical standard revision

Leading up to Stage 4, create the following

Once a proposal reaches Stage 4,