-
Notifications
You must be signed in to change notification settings - Fork 65
ECIP-1077: Meta Specification Establishing Fork ECIPs (Using Pull Request development pattern) #224
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
Merged
+144
−0
Merged
Changes from 16 commits
Commits
Show all changes
26 commits
Select commit
Hold shift + click to select a range
4f2e902
Init Forking Meta Meta ECIP specification
meowsbits 18ba1dd
Improve language around status adjectives
meowsbits abf98b0
Add rationale section specifically for block number spec
meowsbits 76872bd
Fix typo (remove rough draft 'definitive' concept vestige)
meowsbits bbf1c2f
Fix typos
meowsbits 164c68c
Write a little more
meowsbits bfd3a9c
Fix Forking Meta ECIP spec to include must have activation block number
meowsbits 4ef35f9
Introduce alternative approach; use PRs
meowsbits cf85164
Fix typo
meowsbits 9389529
Establish specification and process standards for Fork type ECIPs
meowsbits 6e9b361
Use assigned ECIP number 1077
meowsbits 2b576cc
Rename ECIP file to reflect assigned number (1077)
meowsbits b9478e6
Add link to Fork-type specification ECIP
meowsbits 2c40819
Set date metadata to day granularity
meowsbits aaf7595
Remove metadata field Resolution
meowsbits b00bdca
Remove allowance for Active status for Fork type ECIPs
meowsbits 33a7c56
Update TLDR section
meowsbits a5fcfa9
Fix typo
meowsbits 68b82f4
Add Fork type ECIP template
meowsbits e2ba044
Fix template link
meowsbits 1b3641b
Use 'IP' instead of 'ECIP'
meowsbits a4c7dd1
Note that Fork ECIPs can specify upgrades for multiple chains
meowsbits bc3f3f8
Merge branch 'master' into meow/fork-ecips
meowsbits 19dab4b
git checkout maste -- _specs/ecip-1000.md
meowsbits 595ae62
include ecip-X-FORK.md content in ecip itself
meowsbits 5a7cc34
ECIP1077: status: withdrawn
meowsbits File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,102 @@ | ||
| --- | ||
| ecip: 1077 | ||
| title: The Meta Fork ECIP: Establishing _Fork_ type ECIPs and their specifications and processes | ||
| author: Mr. Meows D. Bits | ||
| discussions-to: TBD | ||
| status: WIP | ||
| type: Meta | ||
| created: 2019-11-29 | ||
| --- | ||
|
|
||
| ### Abstract | ||
|
|
||
| Establishing _Fork_ type ECIPs, and their standards and processes. | ||
|
|
||
| #### TL;DR | ||
|
|
||
| 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... | ||
| - One change set is merged to modify the Fork ECIP, yielding a COMPLETE and UNIQUE hard fork specification document. | ||
|
|
||
| ### Definition | ||
|
|
||
| Fork ECIPs are defined as ECIPs specifying PROTOCOL ACTIVATION of any one or more Standards-Core track ECIP(s) at a specified activation block number. | ||
|
|
||
| #### Standards | ||
|
|
||
| Fork ECIPs should contain only placeholder information for ECIP-sets and block activation numbers while in `WIP` or `Draft` status. | ||
|
|
||
| Modification to any of `Last Call`, `Accepted`, or `Final` statuses should be accompanied by the introduction (merge) of a single change set containing COMPLETE and UNIQUE definitions of the placeholder values. | ||
|
|
||
| Change sets (eg Pull Requests) editing placeholder ECIP-set and block number information should do so with neither value in isolation; change sets modifying only ECIP-set values, or only block number values, are disallowed. | ||
|
|
||
| ### Motivation | ||
|
|
||
| Fork ECIPs represent a single idea: The next hardfork the blockchain is expected to undergo. This is a pragmatic and common approach to managing blockchain protocol maintenance and upgrades. | ||
| Thus, it makes sense to use accessible and conceptually-unifying procedures for this challenge. | ||
|
|
||
| - __Accessibility__: Github provides an accessible user interface for viewing a Pull Request (proposed change set) against a single document. | ||
|
|
||
| - __Legible and Communicable Reasoning__: Requiring UNIQUE and COMPLETE change sets against against a Fork type ECIP demand presentation and consideration of proposed specifications as a whole. | ||
|
|
||
| - __Sufficient specification__: It is the job of Fork ECIPs to eventually provide precise and operable implementation specifications. Incomplete proposals (changesets) are inoperable; they are not ready for review, discussion, nor implementation. Any Fork ECIP lacking a COMPLETE feature set or block number is considered incomplete. | ||
|
|
||
| - __Efficiency__: Unique proposals save time and energy. | ||
|
|
||
| #### Historical motivations | ||
|
|
||
| Related to and derivative of: | ||
|
|
||
| - https://github.com/ethereumclassic/ECIPs/issues/217 | ||
| - https://github.com/ethereumclassic/ECIPs/issues/215 | ||
| - https://github.com/ethereumclassic/ECIPs/issues/175 | ||
| - https://github.com/ethereumclassic/ECIPs/issues/131 | ||
| - https://github.com/ethereumclassic/ECIPs/issues/177 | ||
| - https://github.com/ethereumclassic/ECIPs/issues/135 | ||
| - https://github.com/ethereumclassic/ECIPs/pull/218 | ||
| - https://github.com/ethereumclassic/ECIPs/pull/212 | ||
| - https://github.com/ethereumclassic/ECIPs/pull/207 | ||
| - https://github.com/ethereumclassic/ECIPs/pull/214 | ||
| - https://github.com/ethereumclassic/ECIPs/pull/199 | ||
| - https://github.com/ethereumclassic/ECIPs/pull/196 | ||
|
|
||
| ### Specification | ||
|
|
||
| A Fork ECIP is defined as an ECIP specifying any (`n >= 1`) Standards-Core track ECIP or ECIP-set and a block activation number for this set. A Fork ECIP should be conceptually complete and unique (note that _Next hardfork_ suffices for the existing preference for ECIP uniqueness, since it is intended that there only be one at a time -- hopefully!). | ||
|
|
||
| _Complete_ is defined as being fully and totally definitive; not lacking anything. | ||
|
|
||
| _Unique_ means not the same as another thing; in this case, not precisely duplicating any existing ECIP. | ||
|
|
||
| This proposal specifies that all Fork ECIPs in `Draft` state or earlier should contain NO information about ECIP-sets or block activation numbers (all `TBD`). Proposed specifications to fill these placeholders should be made in the form of distinct and separate propsed change sets (eg Github Pull Requests) to the Fork ECIP document. The changesets are required to be UNIQUE and COMPLETE. | ||
|
|
||
| ### Rationale | ||
|
|
||
| The sole purpose of a Fork ECIP is to join a block number (activation block) with a set of `n >= 1` Standards-Core type ECIPs containing protocol-facing changes. The document says "_These_ features will activate at _this_ moment." | ||
|
|
||
| 0. "Shell" format Fork ECIPs represent a clear, albeit abstract, idea: The blockchain's next hard fork. | ||
|
|
||
| 1. __Demanding fully-formed Fork ECIP Changeset proposal forces authors, editors, and reviewers to evaluate and document ECIP-set behavior and enables concrete discussion of feature sets as complete wholes.__ A Fork ECIP Changeset may represent a plurality of features, and so in order to be an _operable_ specification it should not represent an ambiguous set. Sets of ECIPs can have interoperative dependencies and outcomes; this causes a conceptual permutation and combination challenge when attempting to design a set of ECIPs for simultaneous inclusion. The intention of this specification is make these logical steps as explicit and document and accessible as possible, in order that good decisions can be made with a process of open and constructive collaboration, enabled by named and concrete options. | ||
|
|
||
| 2. __Fork ECIP Changesets without block numbers lack operability.__ Activation numbers _are specifications_ and should not be treated as a second class or at-convenience citizens. Implementation timelines are importantly related variables to their adjacent ECIP-sets (large set ostensibly require long timelines, hotfix sets require short ones.) We cannot reason about them in isolation. | ||
|
|
||
| 3. __Concrete things are easier to build language and reasoning around.__ Nuances of interoperations are documented and included in concrete proposals, leaving less theoretical abstract reasoning to manage, which is relevant in the context of group _and_ individual decision making. "Competing" Fork ECIP Changeset alternatives become explicit and standardized, yielding conceptual and communicable clarity in review processes and decision-making processes. | ||
|
|
||
| #### Alternatives considered | ||
|
|
||
| Use distinct UNIQUE and COMPLETE ECIPs to describe fork specification options. | ||
|
|
||
| However, allowing fully-formed alternative and "competing" ECIPs is logistically and practically difficult to use. | ||
| Currently, our most prominently used collaboration tool, Github, does not provide an accessible UI for comparing arbitrary documents or review separate arbitrary documents as a conceptual set. | ||
|
|
||
| ### Implementation | ||
|
|
||
| A Fork ECIP should achieve `Last Call` as a change set has been successfully merged. Conversely, a Fork ECIP with non-empty specifications may not see `Draft` or `WIP` status; it may only otherwise be `Final`, `Withdrawn`, or `Rejected`. | ||
|
|
||
| This proposed procedure makes only marginal conceptual changes to existing practices, demanding only that what was taken as implication, subtext, or context before now be made explicit. Rather than reviewing actual-or-theoretical proposed changesets to an ECIP (which sadly, have historically usually been theoretical), this forces proposed Fork ECIP specification outcomes to assume fully qualified and standardized formats before becoming eligible for consideration. | ||
|
|
||
| ### Copyright/Licensing | ||
|
|
||
| MIT. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this 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.
Just posting a potential revision that I think might fit @sorpaas' intentions w/r/t to discussion at #224 (comment).