From 9731013a71709baa71cf072389f65b65658d6fff Mon Sep 17 00:00:00 2001 From: Travis Vachon Date: Wed, 22 Oct 2025 14:22:35 -0700 Subject: [PATCH 1/3] feat: RFC RFC An RFC to request comment on proposed customs and practices for Storacha RFCs. Please take a look and let's hammer our the next version of this process! --- rfc-rfc.md | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 rfc-rfc.md diff --git a/rfc-rfc.md b/rfc-rfc.md new file mode 100644 index 0000000..73eb6c4 --- /dev/null +++ b/rfc-rfc.md @@ -0,0 +1,103 @@ +# RFC: Storacha RFCs + +## + +## Authors + +- [Travis Vachon](https://github.com/travis), [Storacha Network](https://storacha.network/) + +## Introduction + +The Storacha "Request For Comments" process is modeled after the ["Internet Engineering Task Force" (IETF) process of the same name](https://www.ietf.org/process/rfcs/) both as an homage to this legendary standards body and in recognition of the fact that our team aspires to create open source, standardized protocols for decentralized data storage and retrieval that have the potential to outlast our team and organization. Despite this aspiration, however, our team is both culturally and practically very different from the IETF and as such the customs and practices of the IETF's RFC process are not necessarily well suited to our needs. + +This document lays out guidelines for the creation of Storacha RFC documents. We describe the purpose of a Storacha RFC, discuss the various types of RFCs and provide templates and guidelines for RFC authors to both aid in their creation and help provide consistency between them. We also discuss both existing and desired processes for managing RFCs through their lifecycles and building consensus across our team toward the concrete actions RFCs propose. + +## The Purpose of Storacha RFCs + +Storacha RFCs serve a variety of purposes including: + +1) Building consensus on courses of actions that could face blocking issues from other team members +2) To invite brainstorming of ideas that solve underlying issues in a more simpler or more elegant way +3) To ensure everyone on the team is aware of decisions and techniques so they can apply them in their own work +4) Laying groundwork for ideas that will eventually become formal specifications +5) Discussion of decisions that "ripple across our architecture" +6) Discussion of new patterns we expect to use in more than one service in our system + +The bar for these purposes does not need to be high - if you suspect it may serve one or more of the purposes above, please feel free to create an RFC to drive discussion forward. + +## Should I Write an RFC? + +Some criteria to consider when deciding whether to write an RFC include: + +1) Does this decision commit our work to a path that we may not be able to easily walk back in the future? +2) Am I proposing a protocol, where once something is in the world we will need to deal with backwards compatibility? +3) Is this an architectural decision that will impact multiple parts of our system? +4) Will this work need to be parallelized and therefore require multiple team members to work in close syncrony? +5) Is the proposed change too complex for a quick spike that could de-risk the decision? +6) Is there a large degree of ambiguity, where several different approaches might work? + +If you answer "yes" to one or more, consider writing an RFC. + +## RFC Status + +> It is a regrettably well spread misconception that publication as an RFC provides some level of recognition. It does not, or at least not any more than the publication in a regular journal. In fact, each RFC has a status, relative to its relation with the Internet standardization process: Informational, Experimental, or Standards Track (Proposed Standard, Draft Standard, Internet Standard), or Historic. This status is reproduced on the first page of the RFC itself, and is also documented in the periodic "Internet Official Protocols Standards" RFC (STD 1). But this status is sometimes omitted from quotes and references, which may feed the confusion. + +https://datatracker.ietf.org/doc/html/rfc1796 + +Inspired by the IETF, we give RFCs a "status" that helps reviewers contextualize information in the RFC. RFCs can and should change status over time - an Informational RFC may become an Experimental RFC if it has moved into prototyping, and may become "Standards Track" if it becomes widely used and appropriate for external use. Statuses include: + +Informational +Experimental +Best Current Practice +Standards Track +Historical + +"Standards Track" is broken down into 2 sub-statuses: + +Proposed Standard +Published Standard + +With heavy inspiration from https://www.ietf.org/process/rfcs/ the statuses are described below. + +### Informational + +Informational RFCs are published for the general information of the Storacha community, and do not represent consensus or recommendations for our team or community. + +### Experimental + +Experimental RFCs are published as part of some research or development effort. Such a specification is published for the general information of the Storacha community and as an archival record of the work. + +### Best Current Practice + +Best Current Practice RFCs document Storacha processes as agreed to by our community and are intended to help our team and community members to follow some common guidelines for policies and operations. + +### Proposed Standard + +The first stage of our standards process. All Storacha protocols intended to serve as externally facing standards start here. Moving an RFC into "Proposed Standard" suggests we would like third parties to engage and potentially implement the RFC and represents a commitment on our part to sheparding this process. + +### Published Standard + +The second and final stage of our standards process. Moving an RFC to this stage represents a commitment on the part of our team to maintain backwards compatibility with the published standard indefinitely. + +### Historical + +The Historical status is for RFCs that are no longer current - this may mean we have dropped support for a standard or that the information in the RFC is either no longer used or no longer best practice. + +## RFC Tooling + +In order to ensure that RFCs are widely and consistently reviewed and don't get lost or stalled during review, we maintain a number of team and community processes and practices. These include: + +### GitHub Pull Requests + +RFCs should be submitted as Pull Requests to the https://github.com/storacha/rfc repository. The `storacha/developers` team should be added as a reviewer. Additionally, the RFC author should add individual developers from whom they would like especially close review as reviewers. + +Discussion of an RFC should take place in the Pull Request using standard GitHub Pull Request tooling. + +Developers SHOULD indicate their signoff on an RFC by "approving" the PR. + +### Stakeholder Notifications + +Developers SHOULD configure GitHub PR notifications so they receive updates about PRs they care about. Developers MAY mute discussions they are not interested in particupating in. + +Developers MAY opt to receive notifications about Pull Requests in Discord (TODO how?). Additionally, we maintain a channel in Discord where notifications about activity in the https://github.com/storacha/rfc repository are posted. (TODO also how?) + From 959a08b7f0bfb6bdfda1c80a065bda938621f0f0 Mon Sep 17 00:00:00 2001 From: Travis Vachon Date: Wed, 22 Oct 2025 14:47:12 -0700 Subject: [PATCH 2/3] fix: add status! --- rfc-rfc.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rfc-rfc.md b/rfc-rfc.md index 73eb6c4..411db3b 100644 --- a/rfc-rfc.md +++ b/rfc-rfc.md @@ -1,6 +1,5 @@ # RFC: Storacha RFCs - -## +Status: Informational ## Authors From 02b5ae7b82df277d2e7a47e595b28fd36117b3dd Mon Sep 17 00:00:00 2001 From: Travis Vachon Date: Fri, 24 Oct 2025 09:46:59 -0700 Subject: [PATCH 3/3] fix: incorporate lots of feedback from https://github.com/storacha/RFC/pull/71 --- rfc-rfc.md | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/rfc-rfc.md b/rfc-rfc.md index 411db3b..a05b457 100644 --- a/rfc-rfc.md +++ b/rfc-rfc.md @@ -7,7 +7,7 @@ Status: Informational ## Introduction -The Storacha "Request For Comments" process is modeled after the ["Internet Engineering Task Force" (IETF) process of the same name](https://www.ietf.org/process/rfcs/) both as an homage to this legendary standards body and in recognition of the fact that our team aspires to create open source, standardized protocols for decentralized data storage and retrieval that have the potential to outlast our team and organization. Despite this aspiration, however, our team is both culturally and practically very different from the IETF and as such the customs and practices of the IETF's RFC process are not necessarily well suited to our needs. +The Storacha "Request For Comments" process is modeled after the ["Internet Engineering Task Force" (IETF) process of the same name](https://www.ietf.org/process/rfcs/) both as an homage to this legendary standards body and in recognition of the fact that our team aspires to create open source, standardized protocols for decentralized data storage and authorized upload and retrieval that have the potential to outlast our team and organization. Despite this aspiration, however, our team is both culturally and practically very different from the IETF and as such the customs and practices of the IETF's RFC process are not necessarily well suited to our needs. This document lays out guidelines for the creation of Storacha RFC documents. We describe the purpose of a Storacha RFC, discuss the various types of RFCs and provide templates and guidelines for RFC authors to both aid in their creation and help provide consistency between them. We also discuss both existing and desired processes for managing RFCs through their lifecycles and building consensus across our team toward the concrete actions RFCs propose. @@ -16,11 +16,14 @@ This document lays out guidelines for the creation of Storacha RFC documents. We Storacha RFCs serve a variety of purposes including: 1) Building consensus on courses of actions that could face blocking issues from other team members -2) To invite brainstorming of ideas that solve underlying issues in a more simpler or more elegant way -3) To ensure everyone on the team is aware of decisions and techniques so they can apply them in their own work +2) Inviting brainstorming of ideas that solve underlying issues in a simpler or more elegant way +3) Ensuring everyone on the team is aware of decisions and techniques so they can apply them in their own work 4) Laying groundwork for ideas that will eventually become formal specifications 5) Discussion of decisions that "ripple across our architecture" 6) Discussion of new patterns we expect to use in more than one service in our system +7) Documentation of existing patterns and practices in use by our team +8) Proposing potential externally-facing standards +9) Documenting "Storacha Standards" - protocols to which our team is committed to maintaining backwards compatibility indefinitely The bar for these purposes does not need to be high - if you suspect it may serve one or more of the purposes above, please feel free to create an RFC to drive discussion forward. @@ -31,9 +34,10 @@ Some criteria to consider when deciding whether to write an RFC include: 1) Does this decision commit our work to a path that we may not be able to easily walk back in the future? 2) Am I proposing a protocol, where once something is in the world we will need to deal with backwards compatibility? 3) Is this an architectural decision that will impact multiple parts of our system? -4) Will this work need to be parallelized and therefore require multiple team members to work in close syncrony? +4) Will this work need to be parallelized and therefore require multiple team members to work in close synchrony? 5) Is the proposed change too complex for a quick spike that could de-risk the decision? 6) Is there a large degree of ambiguity, where several different approaches might work? +7) Is this intended to become a Storacha Standard? If you answer "yes" to one or more, consider writing an RFC. @@ -45,30 +49,30 @@ https://datatracker.ietf.org/doc/html/rfc1796 Inspired by the IETF, we give RFCs a "status" that helps reviewers contextualize information in the RFC. RFCs can and should change status over time - an Informational RFC may become an Experimental RFC if it has moved into prototyping, and may become "Standards Track" if it becomes widely used and appropriate for external use. Statuses include: -Informational -Experimental -Best Current Practice -Standards Track -Historical +- Informational +- Experimental +- Best Current Practice +- Standards Track +- Historical "Standards Track" is broken down into 2 sub-statuses: -Proposed Standard -Published Standard +- Proposed Standard +- Published Standard With heavy inspiration from https://www.ietf.org/process/rfcs/ the statuses are described below. ### Informational -Informational RFCs are published for the general information of the Storacha community, and do not represent consensus or recommendations for our team or community. +Informational RFCs are published for the general information of the Storacha community, and do not represent consensus or recommendations for our team or community, nor any kind of (even potential) process or standard which could be followed. The are simply a statement of facts published to make information more broadly known. As in the IETF's guidelines, "[If it can't be practiced, it's Informational.](https://www.ietf.org/process/process/informational-vs-experimental/#:~:text=If%20it%20can%27t%20be%20practiced%2C%20it%27s%20Informational.)" -### Experimental +### Experimental -Experimental RFCs are published as part of some research or development effort. Such a specification is published for the general information of the Storacha community and as an archival record of the work. +Experimental RFCs are published as part of some research or development effort. Such a specification is published for the general information of the Storacha community and as an archival record of the work. As in the IETF's guidelines, "[If the IETF may publish something based on this on the standards track once we know how well this one works, it's Experimental.](https://www.ietf.org/process/process/informational-vs-experimental/#:~:text=If%20the%20IETF%20may%20publish%20something%20based%20on%20this%20on%20the%20standards%20track%20once%20we%20know%20how%20well%20this%20one%20works%2C%20it%27s%20Experimental.)" ### Best Current Practice -Best Current Practice RFCs document Storacha processes as agreed to by our community and are intended to help our team and community members to follow some common guidelines for policies and operations. +Best Current Practice RFCs document *existing* Storacha processes as agreed to by our community and are intended to help our team and community members follow some common guidelines for policies and operations. ### Proposed Standard @@ -96,7 +100,7 @@ Developers SHOULD indicate their signoff on an RFC by "approving" the PR. ### Stakeholder Notifications -Developers SHOULD configure GitHub PR notifications so they receive updates about PRs they care about. Developers MAY mute discussions they are not interested in particupating in. +Developers SHOULD configure GitHub PR notifications so they receive updates about PRs they care about. Developers MAY mute discussions they are not interested in participating in. -Developers MAY opt to receive notifications about Pull Requests in Discord (TODO how?). Additionally, we maintain a channel in Discord where notifications about activity in the https://github.com/storacha/rfc repository are posted. (TODO also how?) +We maintain an [#rfcs](https://discord.com/channels/1247475892435816553/1431314866475634739) channel in Discord where notifications about activity in the https://github.com/storacha/rfc repository are posted. Developers MAY opt to receive notifications about Pull Requests in Discord by configuring their Discord notifications for that channel.