-
Notifications
You must be signed in to change notification settings - Fork 156
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding a document describing the phases through which a proposal will pass. #25
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. It wouldn't harm to include some clarification about whose responsibility it is to push a proposal through the various stages. That is, the onus is on the "champion(s)" to do the work, or find other people to do it.
process/phases.md
Outdated
* A CG member has an idea. | ||
|
||
During this phase a new repository forking the spec repo is created (CG members | ||
can request this). PRs + Issues iterate on the design of the feature. If human |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: drop "human readable" (or replace with something else), since it implicates that the spec is not readable. ;)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
process/phases.md
Outdated
During this phase a new repository forking the spec repo is created (CG members | ||
can request this). PRs + Issues iterate on the design of the feature. If human | ||
readable design repo style .md files are useful, these are added to describe | ||
the feature as it's being designed. A tracking issue is created in the design |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the role of the tracking issue?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be good to add a link here to the label: https://github.com/WebAssembly/design/labels/tracking
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added link.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Throughout, I'd spell out CG and WG fully.
process/phases.md
Outdated
Entry requirements: | ||
* A CG member has an idea. | ||
|
||
During this phase a new repository forking the spec repo is created (CG members |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There should be a step before this where someone just files a bug, and proposes something. Discussion ensues, and then people agree that the feature is worth going forward with and this happen.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we have to a degree assume goodwill from the champion (save genuine spam).
I.e. I would think that the bar should be pretty low if a CG member says they want a repo to develop a proposal in?
Perhaps some verbiage about no objection about confusion / spam / duplication?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not about goodwill. People who read this document coming in will think "hmm, I have to fork a thing... eh, don't care enough".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, added a new step zero and incremented.
process/phases.md
Outdated
# WebAssembly W3C Process | ||
|
||
This file describes how feature proposals will progress through | ||
the standardization process. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to clarify what a "feature" is. Forking a repo is a super big overhead for bug fixes, and it isn't clear enough where the line is between fixing issues and creating a new feature.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should require a proposal repo for everything that adds or changes a "feature". Criterions for that could be:
- Adds an opcode or other pieces of abstract syntax
- Changes or extends the binary format
- Changes or extends the text format
- Requires adding or changing tests
- Requires extending or changing the reference interpreter.
Any of these implies that all conforming implementations are forced to be changed, which justifies going through a bit of process.
A "fix" on the other hand is something that e.g. is merely a clarification, and does not necessarily require implementations to change. That's perfectly doable as a simple PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adopted those bullets.
process/phases.md
Outdated
During this phase a new repository forking the spec repo is created (CG members | ||
can request this). PRs + Issues iterate on the design of the feature. If human | ||
readable design repo style .md files are useful, these are added to describe | ||
the feature as it's being designed. A tracking issue is created in the design |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be good to add a link here to the label: https://github.com/WebAssembly/design/labels/tracking
process/phases.md
Outdated
|
||
If relevant to demonstrate the viability of a feature, prototype | ||
implementations of the feature are implemented in interested engines (possibly | ||
on a branch). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the interesting thing here is to implement in:
- An embedder
- A toolchain
Some features would require both, some one, some neither.
Note that a browser engine is an embedder, but embedder can be non-browser as well. This is important. Some features don't necessarily need to be first prototyped in a browser.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So engine struck me as more clear, as embedder sounds relevant if the feature can wholely be done outside the core engine, but odd in reference to some part of the core format?
See below on the other variation on this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Embedder" is what we use elsewhere, so it's clear in the wider WebAssembly context.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, done.
process/phases.md
Outdated
## 1. Proposed Spec Text Available [CG/WG] | ||
|
||
Entry requirements: | ||
* Full proposed english spec text available in a forked repo around which a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
English
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
process/phases.md
Outdated
* At least one toolchain implements the feature. | ||
* The formalisation and the OCaml reference interpreter are usually updated | ||
(though these two can be done as part of step 3 at the WG chair's discretion). | ||
CG + general consensus has continued to this point (as throughout). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure I understand what that means? I think what's missing is "Community Group is the sole venue where substantial work can occur." This should be stated at the beginning to clarify that iteration on the major design points of a feature are iterated on in the CG, but integrating it in the rest of the spec and getting the details right happen in the WG.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
process/phases.md
Outdated
At this point the feature is fully handed off to the WG. | ||
During this phase, WG members discuss the feature, consider edge cases, and | ||
work towards consensus that the feature is now complete (kicking it back to an | ||
earlier stage in the CG if issues are uncovered). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd rephrase to: Unless substantial work is deemed required (in which case the feature is sent back to the Community Group).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reworded similarly.
process/phases.md
Outdated
## 3. Standardize the Feature [WG] | ||
|
||
Entry requirements: | ||
* Two or more Web VMs implement the feature. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we also need some signal from others that there's interest in implementing. I think it's another one of those "the Chair decides what looks like consensus, but if people consistently feel like the Chair ignores them then things will break down".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So the last bullet was meant to cover the consensus issue (it was missing the bullet tag). I've also added a parenthetical regarding the chair's role in this.
I think the point of the two WebVM bar was that in addition to consensus, there should be track record with the feature working on the Web, given the Web's higher bar for compatibility etc., as we want to make sure the feature will eventually be universal.
Again, curious what others think on this point?
process/phases.md
Outdated
into master on the spec repo. | ||
The W3C snapshots (for REC) are made at a regular cadence (in a W3C repo), used | ||
to stamp official version. Matching tags are added in the github spec repo. | ||
The feature is enabled on stable by various browsers, converging on all. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this worth mentioning? People can just ship stuff if they want, so that clause doesn't really mean much.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Domenic and others brought this one up, and my understanding is that these tags + versions carry special legal weight in terms of patent exclusion periods etc. (But I am not a lawyer).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That seems unrelated to "enabled on stable by various browsers", no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, wrong line. Yes, dropped.
process/phases.md
Outdated
|
||
The spec and spec forks will move to a W3C Documents and Software License. | ||
Other related repos for prototypes + tools will continue under their respective | ||
licenses. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Point to the actual license files.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
PTAL |
I replied to a bunch of comments. Not sure GitHub shows all the replies unless you expand "outdated" comments. |
Ping? There are still some (now hidden) comments which need to be addressed. |
3a63ab9
to
4235210
Compare
PTAL |
Could we perhaps identify a clear point in the process where the CG (and/or WG?) gives a "green light" for browsers to start shipping (on-by-default) their implementation of a feature? This would seem to be somewhere in the middle of Step 4. I was also thinking it might be useful if this event produced some sort of linkable artifact, analogous to the MVP email. |
If we do this "green-light" thing, we need a phase when we say "do ship if you want, but it may break", and then we need to specify when we intend to keep compatibility as much as possible (I assume that's when it's in the spec). |
Ah, that's slightly different than what we messaged with the MVP email (which was that minor stuff might change, but only in minor ways that shouldn't break content in the wild). That's sortof what green light means, at least to me. |
I think we might want to do discuss this addition in a video call, to be sure that everyone is on board with it. Agreed that the distinction you make from what I said is important. Regardless of which way we go, the last bit I propose (when is it set in stone, except for force majeure) is still something I'd like in there. @flagxor do you think this would be ready to discuss at next Tuesday's meeting? I think this entire document needs to be more or less ready to go by then. |
Reluctant to map to "recommended ship" until we've discussed. |
I think this should be a CG discussion, since it discusses how the CG's work is used. Can you add it to the agenda? Fine by me to commit with DRAFT notice, and pointer to the scheduled discussion. |
sgtm |
No description provided.