-
Notifications
You must be signed in to change notification settings - Fork 185
Add fip-0001 and initialize the repo #1
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
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,240 @@ | ||||||||||||||
| --- | ||||||||||||||
| fip: 0001 | ||||||||||||||
| title: FIP Purpose and Guidelines | ||||||||||||||
| status: Active | ||||||||||||||
| type: Meta | ||||||||||||||
| author: Whyrusleeping <[email protected]> | ||||||||||||||
| https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0001.md | ||||||||||||||
| created: 2019-04-02 | ||||||||||||||
| --- | ||||||||||||||
|
|
||||||||||||||
| ## What is an FIP? | ||||||||||||||
|
|
||||||||||||||
| FIP stands for Filecoin Improvement Proposal. An FIP is a design document providing information to the Filecoin community, or describing a new feature for Filecoin or its processes or environment. The FIP should provide a concise technical specification of the feature and a rationale for the feature. The FIP author is responsible for building consensus within the community and documenting dissenting opinions. | ||||||||||||||
|
|
||||||||||||||
| ## FIP Rationale | ||||||||||||||
|
|
||||||||||||||
| We intend FIPs to be the primary mechanisms for proposing new features, for collecting community technical input on an issue, and for documenting the design decisions that have gone into Filecoin. Because the FIPs are maintained as text files in a versioned repository, their revision history is the historical record of the feature proposal. | ||||||||||||||
|
|
||||||||||||||
| For Filecoin implementers, FIPs are a convenient way to track the progress of their implementation. Ideally each implementation maintainer would list the FIPs that they have implemented. This will give end users a convenient way to know the current status of a given implementation or library. | ||||||||||||||
|
|
||||||||||||||
| ## FIP Types | ||||||||||||||
|
|
||||||||||||||
| There are three types of FIP: | ||||||||||||||
|
|
||||||||||||||
| - A **Standard Track FIP** describes any change that affects most or all Filecoin implementations, such as a change to the the network protocol, a change in block or transaction validity rules, proposed application standards/conventions, or any change or addition that affects the interoperability of applications using Filecoin. Furthermore Standard FIPs can be broken down into the following categories. Standards Track FIPs consist of three parts, a design document, implementation, and finally if warranted an update to the [formal specification]. | ||||||||||||||
daviddias marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
androowoo marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||||||||||
| - **Core** - improvements requiring a consensus fork, as well as changes that are not necessarily consensus critical but may be relevant to [“core dev” discussions](https://github.com/filecoin-project/pm). (TODO(why): need to think through this one a bit) | ||||||||||||||
daviddias marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||||||||||
| - **Core** - improvements requiring a consensus fork, as well as changes that are not necessarily consensus critical but may be relevant to [“core dev” discussions](https://github.com/filecoin-project/pm). (TODO(why): need to think through this one a bit) | |
| - **Core** - improvements requiring a consensus upgrade, as well as changes that are not necessarily consensus critical but may be relevant to future consensus upgrades. |
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.
| - An **Informational FIP** describes a Filecoin design issue, or provides general guidelines or information to the Filecoin community, but does not propose a new feature. Informational FIPs do not necessarily represent Filecoin community consensus or a recommendation, so users and implementers are free to ignore Informational FIPs or follow their advice. | |
| - An **Informational FIP** describes a Filecoin design issue, or provides general guidelines or information to the Filecoin community, but does not propose a new feature. Informational FIPs do not necessarily represent Filecoin community consensus or a recommendation, so users and implementers are free to follow or ignore Informational FIPs. |
androowoo marked this conversation as resolved.
Show resolved
Hide resolved
androowoo marked this conversation as resolved.
Show resolved
Hide resolved
androowoo marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
Outdated
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.
| :warning: Before you begin, vet your idea, this will save you time. Ask the Filecoin community first if an idea is original to avoid wasting time on something that will be be rejected based on prior research (searching the Internet does not always do the trick). It also helps to make sure the idea is applicable to the entire community and not just the author. Just because an idea sounds good to the author does not mean it will work for most people in most areas where Filecoin is used. Examples of appropriate public forums to gauge interest around your FIP include [the Filecoin subreddit], [the Issues section of this repository], and [the Filecoin Discourse Forum]. In particular, [the Issues section of this repository] is an excellent place to discuss your proposal with the community and start creating more formalized language around your FIP. | |
| :warning: Before you begin, vet your idea, this will save you time. Ask the Filecoin community first if an idea is original to avoid wasting time on something that will be rejected based on prior research (searching the Internet does not always do the trick). It also helps to make sure the idea is applicable to the entire community and not just the author. Just because an idea sounds good to the author does not mean it will work for most people in most areas where Filecoin is used. Examples of appropriate public forums to gauge interest around your FIP include [the Filecoin subreddit](https://www.reddit.com/r/filecoin/), [the issues in this repository](https://github.com/filecoin-project/FIPs/issues), and [the Filecoin Discourse Forum](https://discuss.filecoin.io/). In particular, the issues section of this repository is an excellent place to discuss your proposal with the community and start creating more formalized language around your FIP. |
Add missing links; grammar.
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 suggest that although discussions can take place in multiple places, there is a single source of truth for decision-making. Someone who wants to follow history of discussion should be able to find it in one place. I think this should be highlighted. The most convenient place in this case seems to be GH.
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.
| * **Active** -- Some Informational and Process FIPs may also have a status of “Active” if they are never meant to be completed. E.g. FIP 1 (this FIP). | |
| * **Active** -- Some Informational and Process FIPs may also have a status of “Active” if they are never meant to be completed. E.g. FIP-1 (this FIP). |
Fix inconsistent use of FIP-1 vs. FIP 1.
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 really have a small philosophy section somewhere, this will help a lot down the road when deciding how to change and expand Filecoin
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 instead of having a philosophy section, which is nice, but less directly actionable, we should have a 'Filecoin Project Goals' section, that details what Filecoin is trying to accomplish.
I think this should be an expanded version of the Filecoin mission statement. I'll sketch up a draft of that today.
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.
sounds great
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.
+1. I think it would be really helpful to have a documented set of "principles" of operation, as more actionable than philosophy. These would represent "how" to complement the mission's "what".
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.
@whyrusleeping do you have the expanded version of the Filecoin mission statement? Can you point me to the most complete version available?
@anorth looks like @momack2 started a principles doc here, will iterate based 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.
@anorth @whyrusleeping - I'm working on this here.
Outdated
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.
- ethereum website links should be removed
- I think a website is not really needed if we have an easy way to link to all the final call ones and link from the website
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 we should have somewhere on our website that points to these, not necessarily a dedicated website though, agree?
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
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 document is still lacking in how decisions are made and what makes an FIP "accepted". There are many constraints and entities in Filecoin. I would expect a checklist of constraints with reviews (e.g. security, implementation complexity, incentive, etc) and a checklist of different entities interests (e.g. storage clients, current miners large and small, future miners large and small, application developers, protocol researchers, ecosystem partners, token holders, etc)
Outdated
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.
three seems high given we currently don’t have that many impls, maybe sth like two thirds of all main clients or sth similar
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.
Yeah, we could just say "two major client implementations" for now
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 believe there are two parts to the FIP process:
- The proposal itself, which comes in text form with its argumentation, e.g., "I propose to change the behaviour of an algorithm to do
xyz, instead ofzyxas in today's protocol, because..". - The actual code that implements the proposal.
Both of these will come as PRs. The first one in this repository and the second one in the code repository(ies) that the proposal touches.
The text above touches step 1) only, but any subsequent PRs that work on the implementation should be linked to the FIP PR, e.g., through a codename/FIP number. I think it would be useful to clarify this and also indicate when implementation should start (e.g., only after the FIP gets the "Final" stamp).
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.
To get the Final stamp the FIP must be implemented by 2 clients - so FIPs should be implemented when Accepted
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.
| - Implementations - The implementations must be completed before any FIP is given status “Final”, but it need not be completed before the FIP is merged as draft. While there is merit to the approach of reaching consensus on the specification and rationale before writing code, the principle of “rough consensus and running code” is still useful when it comes to resolving many discussions of API details. | |
| - Security Considerations - All FIPs must contain a section that discusses the security implications/considerations relevant to the proposed change. Include information that might be important for security discussions, surfaces risks and can be used throughout the life cycle of the proposal. E.g. include security-relevant design decisions, concerns, important discussions, implementation-specific guidance and pitfalls, an outline of threats and risks and how they are being addressed. FIP submissions missing the "Security Considerations" section will be rejected. A FIP cannot proceed to status "Final" without a Security Considerations discussion deemed sufficient by the reviewers. | |
| - Implementations - The implementations must be completed before any FIP is given status “Final”, but it need not be completed before the FIP is merged as draft. While there is merit to the approach of reaching consensus on the specification and rationale before writing code, the principle of “rough consensus and running code” is still useful when it comes to resolving many discussions of API details. |
Mirrors security section added to the EIP process in Dec 19.
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.
| FIPs should be written in [markdown] format. | |
| FIPs should be written in [Markdown](https://guides.github.com/features/mastering-markdown/) format. |
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.
| - Assign an FIP number (generally the PR number or, if preferred by the author, the Issue # if there was discussion in the Issues section of this repository about this FIP) | |
| - Assign a FIP number (generally the PR number or, if preferred by the author, the Issue # if there was discussion in the Issues section of this repository about this FIP) |
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.
Numbering FIPs by the PR number only will be confusing IMO. I would be in favour of having a sequence number instead, or in addition. For example, a convention of FIP-2.1321 could stand for the second FIP in history, proposed in PR #1321.
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 true?
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
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 find that hard to believe/implement when the FIP editors are also key core developers. Is it even possible to have a substantive discussion around the merit and feasibility of a FIP without Dig and Why offering their opinions?
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 document was derived heavily from [Ethereum's EIP 1] written by Martin Becze and Hudson Jameson, which was derived from [Bitcoin's BIP-0001] written by Amir Taaki which in turn was derived from [Python's PEP-0001]. In many places text was simply copied and modified. Although the PEP-0001 text was written by Barry Warsaw, Jeremy Hylton, and David Goodger, they are not responsible for its use in the Filecoin Improvement Process, and should not be bothered with technical questions specific to Filecoin or the FIP. Please direct all comments to the FIP editors. | |
| This document was derived heavily from [Ethereum's EIP-1] written by Martin Becze and Hudson Jameson, which was derived from [Bitcoin's BIP-0001] written by Amir Taaki which in turn was derived from [Python's PEP-0001]. In many places, the text was simply copied and modified. Although the PEP-0001 text was written by Barry Warsaw, Jeremy Hylton, and David Goodger, they are not responsible for its use in the Filecoin Improvement Process, and should not be bothered with technical questions specific to Filecoin or the FIP. Please direct all comments to the FIP editors. |
Adjust to revised EIP naming conventions (EIP-1)
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.
| April 2, 2019: FIP 1 created from EIP 1 | |
| Sep 8, 2020: FIP 1 created from EIP 1 |
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.
| April 2, 2019: FIP 1 created from EIP 1 | |
| April 2, 2019: FIP-1 created from EIP-1 |
Fix inconsistent use of FIP-1 vs. FIP 1
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 looks like a pretty arbitrary selection of links. I'm not sure the whole bibliography section adds value.
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.
| [Ethereum's EIP 1]: https://github.com/ethereum/EIPs | |
| [Bitcoin's BIP-0001]: https://github.com/bitcoin/bips | |
| [Python's PEP-0001]: https://www.python.org/dev/peps/ | |
| [Ethereum's EIPs]: https://github.com/ethereum/EIPs | |
| [Bitcoin's BIPs]: https://github.com/bitcoin/bips | |
| [Python's PEPs]: https://www.python.org/dev/peps/ |
Text matches URLs
Uh oh!
There was an error while loading. Please reload this page.