WebAssembly / WebAssembly/proposals

Process requirement for sufficient demand

Open
#68 19 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
1.1k
Forks
77
PR merge metrics
No merged PRs in 30d

Description

WebAssembly has a significant backwards compatibility constraint. It is also exploring an almost entirely new space and solving very hard problems requiring substantial design and implementation work. As such, it is important to make sure that any designs developed, implemented, and shipped have been substantially evaluated on whether they achieve their intended purpose. To this end, I suggest the following amendment to the process:

As a requirement for advancing to Stage 3, every feature of the proposal should have approval from a substantial user base (where the appropriate scale/meaning of "substantial" and "user base" depends on the specifics of the proposal).

There are two primary reasons for this revision:

  1. We cannot evaluate whether the proposal's design for a feature effectively achieves its intended goal without a substantial user base to either demonstrate its utility or to provide feedback on how the proposal needs to be revised to meet their needs.
  2. As much of that evaluation should be done prior to implementation to reduce churn due to design changes.

With this requirement in place, when the reference types proposal went to Stage 3 we would have seen that, although external references had a big user base, subtyping did not and so should be carved out into a separate proposal. Furthermore, this separation would have made it apparent that many other proposals do not need to depend on the reference types proposal. Many uses of type imports do not need any constraints at all (arguably external references are an example of this), and alternative (even more expressive) constraints besides subtyping could be explored. Although exception handling uses exnref, which might represent uninterpretable exceptions depending on the host, there is no requirement that exnref be related to external references. Even garbage collection does not depend on anyref or external references; we demonstrated that even languages relying on a uniform representation would generally prefer to use a uniform representation that is specialized to the needs of the language over a useless type like anyref. So the separation this requirement would have encouraged would have also reduced the dependencies between proposals.

But pulling back from the current situation, what do y'all think of the proposed revision that every feature of a Stage 3 proposal should have enough demand to warrant implementation and to enable proper evaluation?

[This was substantially edited thanks to feedback from @jgravelle-google.]

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with issue #68 and read the full comment thread, including the edited proposal and the discussion of Stage 3 requirements. Done means reaching and recording a decision on whether every Stage 3 feature should require substantial user-base demand; the payload names no files or tests to run.

Written by the indexing model from the issue text.

Assessment

Domain
developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.