Skip to content

Naming scheme for in-development features #3079

Open
@jgraham

Description

@jgraham

As we move towards having web-features earlier in the feature lifecycle, there's a tension between wanting to be specific about the which "version" of a feature we're talking about for the purposes not just of browser implementation support, but also for other sources of information about early-stage features e.g. standards-positions and intent emails.

Consider e.g. CSS Masonry. There have been multiple incompatible proposals for how this should work, with varying syntax and semantics, and some of these have shipped experimental implementations in browsers. Clearly we want the "final" web feature id to be something like css-masonry. But those proposals were contemporary, so there was never a good time to "bless" one of them with the css-masonry label, and using the label to refer to multiple incompatible things would be technically challenging, and also confusing.

Even when there are not multiple contemporary proposals for a single feature, there are often substantial changes that happen during the design process, even after one implementation has shipped something. This early design may be associated with one or more negative standards positions. However later changes to the design might cause the new proposal to be assessed as positive. In such cases it makes sense for the feature label to change so that we can see the difference between what was initially proposed, and what was finally adopted.

We discussed this problem internally at Mozilla, and propose the following process to help:

  • Any feature which does not yet have broad consensus gets a -proposal-<N> suffix, where N is an integer. So we might have css-masonry-proposal-1, css-masonry-proposal-2 and so on.
  • The definition of consensus depends on the working mode of the relevant standards body, but for WHATWG it might be an approved PR, for W3C it might be a spec on the standards track, for TC39 it might be Stage 3, or whatever.
  • Whenever a proposal undergoes substantial revision it gets a new web-feature with the next available proposal number. "Substantial" is a judgement, but it would include anything large enough to change a vendor's opinion on the proposal (e.g. by changing a standards position state), or anything with a compatibility impact. In this case the feature for the old proposal would be marked as deprecated.
  • Once the feature has broad consensus, it would get the final name, and the final version of the proposal would be aliased to that (one still might need later adjustments e.g. if some implementations ship in stages, but that doesn't affect this process).

Metadata

Metadata

Assignees

No one assigned

    Labels

    early featuresFeature definition work for features without shipping implementationsfeature evolutionIssues/PRs for describing changing feature definitions over time (as opposed to support)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions