-
Notifications
You must be signed in to change notification settings - Fork 389
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
The new and improved MSC process #1697
Conversation
specification/proposals_intro.rst
Outdated
https://github.com/matrix-org/matrix-doc/tree/master/specification. This | ||
will then be reviewed and hopefully merged! Please sign off the spec PR as | ||
per the `CONTRIBUTING.rst | ||
- Members of the core team will review and discuss the PR in the comments and |
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.
core team & community, presumably?
i really think we should explicitly ask people to comment in threads where possible rather than have a linear-comment-stream-of-doom on the GH PR
specification/proposals_intro.rst
Outdated
Spec PR In Review A proposal that has been PR'd against the spec and is currently under review | ||
Spec PR Merged A proposal with a sufficient working implementation and whose Spec PR has been merged! | ||
Postponed A proposal that is temporarily blocked or a feature that may not be useful currently but perhaps sometime in the future | ||
Closed A proposal which has been reviewed and deemed unsuitable for acceptance |
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.
hm, what happened to Abandoned/Obsolete/Rejected?
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've wrapped them all up into Closed as that's the model Rust takes, and I think it's fair. We could certainly continue to add an obsolete label to a closed MSC if we believe it's important to distinguish between the two.
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.
hm. i'm not sure what value there is to losing this information, and i'm not sure 'this is what rust does' is the strongest argument. but i guess i don't care that strongly.
specification/proposals_intro.rst
Outdated
- Members of the core team will review and discuss the PR in the comments and | ||
in relevant rooms on matrix. Discussion outside of Github should be | ||
summarised in a comment on the PR. | ||
- At some point a member of the core team will propose a motion for a final |
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.
suspect we need to just add in a little snippet to explain what the intention of an FCP is
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.
Further down we have:
The FCP will then begin and last for 5 days, giving anyone else some time to
speak up before it concludes.
Is this enough or should we add more?
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.
moar please (as per other comment)
specification/proposals_intro.rst
Outdated
The process for submitting a Matrix Spec Change (MSC) Proposal in detail is as | ||
follows: | ||
|
||
- Create a first-draft of your proposal using `github-flavored markdown |
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.
should probably explain why we ask people to submit their draft in GFM rather than as a PR against the spec itself, given how many people rush straight into a PR against swagger etc.
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.
s/first-draft/first draft/
specification/proposals_intro.rst
Outdated
Matrix's architectural design. | ||
However, it is welcome to use an alternative room if preferred please | ||
advertise it in #matrix-spec:matrix.org and link to it on the PR for | ||
visibility. |
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.
This wording is a bit difficult to read (imo). How does the following sound?
If preferred, an alternative room can be created and advertised in #matrix-spec:matrix.org. Please also link to the room in your PR description.
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.
Oh yeah, this definitely is a mixture between an old and new sentence. Thanks for pointing it out.
specification/proposals_intro.rst
Outdated
============================= ======================================================= | ||
Proposal WIP A proposal document which is still work-in-progress but is being shared to incorporate feedback | ||
Proposal In Review A proposal document which is now ready and waiting for review by the core team and community | ||
Proposal Final Comment Period A proposal document which has reached final comment period either for merge, closure or postponement |
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.
we should probably also clarify the labels used on all of these statuses. In particular though, I think we should have labels for people to quickly glance at what the motion is. I'm pretty sure the rfcbot does this, and we just need to add a column to this table.
Something we might want to consider is automatically/manually opening a placeholder issue for an MSC when there's been no implementation proof for X amount of time. This placeholder would effectively be labelled as Having thought of that scenario, I do also have concerns with merging the PR and the proposal dropping off our radar. Without a placeholder issue and the proposal merged, we lose visibility on it. Equally, I don't want to suggest that we leave the PR open as that is damaging in other ways. Potentially we do need a placeholder issue, or some automated process to help keep the proposal on the radar? |
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.
great work @anoadragon453 . A few random thoughts and questions from me.
specification/proposals_intro.rst
Outdated
The process for submitting a Matrix Spec Change (MSC) Proposal in detail is as | ||
follows: | ||
|
||
- Create a first-draft of your proposal using `github-flavored markdown |
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.
s/first-draft/first draft/
specification/proposals_intro.rst
Outdated
known as a spec PR. However in order for your spec PR to be accepted, you | ||
**must** show an implementation to prove that it works well in practice. In | ||
addition, any significant unforeseen changes to the original idea found | ||
during this process will warrant another MSC. |
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.
could we expand on this process a bit? Should the new MSC start from scratch (in which case, what happens to the previous MSC), or propose changes from the previous MSC (so we end up with a tower of proposals)?
If the change is minor, is changing the existing MSC appropriate? Is there a process for doing so?
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.
If the change is minor, is changing the existing MSC appropriate? Is there a process for doing so?
I believe the bot will handle it fine, but I'm not sure how that will look. A proposal successfully completing an FCP process and then getting put back on the table will seem like the FCP isn't as be-all-end-all as it should be.
I'm fine with taking the original proposal and working with that as a new MSC #, and linking to the previous as the doc states to do with similar proposals. How does that sound?
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.
Basically my feeling is, there are two cases:
-
either the change is a trivial fix to something discovered in implementation; I'd prefer not to have to go all round the MSC process for that, and I think that modifying the existing proposal doc is probably fine, provided it's called out in the comments of the original PR so that anyone who commented on it gets visibility. In this case I think this does NOT count as an MSC.
-
or it's a more fundamental change, in which case it's a new MSC with a new doc which leaves the original alone. And yes, building it on top of an existing MSC is probably fine.
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 could foresee problems with a "small change" being found after the MSC process and the fix upsetting people again who argue it's not a small change.
Presumably getting to failure mode should be relatively rare however as the proposal should detail everything the Spec PR will do very precisely?
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.
My experience is that it's pretty common to find something that needs tweaking once you get to implementation. Here is an example. I really don't think it's appropriate to start a whole new MSC for that sort of thing; you could argue that we could have opened another FCP but even then I think it's overblown.
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.
After some out-of-band conversation, I'm in agreeance that minor changes to the spec after acceptance is alright as long as those changes are then documented in the original proposal.
I've updated the PR to reflect this.
specification/proposals_intro.rst
Outdated
Rejected A proposal which is not going to be incorporated into Matrix | ||
=========================== ======================================================= | ||
============================= ======================================================= | ||
Proposal WIP A proposal document which is still work-in-progress but is being shared to incorporate feedback |
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.
proposal WIP doesn't exist on the flowchart
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.
Renamed to "Proposal Drafting/Feedback" which coincides with the entry on the flowchart.
specification/proposals_intro.rst
Outdated
addition, any significant unforeseen changes to the original idea found | ||
during this process will warrant another MSC. | ||
|
||
- Please sign off the spec PR as per the `CONTRIBUTING.rst |
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.
for reasons I can't see at a glance, this link is broken in the rendered RST.
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 sign-off is required for the spec PR but not for the initial proposal?
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.
@KitsuneRal has a good point - we should require sign-off on the initial proposal too, to avoid folks filling up the MSC proposal list with IP of questionable provenance.
specification/proposals_intro.rst
Outdated
Proposal Merged A proposal document which has passed review | ||
Spec PR Missing A proposal that has been accepted but has not currently been implemented in the spec | ||
Spec PR In Review A proposal that has been PR'd against the spec and is currently under review | ||
Spec PR Merged A proposal with a sufficient working implementation and whose Spec PR has been merged! |
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.
does the proposal stay in proposals
forever, for historical reference?
(it seems reasonable that it should, modulo it'll be hard to tell by looking in the proposals
directory what's active and what's not, but let's make it explicit somewhere)
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.
Yes, it should, and I assume we know if it's active if it's actually merged into the repo or not.
An interesting thing to question is whether a proposal will stay in the repo if the Spec PR never appears and/or proves that for whatever reason the proposal won't work out. I'd still say yes for historical purposes.
specification/proposals_intro.rst
Outdated
Proposal WIP A proposal document which is still work-in-progress but is being shared to incorporate feedback | ||
Proposal In Review A proposal document which is now ready and waiting for review by the core team and community | ||
Proposal Final Comment Period A proposal document which has reached final comment period either for merge, closure or postponement | ||
Proposal Merged A proposal document which has passed review |
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.
Sooner or later we're going to end up with a hundred proposals in this state. Can we define some sort of process by which they get flagged as "abandoned" after a while?
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.
oh, I think this is what @turt2live wrote at #1697 (comment).
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.
if we don't mandate that spec PRs require implementations, we can just file a bug against synapse when the PR is merged and go from there...
This PR fixes #1694 |
A placeholder issue sounds like a nice idea. The bot currently doesn't do this but could certainly be Would need to get my Rust skills up first or employ the help of another though. |
specification/proposals_intro.rst
Outdated
viewpoints and get consensus, but this can sometimes be time-consuming (or | ||
the author may be biased), in which case an impartial 'shepherd' can be | ||
assigned to help guide the proposal through this process. A shepherd is | ||
assigned to help guide the proposal through this process. A shepherd is | ||
typically a neutral party from the core team or an experienced member of |
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 are the conditions to be seen as experienced
?
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.
someone who already has experience in contributing to the spec via MSCs or PRs
specification/proposals_intro.rst
Outdated
- Members of the core team and community will review and discuss the PR in the | ||
comments and in relevant rooms on Matrix. Discussion outside of GitHub should | ||
be summarised in a comment on the PR. | ||
- At some point a member of the core team will propose a motion for a final |
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.
"At some point" would need clarification
specification/proposals_intro.rst
Outdated
- Once your proposal has been accepted and merged, it is time to submit the | ||
actual change to the Specification that your proposal reasoned about. This is | ||
known as a spec PR. However in order for your spec PR to be accepted, you | ||
**must** show an implementation to prove that it works well in practice. 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.
Any kind of implementation? Can it be a stand-alone piece of code? unit tests? does it need to be integrated into existing implementations? If yes, which one are deemed "valid" to start with? Also, what defines "work well in practice"?
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.
We deliberately leave this open ended as a suitably passable implementation could vary wildly based on the spec change it is implementing. What is deemed passable will need to be taken on a case-by-case basis.
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 from my point of view. Have suggested a few minor changes
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.
Overall I'm fine (and by the way - great text, really). A couple of non-blocking comments below.
specification/proposals_intro.rst
Outdated
addition, any significant unforeseen changes to the original idea found | ||
during this process will warrant another MSC. | ||
|
||
- Please sign off the spec PR as per the `CONTRIBUTING.rst |
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 sign-off is required for the spec PR but not for the initial proposal?
acceptance. | ||
|
||
- Members of the Core Team and community will review and discuss the PR in the | ||
comments and in relevant rooms on Matrix. Discussion outside of GitHub should |
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.
please can we have a "please use threaded comments where possible in order to separate the threads of conversation and allow them to be individually marked as resolved/unresolved"?
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's basically the opposite of what has been proposed before, in that we were going to use line comments only when it was discussing the actual text rather than the broader ideas
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 was proposed before was wrong, then ;)
trying to follow multiple streams of discussion in github comments is a nightmare.
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.
The issues raised were that it is very easy for the conversations to get lost, and hard to follow updates unless you're actively participating in all the discussions. Amongst others
Either way, I'm not sure we want to block this MSC process doc on deciding whether we should change it.
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.
yup, what was proposed before was wrong. empirically, the new GH process seems to be working well when people comment in threads (which can be individually tracked and resolved/unresolved). It becomes a complete trainwreck when there's just one massive linear thread which jumps around all over the place without any way to track resolution of sidebars or follow the thread. I think specifying how we review the MSCs is pretty important, and i'd prefer that we got on the same page.
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.
(imagine how annoying it'd be if this discussion was interleaved with all the other discussions on this MSC, in the main comment thread...)
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 can understand that people find it better, but I don't think its a trivial change that should be put in without some discussion with the rest of the spec team tbh.
follows: | ||
|
||
- Create a first draft of your proposal using `GitHub-flavored markdown | ||
<https://help.github.com/articles/basic-writing-and-formatting-syntax/>`_ |
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.
A historical note might be good here to acknowledge that we used google docs in the past but wanted to switch to a more FOSS-friendly system with better versioning, and to acknowledge that there are grandfathered MSCs hanging around.
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.
We have one here. Should it be moved?
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 have a few minor requests remaining (most notably countermanding @richvdh's request to move the philosophical content off centre-stage - sorry :/), but otherwise looks excellent to me. can't wait to use it!
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.
lgtm
lgtm, thanks :) |
specification/proposals_intro.rst
Outdated
Proposal Drafting and Feedback N/A A proposal document which is still work-in-progress but is being shared to incorporate feedback | ||
Proposal In Review proposal-in-review A proposal document which is now ready and waiting for review by the Core Team and community | ||
Proposal Final Comment Period proposal-final-comment-period A proposal document which has reached final comment period either for merge, closure or postponement | ||
Proposal Merged/Spec PR Missing proposal-passed-review A proposal document which has passed review. Waiting for a PR against the Spec |
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 the label for this not "spec-pr-missing" ?
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.
Explained in the other comment.
specification/proposals_intro.rst
Outdated
Proposal In Review proposal-in-review A proposal document which is now ready and waiting for review by the Core Team and community | ||
Proposal Final Comment Period proposal-final-comment-period A proposal document which has reached final comment period either for merge, closure or postponement | ||
Proposal Merged/Spec PR Missing proposal-passed-review A proposal document which has passed review. Waiting for a PR against the Spec | ||
Spec PR In Review spec-pr A proposal that has been PR'd against the spec and is currently under review |
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.
spec-pr-in-review? on the proposal pr or the spec 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.
Good point. I was thinking this would be a lifetime label but that doesn't really make sense once it's merged. Also this would be on the proposal. Added some clarification that all labels should be on the proposal PR.
lgtm, let's ship it! |
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.
- [d487c09 ]
|
We are shifting the MSC process to one that is hopefully clearer and more structured for everyone. The new process is based heavily on Rust RFCs. This PR tries to offer a complete breakdown of the process, but please do voice your concerns if something is still confusing as no doubt others will run into the same issue if not brought up now.
The process of MSCs will be aided with the use of @mscbot, our fork of Rust's @rfcbot. We hope to upstream any changes made to the rfcbot project as they are made. For core team members, documentation on using the bot is here. Expect this to change and then be put in a more presentable form as this PR evolves.
Feedback is encouraged!