Skip to content
This repository was archived by the owner on Jun 2, 2020. It is now read-only.
This repository was archived by the owner on Jun 2, 2020. It is now read-only.

Provide clear, reliable, up-to-date roadmaps and information about statuses of features #53

Closed
@Mr0grog

Description

@Mr0grog

Goal: Help developers understand the status of concepts/technologies/approaches in IPFS. Let them know which things they should be using, what's happening, what's moving forward, what's a placholder for future work, etc. -- less emphasis on "is it done yet?", more emphasis on what you should use in which ways going forward.

The most consistent (and insistent) issue I heard from folks developing or attempting to develop software on top of IPFS was that they often can’t figure the status of various ideas, technologies, or approaches used (or going to be used) within the IPFS ecosystem. They are worried they shouldn’t be building on top of a particular API or protocol because it’s getting replaced or that they should be using it in a particular way (which way, they don't know) in order to best prepare for upcoming changes. Should they just build now and not worry about it, or hold off for something that's coming soon?

It's worth noting that they all said this at the same time as saying that better API documentation would be nice, but they've managed to figure a lot out by reading source code and puzzling around things. But understanding the direction of various parts of IPFS is something much more important that they can’t figure out that way.

Getting a handle on implementation status (as discussed in #35) is only a small part of this issue. The questions here are more like:

  • What’s the deal and status with IPNS being slow? Should I even use it now? I know there’s some discussion about re-implementing it on top of libp2p pubsub — when is that happening? (IS that really happening?) How should I make use of things differently (or not) so my code functions optimally in future where that's how IPNS works?

  • What's the deal with IPNS vs. IPRS? Is the spec final or still subject to change? The IPRS spec was written a year ago, but it doesn’t seem like things are using it? Is it still a thing or is it left behind? When will it be a concrete thing?

  • What’s the deal with IPLD? Is it being used for the all (or any and which?) of the commands in go-ipfs or js-ipfs? If no, when? What’s solid about it and what’s not, and when (specifically or even just roughly) do we think it will be all solid? Should I be using it today?

  • Similar questions for CIDs, for files vs. objects vs. dag, pretty much everything in ipfs/specs and ipld/specs. (Less so for libp2p/specs, which folks have said seems largely more stable and clear, and multiformats/specs, which, even though that repo is really uninformative, Multiformats’ other constituent are quite clear.)

  • Hypothetical confused developer: "I'm so confused about these things that I don't know which one I should be using. Which ones do the maintainers really want me to use? Which ones do the maintainers specifically discourage using? Which things should I watch for in the coming months, etc"

Some Approaches

So what are the right approaches to solving this issue and how do we manage that work?

  • A clear and updated Roadmap that focuses on these sorts of technology/usage issues rather than implementation, like the Roadmap to 1.0.0 does.

  • Clear indicators in every spec and major repo (maybe on each major API section?) that accurately cover the current, up-to-date status. Many have no status indicators, others feel inaccurate — it might say something is a solid draft, but in reality, there are big discussions in the issues for it that indicate it’s not so solid at all, e.g. IPLD. These should be updated if major discussion on revising the spec begins somwhere (and, ideally, point to that discussion).

  • What else?

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic/design-contentContent design, writing, information architecture

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions