Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions FIPS/fip-0001.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,21 @@ created: 2019-04-02

## What is a FIP?

FIP stands for Filecoin Improvement Proposal. A 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 stands for Filecoin Improvement Proposal. A 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 its adoption. 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.
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 main types of FIPs:

1. A **Technical FIP** (Filecoin Technical Proposal or **FTP**) 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. Technical FIPs consist of three parts: a design document, an implementation, and, if warranted, an update to the [formal specification](https://filecoin-project.github.io/specs/). Furthermore, technical FIPs can be broken down into the following categories:
1. A **Technical FIP** (Filecoin Technical Proposal or **FTP**) describes any change that affects most or all Filecoin implementations, such as a change to 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. Technical FIPs consist of three parts: a design document, an implementation, and, if warranted, an update to the [formal specification](https://filecoin-project.github.io/specs/). Furthermore, technical FIPs can be broken down into the following categories:
- **Core** - improvements requiring a consensus upgrade, as well as changes that are not necessarily consensus critical but may be relevant to future consensus upgrades.
- **Networking** - includes improvements to data propogation, or any of the Filecoin network protocols (see [Network Interface](https://spec.filecoin.io/#systems__filecoin_nodes__network) in the spec for a full listing).
- **Networking** - includes improvements to data propagation, or any of the Filecoin network protocols (see [Network Interface](https://spec.filecoin.io/#systems__filecoin_nodes__network) in the spec for a full listing).
- **Interface** - includes improvements around client [API/RPC](https://spec.filecoin.io/#systems__filecoin_nodes__node_types__node-interface) specifications and standards, and also certain language-level standards like method names.
- **Informational** - describes a Filecoin design issue, or provides general guidelines or information to the Filecoin community, but does not propose a new feature. Informational FTPs do not necessarily represent Filecoin community consensus or a recommendation, so users and implementers are free to ignore Informational FTPs or follow their advice.

Expand All @@ -40,7 +40,7 @@ A FIP must meet certain minimum criteria. It must be a clear and complete descri

Parties involved in the process are you, the champion or *FIP author*, the [*FIP editors*](#fip-editors), and the *Filecoin Core Developers*.

: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 Issues section of this repository](https://github.com/filecoin-project/FIPs/issues), [the Filecoin Discourse Forum](https://discuss.filecoin.io/), and [the Filecoin community chat](https://docs.filecoin.io/community/chat-and-discussion-forums/). In particular, [the Issues section of this repository](https://github.com/filecoin-project/FIPs/issues) 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 Issues section of this repository](https://github.com/filecoin-project/FIPs/issues), [the Filecoin Discourse Forum](https://discuss.filecoin.io/), and [the Filecoin community chat](https://docs.filecoin.io/community/chat-and-discussion-forums/). In particular, [the Issues section of this repository](https://github.com/filecoin-project/FIPs/issues) is an excellent place to discuss your proposal with the community and start creating more formalized language around your FIP.

Your role as the champion is to write the FIP using the style and format described below, shepherd the discussions in the appropriate forums, and build community consensus around the idea. Following is the process that a successful FIP will move along:

Expand All @@ -52,9 +52,9 @@ Each status change is requested by the FIP author and reviewed by the FIP editor

* **Active** -- Some Informational and Organizational FIPs may also have a status of “Active” if they are never meant to be completed. E.g. FIP-1 (this FIP).
* **Work in progress (WIP)** -- Once the champion has asked the Filecoin community whether an idea has any chance of support, they will write a draft FIP as a [pull request](https://github.com/filecoin-project/FIPs/pulls). Consider including an implementation if this will aid people in studying the FIP.
* :arrow_right: Draft -- If agreeable, FIP editor will assign the FIP a number and merge your pull request. The FIP editor will not unreasonably deny an FIP.
* :arrow_right: Draft -- If agreeable, FIP editor will assign the FIP a number and merge your pull request. The FIP editor will not unreasonably deny a FIP.
* :x: Draft -- Reasons for denying draft status include being too unfocused, too broad, duplication of effort, being technically unsound, not providing proper motivation or addressing backwards compatibility, or not in keeping with the [Filecoin improvement principles](https://github.com/filecoin-project/FIPs/blob/master/README.md).
* **Draft** -- Once the first draft has been merged, you may submit follow-up pull requests with further changes to your draft until such point as you believe the FIP to be mature and ready to proceed to the next status. An FIP in draft status must be implemented to be considered for promotion to the next status (ignore this requirement for core FIPs).
* **Draft** -- After the first draft is merged, you may still submit follow-up pull requests with further changes until you believe the FIP to be mature and ready to proceed to the next status. A FIP in draft status must be implemented to be considered for promotion to the next status (ignore this requirement for core FIPs).
* :arrow_right: Last Call -- If agreeable, the FIP editor will assign Last Call status and set a review end date (`review-period-end`), normally 14 days later.
* :x: Last Call -- A request for Last Call status will be denied if material changes are still expected to be made to the draft. We hope that FIPs only enter Last Call once, so as to avoid unnecessary noise.
* **Last Call** -- This FIP will be listed prominently on the Filecoin website
Expand Down Expand Up @@ -151,7 +151,7 @@ The `resolution` header is required for Standards Track FIPs only. It contains a

#### `discussions-to` header

While an FIP is a draft, a `discussions-to` header will indicate the mailing list or URL where the FIP is being discussed. As mentioned above, examples for places to discuss your FIP include the [Filecoin Forum on Discourse](https://discuss.filecoin.io/) or an issue in this repo.
While a FIP is a draft, a `discussions-to` header will indicate the mailing list or URL where the FIP is being discussed. As mentioned above, examples for places to discuss your FIP include the [Filecoin Forum on Discourse](https://discuss.filecoin.io/) or an issue in this repo.

No `discussions-to` header is necessary if the FIP is being discussed privately with the author.

Expand Down Expand Up @@ -179,17 +179,17 @@ FIPs may have a `requires` header, indicating the FIP numbers that this FIP depe

#### `superseded-by` and `replaces` headers

FIPs may also have a `superseded-by` header indicating that an FIP has been rendered obsolete by a later document; the value is the number of the FIP that replaces the current document. The newer FIP must have a `replaces` header containing the number of the FIP that it rendered obsolete.
FIPs may also have a `superseded-by` header indicating that a FIP has been rendered obsolete by a later document; the value is the number of the FIP that replaces the current document. The newer FIP must have a `replaces` header containing the number of the FIP that it rendered obsolete.

## Auxiliary Files

FIPs may include auxiliary files such as diagrams. Such files must be named FIP-XXXX-Y.ext, where “XXXX” is the FIP number, “Y” is a serial number (starting at 1), and “ext” is replaced by the actual file extension (e.g. “png”).

## Transferring FIP Ownership

It occasionally becomes necessary to transfer ownership of FIPs to a new champion. In general, we'd like to retain the original author as a co-author of the transferred FIP, but that's really up to the original author. A good reason to transfer ownership is because the original author no longer has the time or interest in updating it or following through with the FIP process, or has fallen off the face of the 'net (i.e. is unreachable or isn't responding to email). A bad reason to transfer ownership is because you don't agree with the direction of the FIP. We try to build consensus around an FIP, but if that's not possible, you can always submit a competing FIP.
It occasionally becomes necessary to transfer ownership of FIPs to a new champion. In general, we'd like to retain the original author as a co-author of the transferred FIP, but that's really up to the original author. A good reason to transfer ownership is because the original author no longer has the time or interest in updating it or following through with the FIP process, or has fallen off the face of the 'net (i.e. is unreachable or isn't responding to email). A bad reason to transfer ownership is because you don't agree with the direction of the FIP. We try to build consensus around a FIP, but if that's not possible, you can always submit a competing FIP.

If you are interested in assuming ownership of an FIP, send a message asking to take over, addressed to both the original author and the FIP editor. If the original author doesn't respond to email in a timely manner, the FIP editor will make a unilateral decision (it's not like such decisions can't be reversed :)).
If you are interested in assuming ownership of a FIP, send a message asking to take over, addressed to both the original author and the FIP editor. If the original author doesn't respond to email in a timely manner, the FIP editor will make a unilateral decision (which can be reversed).

## FIP Editors

Expand All @@ -205,27 +205,27 @@ For each new FIP that comes in, an editor does the following:

- Read the FIP to check if it is ready: sound and complete. The ideas must make technical sense, even if they don't seem likely to get to final status.
- The title should accurately describe the content.
- Check the FIP for language (spelling, grammar, sentence structure, etc.), markup (Github flavored Markdown), code style
- Check the FIP for language (spelling, grammar, sentence structure, etc.), markup (GitHub flavored Markdown), code style

If the FIP isn't ready, the editor will send it back to the author for revision, with specific instructions.

Once the FIP is ready for the repository, the FIP editor will:

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

- Merge the corresponding pull request

- Send a message back to the FIP author with the next step.

Many FIPs are written and maintained by developers with write access to the Filecoin codebase. The FIP editors monitor FIP changes, and correct any structure, grammar, spelling, or markup mistakes we see.

The editors don't pass judgment on FIPs. We merely do the administrative & editorial part.
The editors don't pass judgment on FIPs. They merely do the administrative & editorial part.

## History

This document was derived heavily from [Ethereum's EIP 1](https://github.com/ethereum/EIPs) written by Martin Becze and Hudson Jameson, which was derived from [Bitcoin's BIP-0001](https://github.com/bitcoin/bips) written by Amir Taaki which in turn was derived from [Python's PEP-0001](https://www.python.org/dev/peps/). 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](https://github.com/ethereum/EIPs) written by Martin Becze and Hudson Jameson, which was derived from [Bitcoin's BIP-0001](https://github.com/bitcoin/bips) written by Amir Taaki, which in turn was derived from [Python's PEP-0001](https://www.python.org/dev/peps/). In many places text was simply copied and modified. The authors of the previous texts on which this process is based are not responsible for the Filecoin Improvement Process and should not be bothered with questions. Please direct all comments to the FIP editors.

April 2, 2019: FIP 1 created from EIP 1
April 2, 2019: FIP-1 created from EIP-1

See [the revision history for further details](https://github.com/filecoin-project/FIPs/commits/master/FIPS/fip-0001.md), which is also available by clicking on the History button in the top right of the FIP.

Expand Down
12 changes: 6 additions & 6 deletions mission.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ Here is a short overview of each of these terms:
* Users and providers are not controlled or governed by powerful intermediaries (unlike markets like Uber or Airbnb).
* Activity is trustable (web3) through the public verifiability of operations and rational incentives.
* Refers to the decentralization movement of 2015+, including IPFS, Bitcoin, Ethereum, and more.
* Third parties cannot prevent willing participants from exchanging data and/or ayments for it.
* Third parties cannot prevent willing participants from exchanging data and/or payments for it.
* Filecoin uses cryptography, end-to-end encryption at rest, and incentives to secure information and network operation.

### Efficient

* Make digital storage (space-time) a proper commodity with real markets
* Decouple digital storage from cloud computing moat featuresets -- turn storage market into a real market where any provider can sell their storage.
* Make digital storage (spacetime) a proper commodity with real markets
* Decouple digital storage from cloud computing moat feature sets -- turn storage market into a real market where any provider can sell their storage.
* Enable humanity to create an efficient digital storage market, with small margins and as close as we can get to physical limitations.
* Ensure efficient usage of digital storage resources -- reduce digital space waste (unused storage supply while prices are high enough to warrant using it).
* Drive more and more efficient usage of storage media.
Expand All @@ -39,12 +39,12 @@ Here is a short overview of each of these terms:
* The network is robust to changing market dynamics and powerful counter incentives -- meaning, it is rational to continue operating the network.
* The network is robust to network censorship attacks (given there exist willing storage providers).
* The network is robust to specific file censorship attacks (given there exist willing storage providers).
* The network is robust to catastrophic attacks (ie nuclear war, long-running internet partitions, etc).
* The network is robust to catastrophic attacks (i.e., nuclear war, long-running internet partitions, etc.).

### Foundation

* Filecoin can be used as the foundation of other technologies and applications. It is a platform.
* Filecoin supports data storage intensive applications.
* Filecoin supports data storage-intensive applications.
* Programs, Webapps, DApps, and smart contracts can be written to store and retrieve data from Filecoin efficiently, safely, and with high confidence.
* Filecoin is a trustable, dependable foundation for critical systems and applications.
* It becomes possible for parties to store information indefinitely (using rational incentives, and money), without having to be online or alive to renew or re-upload things.
Expand Down
2 changes: 1 addition & 1 deletion templates/template_FTP.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ replaces (*optional): <FIP number(s)>
<!--You can leave these HTML comments in your merged FIP and delete the visible duplicate text guides, they will not appear and may be helpful to refer to if you edit it again. This is the suggested template for new FIPs. Note that a FIP number will be assigned by an editor. When opening a pull request to submit your FIP, please use an abbreviated title in the filename, `fip-draft_title_abbrev.md`. The title should be 44 characters or less.-->
This is the suggested template for new FIPs.

Note that an FIP number will be assigned by an editor. When opening a pull request to submit your FIP, please use an abbreviated title in the filename, `fip-draft_title_abbrev.md`.
Note that a FIP number will be assigned by an editor. When opening a pull request to submit your FIP, please use an abbreviated title in the filename, `fip-draft_title_abbrev.md`.

The title should be 44 characters or less.

Expand Down