-
Notifications
You must be signed in to change notification settings - Fork 232
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
IPIP 0001: Lightweight "RFC" Process for IPFS Specifications #289
Conversation
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.
Nice! IMO you've nailed the goal of making a clear and legible process, but keeping it minimal.
2 minor process questions, and a few minor grammar suggestions.
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.
How will existing RFCs be updated:
- when making editorial changes?
- when fixing a bug in the RFC?
- when adding a (minor?) new feature to a protocol?
Presumably 1. could be made by editing the RFC via a PR. For the 2nd and 3rd point, it's not clear if those would require a new RFC (which can get complicated, leading to multiple RFCs stacked on top of each other).
In libp2p, our RFCs have versions, so that in order to understand any protocol, it is sufficient to read a single document.
@marten-seemann the purpose of RFC documents in the process proposed here, is to document motivation and the change applied to the spec, not to be the spec itself. We do want each spec to be a single document that is always up-to-date. We don't want to end up with IETF RFC situation where RFC==specs and you need to know "which RFC is the latest". The difference in the process proposed here is that RFC lives next to the specs. To illustrate:
I went with RFC to avoid naming bikeshed, but we could rename these documents from "RFC" to something else, if it causes too much confusion. Would CR (Change Request) be more clear? |
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.
looks like a great step forward 👍
I like it a lot! 🥳 I would add also non-accepted RFCs with the reason for future references. |
That makes a lot of sense, thanks for the clarification. Looks like I got confused by IETF terminology here.
I'd appreciate that. Of course you're totally right that a "request for comment" quite literally should request comments, and not be the spec, but I fear that many people came across IETF RFCs and I wouldn't be the only one confused here.
Sounds good to me. Or maybe call it IPIP (InterPlanetary Improvement Proposal)? |
@lidel : thanks for putting this forward! The answers in #289 (comment) about the relationship of RFC md's to Spec md's. Should we maybe put it in |
Putting some ideas here from a previous conversation with @lidel (cc @BigLep ): WDYT about merging also RFCs that were not accepted, and also RFCs that are OK but will not be implemented yet (giving the opportunity to other IPFS implementations to do it if they think they are useful)? Maybe we don't think that a specific spec is useful for us right now, but it can be useful for someone. We can add it as valid but not being officially part of the protocol. This will open a door for other IPFS implementations to implement it if it is worth it for their use case. Of course, those specs must work on top of the actual, validated ones, and be backward compatibles. If a spec is well written but is invalid just because there is something better to do the same thing, or because it will break other specs (those are just 2 examples), we can merge them as rejected specs. With that, we can avoid common requests in the future and we can easily point to the rejected specs with the whys. If instead of doing that we keep pull requests open, we are coupling specs to Github. We will lose information if we want to generate some webpage with the specs, as an example. Examples of this: |
@marten-seemann I love that name. |
This comment was marked as resolved.
This comment was marked as resolved.
as suggested in #289 (comment) + #289 (comment)
Thanks for the feedback so far! Pushed some changes:
|
Open question:
My take: IPIP pull request on Github in good enough (7e143b4). No need to introduce anything new. Rationale:
Realistically, given that we are still discussing what MVP IPFS is, none of the specs will be "required part of the protocol". Implementers will pick and choose parts depending on their needs and the level of interoperability with IPFS ecosystem their implementation requires. I imagine we will be keeping IPIP PR open until the author continues working on it, addresssing feedback from community and stewards. When ready, we make a decision to merge or close without merging + provide rationale why. My assumption is that IPIP will either be useful enough to be merged (ready to be used by implementers), or not. Hard to imagine the grey area where we merge something we are not happy with, but let me know if you have a more fleshed out example we could discuss. |
I think I didn't explain myself well. My point was not to merge something we are not happy with, but something that is useful to someone, but is not part of the main IPFS implementation, and it is not needed to make a client work properly with the network. Real example: BEP44: https://www.bittorrent.org/beps/bep_0044.html. It is a draft, not accepted BEP, but it is really useful and there are several clients implementing it, and it works. When you try to do a PUT query, you will see that most of peers won't accept it, but you eventually will be able to save random data on the torrent DHT network because some of the clients are supporting that BEP, even being a draft. It is so useful that you have other BEPs based on that one, like https://www.bittorrent.org/beps/bep_0046.html. |
Co-authored-by: Mosh <1306020+mishmosh@users.noreply.github.com>
Context: #291 Co-authored-by: Steve Loeppky <stvn@loeppky.com>
as suggested in #289 (comment) + #289 (comment)
7e143b4
to
f65babb
Compare
23f7cc2
to
b29f325
Compare
dd0cbba
to
b0d6b2c
Compare
Thank you all for the feedback 🙏 ps. @ajnavarro let's test drive the process for a few weeks first, and use PR drafts for "useful things that we are unsure about". When we have a good IPFS example of something similar to BEP44, then we will make a decision how to handle it, and will document the policy in README. (I am open to keeping them around, we just need a real example first). I am merging this as there are no unresolved threads, |
@lidel sounds good to me. |
Closes #286
This PR includes:
This PR does not include repo cleanup – that will be a separate PR (to avoid noise here).
Feedback will be extremely valuable: