Open past opened 4 days ago
My original vision of stage 3 was aligned with that of TC39. There, it basically means "finished, pending editorial nit review---but since multiple implementations haven't happened yet, there's a reasonable chance that we'll discover something is broken, and need to fix the normative content". "Something is broken" is usually some small edge case, but very rarely could be something fundamental.
Examples of normative issues found during stage 3 in TC39 include:
await
s (i.e. three microtasks). An alternate specification strategy was found that only required 1. https://github.com/tc39/proposal-explicit-resource-management/pull/219ReferenceError
to SyntaxError
for consistency. https://github.com/tc39/proposal-source-phase-imports/issues/49weekOfYear
and yearOfWeek
to be optional when creating custom calendars; buggy results for since()
and until()
near the end of the month; etc. You can find samples with great explanations by going through various TC39 agendas (example) and Ctrl+Fing for the Temporal slides (example direct link).I think the TC39 standard is still a good one to apply to WHATWG stage 3. However, how that works in practice is affected by at least the following important differences between the TC39 process and ours:
In practice, this means that in TC39 there are two long stages: stage 2, when the committee is both debating whether the problem is worth solving, and writing spec text that is as-good-as-possible without any implementer experience; and stage 3, where a lot of time is spent waiting for implementations and responding to implementer feedback.
I think if we keep the TC39 standard for stage 3 in the WHATWG, the differences between the groups would manifest in stage 2 being the long one at the WHATWG, and stage 3 being pretty short. Because during stage 2 we'd not only resolve the "do we want to do this" question, but also get all the feedback from the initial implementation. And we wouldn't need to wait for the second implementation to graduate from 3 to 4. So for the WHATWG, stage 3 would last roughly as long as it takes the editor to finish their review.
Note that in both TC39 and the WHATWG stages, the existence of stage 4 is basically a formality, because in both cases the feature is "finished" according to the process. So there is a sense in which stage 4 is pointless, and we could as well denote "done with the stages process" by "no stage".
Responding to specific points:
- Complete specification text" and "The solution is complete and no further work is possible without implementation experience, significant usage and external feedback". If this is the entrance criteria and what the stage signifies, then it becomes unclear what is the difference between stage 3 and stage 4.
In my proposed vision, the difference is just that in stage 4, the spec is merged and has finished editor review. This editor review could be lengthy, especially if the feature is large and/or the contributor is new to WHATWG spec convenentions, but it will usually be short.
It's also possible that editor review will identify normative changes, not just editorial nits. They'll usually be small, especially if a prototype implementation already exists. The kind of thing I'm thinking of is consistency suggestions, e.g. which types of error to throw, or property naming, or similar, which weren't caught by anyone earlier in the process.
Finally, our process allows for cases where there's no prototype implementation started until stage 3, in which case we might see larger changes. I'm not sure we'll see this much, as for small features that are easy to implement "in one go" people probably won't need the stages process, whereas for large features people will probably prefer to start a prototype implementation early. But I think it's reasonable to allow it.
- "Full specification and comprehensive tests are completed". I suspect that the intention here is for the tests to exist, but not necessarily to not need any improvements based on stage 3 feedback and implementation experience. It would be nice to reword this, if that is the case (maybe "available" instead of "completed").
I agree some caveating here would be helpful, to express that tests may need to be revised in response to stage 3 feedback.
The guidance provided in the stages process is a bit unclear and somewhat inconsistent, as was evident in the discussions we had recently at WHATNOT meetings. More specifically I think these points are conflicting:
If the intent is for stage 3 to be indeed short-lived, it would also be useful to clarify so in the text, so it sets the right expectations.
@domenic is going to provide some TC39-inspired examples of how this stage could work for WHATWG.