Skip to content
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

Merged
merged 2 commits into from
Sep 14, 2017

Conversation

flagxor
Copy link
Member

@flagxor flagxor commented Jul 6, 2017

No description provided.

Copy link
Member

@rossberg rossberg left a 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.

* 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
Copy link
Member

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. ;)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

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
Copy link
Member

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?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WebAssembly/design#1066

It would be good to add a link here to the label: https://github.com/WebAssembly/design/labels/tracking

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added link.

Copy link
Member

@jfbastien jfbastien left a 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.

Entry requirements:
* A CG member has an idea.

During this phase a new repository forking the spec repo is created (CG members
Copy link
Member

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.

Copy link
Member Author

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?

Copy link
Member

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".

Copy link
Member Author

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.

# WebAssembly W3C Process

This file describes how feature proposals will progress through
the standardization process.
Copy link
Member

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.

Copy link
Member

@rossberg rossberg Jul 10, 2017

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.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adopted those bullets.

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WebAssembly/design#1066

It would be good to add a link here to the label: https://github.com/WebAssembly/design/labels/tracking


If relevant to demonstrate the viability of a feature, prototype
implementations of the feature are implemented in interested engines (possibly
on a branch).
Copy link
Member

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.

Copy link
Member Author

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.

Copy link
Member

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.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, done.

## 1. Proposed Spec Text Available [CG/WG]

Entry requirements:
* Full proposed english spec text available in a forked repo around which a
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

English

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

* 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).
Copy link
Member

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.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

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).
Copy link
Member

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).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reworded similarly.

## 3. Standardize the Feature [WG]

Entry requirements:
* Two or more Web VMs implement the feature.
Copy link
Member

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".

Copy link
Member Author

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?

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.
Copy link
Member

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.

Copy link
Member Author

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).

Copy link
Member

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?

Copy link
Member Author

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.


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.
Copy link
Member

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.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@flagxor
Copy link
Member Author

flagxor commented Jul 7, 2017

PTAL

@jfbastien
Copy link
Member

I replied to a bunch of comments. Not sure GitHub shows all the replies unless you expand "outdated" comments.

@jfbastien
Copy link
Member

Ping? There are still some (now hidden) comments which need to be addressed.

@flagxor flagxor force-pushed the phases branch 4 times, most recently from 3a63ab9 to 4235210 Compare August 16, 2017 23:37
@flagxor
Copy link
Member Author

flagxor commented Aug 16, 2017

PTAL

@lukewagner
Copy link
Member

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.

@jfbastien
Copy link
Member

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).

@lukewagner
Copy link
Member

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.

@jfbastien
Copy link
Member

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.

@jfbastien jfbastien mentioned this pull request Sep 8, 2017
@flagxor
Copy link
Member Author

flagxor commented Sep 12, 2017

Reluctant to map to "recommended ship" until we've discussed.
Would a WG discussion on the topic be useful?
Any other changes. Perhaps we could checkpoint this if I added a DRAFT tag on top?

@jfbastien
Copy link
Member

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.

@flagxor
Copy link
Member Author

flagxor commented Sep 14, 2017

sgtm

@flagxor flagxor merged commit b9edb7f into WebAssembly:master Sep 14, 2017
@flagxor flagxor deleted the phases branch September 14, 2017 17:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants