ECIP-1077: Meta Specification Establishing Fork ECIPs (Using Pull Request development pattern)#224
Conversation
Resolved conflicts: Conflicts: _specs/ecip-_.md
|
|
||
| Make ECIPs with `Type` _Fork_ a thing. _Fork_ ECIPs should follow this process: | ||
| - A "shell" Fork ECIP is opened, fitting the [template provided](TODO). This ECIP __does not initially include `Activation Block Number` or `Features` specifications__. | ||
| - While in `WIP` or `Draft` status, one or more change sets are proposed against this document (eg. via Github Pull Requests) __modifying BOTH `Activation Block Number` and `Features` specifications__. |
There was a problem hiding this comment.
Probably also states that those PRs should not be merged until the community consensus is reached?
There was a problem hiding this comment.
I would prefer not to mention or even begin to tangle with that idea. I'm interested here only in tangible, describable mechanics.
(Including that idea might provoke questions like "What is that?" ...Which I would prefer to leave as a dubious an ambitious project for another very very brave soul to tackle in a different place at a different time.)
There was a problem hiding this comment.
@meowsbits Yeah I understand. But what should editors do when multiple changesets are present? I just think no matter what we choose, the process specification must state this clearly.
There was a problem hiding this comment.
Let me think about this. I will sleep on it and get back to you tomorrow.
There was a problem hiding this comment.
I'm leaning toward keeping this document as "mechanic" as possible; to describe only "the physics" of ECIP process events. ... 😸 I want to help program and code the event-based system; but not to provide the type definitions or factory for providing those events... yet )).
Pull requests are getting merged already, somehow. ECIPs are changing status already, somehow. Human "consensus"/decision-making (either as a potential specification or as practical tradition) has important impacts for this repository's specifications including, but certainly not limited to, this one.
If you feel strongly a need to specify and document how "human consensus" does or should happen in a given case, then I would suggest we do so in a separate concern.
I am -- as always -- open to further discussion, especially if you would (please 💟 ) propose a change set we can use a concrete reference point.
There was a problem hiding this comment.
@sorpaas See #224 (comment) for a draft meant to show a change that might fit your intention here.
It was vestigial from ECIP template. Not sure what it's for. Seem irrelevant here.
Once Accepted, Fork specifications should never change. The status Final is sufficient to describe this state. Resolves #224 (comment)
This implies that as discussion and review and popularization of proposed specification change sets show narrowing in apparent probable outcomes (in the minds of developers and protocol-managing project owners) that material implementations should be underway and enduring analysis and testing so that adequate and informed block numbers and any specification parameter details can be shaped and inform the developing proposals. In my mind this is a healthy approach: It encourages active and specification-participating research and design, prototype implementations, team coordination, and stakeholder outreach as a necessary part of the process of developing acceptable Fork ECIPs. This might work to facilitate and foster collaboration between teams and professional contexts and advocates and critics alike, while also hopefully continuing to build and prove rubrics for analysis and evaluation of proposals. Rough consensus (wikipedia) is used in ECIP Meta specifications. From the Wikipedia article:
In my mind, this proposal encourages a nudge in this direction, which I think has positive and constructive potential for framing our Fork ECIP processes. |
| Make ECIPs with `Type` _Fork_ a thing. _Fork_ ECIPs should follow this process: | ||
| - A "shell" Fork ECIP is opened, fitting the [template provided](TODO). This ECIP __does not initially include `Activation Block Number` or `Features` specifications__. | ||
| - While in `WIP` or `Draft` status, one or more change sets are proposed against this document (eg. via Github Pull Requests) __modifying BOTH `Activation Block Number` and `Features` specifications__. | ||
| - ... Stuff happens; there are comments, emails, meetings, bribes, blogs, bragging, trolling, haranguing, arguing, debating, pondering, editing, compromising, constructive criticiziing, etc... |
There was a problem hiding this comment.
Just posting a potential revision that I think might fit @sorpaas' intentions w/r/t to discussion at #224 (comment).
| - ... Stuff happens; there are comments, emails, meetings, bribes, blogs, bragging, trolling, haranguing, arguing, debating, pondering, editing, compromising, constructive criticiziing, etc... | |
| - _Rough consensus_ (keyword: see [definition](https://github.com/ethereumclassic/ECIPs/blob/c87f1828bd3d13ae5505f229207b65079a2de915/_specs/ecip-1000.md#L205) and [uses](https://github.com/ethereumclassic/ECIPs/search?q=rough+consensus&unscoped_q=rough+consensus)) is achieved and a single change set is explicitly approved by [ALL acting ECIP Editors](https://github.com/ethereumclassic/ECIPs/blob/c87f1828bd3d13ae5505f229207b65079a2de915/_specs/ecip-1000.md#ecip-editors). |
This allows protocol upgrade specifications to be derived and/or defined in any IP (Improvement Proposal) context, include ECIP, EIP, BIP, etc.
|
I don't strongly oppose this, @meowsbits. I like @shanejonas's suggestion here too, and think it might be enough: I am just a little wary of OVER constraint in reaction to a series of silly events which, were they to happen again, could just be headed off socially. |
|
@bobsummerwill I understand your concern. Here's why I think being explicit is important:
If we can accept this proposed collaboration pattern, what would the cost be of adopting it, versus continuing with tacit traditions? |
|
Great arguments, @meowsbits. |
Signed-off-by: meows <b5c6@protonmail.com>
Make changeset more streamlined. Signed-off-by: meows <b5c6@protonmail.com>
Signed-off-by: meows <b5c6@protonmail.com>
|
I'm not interested in pursuing this proposed change anymore, and have moved the |
|
Merging for the sake of documentation. |
TL;DR
Make ECIPs with
TypeFork a thing, where Fork ECIPs should follow this process:Activation Block NumberorFeaturesspecifications.WIPorDraftstatus, one or more change sets are proposed against this document (eg. via Github Pull Requests) modifying BOTHActivation Block NumberandFeaturesspecifications.Last Call. By virtue of the process specification provided, a Fork ECIP achievingLast Callmay not seeDraftnorWIPstatus again (because doing so would require a merging a change set holding INCOMPLETE specification variables).Related to and building from #223 , #222 , #221, #219 .
Discussion preamble from the author
This specification requires that Fork Features and Activation numbers are handled inextricably, and that once merged a Fork specification ECIP becomes finalized.
There are some important cases and implications to consider for this:
If, say, a Fork ECIP specification is finalized (having been fully specified with Activation Block Number and Feature Set via a merged change set)... BUT subsequently a bug is found during testing causing a loss of confidence in sucessfully achieving the fork at the specified block number, then the Fork ECIP would want to be
DeferredorWithdrawnorRejected, and then eventually replaced with a new UNIQUE ECIP containing a revised Activation Block Number and possibly also Feature Set parameters.Change sets (here, Pull Requests) are expected to take on a more considerable role for Fork specification development; proposed Feature Set + Activation schedule should be documented explicitly and then discussed relatively. Sensible use of Github's linking tools (Issue/PR references) should be used liberally, and it would probably be good establish a practical naming scheme for proposed Fork ECIP modifications (eg.
FORK-ECIP-9999 Spec: <My features> @ <My block>)