-
Notifications
You must be signed in to change notification settings - Fork 430
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
Key terminology guide and which functionality is supported in which contexts #678
Comments
This comment has been minimized.
This comment has been minimized.
@lidel : it would be good to get you take on what is missing in https://docs.ipfs.io/project/implementation-status/ that would have helped your discussions. I assume one is that "JS" isn't specific enough to the context where the JS is running (browser vs. NodeJS). |
Thanks for the issue @BigLep; there are a few things to unpack and discuss here before making an actionable task-list.
This is a fair point, especially when it comes to the difference between Go-IPFS and JS-IPFS. One assumption folks often make is that Go-IPFS and JS-IPFS have feature parity, but that is sadly not the case. This makes things tricky for things like reference docs where features exist in one version but not the other.
A Go/system developer would likely use the Go-IPFS implementation, no? We would expect a web developer to know that Node.js apps contain features that browser-based apps don't, and the difference between web workers and service workers. If the reader doesn't know these things, documentation already exists on other websites. I hope I'm not missing your point here. If I am, please correct me! It'd be really nice to have all the knowledge every reader needs in one handy place, but that just isn't feasible.
Can you link to other generic words we use? In defense of node: we try to use Node.js when referring to the javascript framework, and IPFS node
Can you link to any examples of where we're using one term, but we could be using a WebRTC term? I'm not aware of WebRTC terms. |
I think the main issue with https://docs.ipfs.io/project/implementation-status/ is that is.. way too detailed without any onramp/context :) (smaller issue is that it was not updated and tables are partially invalid) Perhaps we could preface the page with an infographic or at least a table with high-level differences?
You would think that, but in my experience web developers have no need to think about "available transports" because its never in problem space during regular webdev. HTTP is water. Devs are fish. Can't expect them to think about rainbows in the sky :-) I think there is a path towards improving this. What if we deduplicate content from https://github.com/ipfs/js-ipfs/blob/master/docs/BROWSERS.md and ensure its easy to find/discover on docs.ipfs.io? Right now the best docs/explainer for this are outside of docs.ipfs.io, which is unfortunate.
That usually works, but sometimes even "IPFS node" is not precise enough.
I believe this is about things like STUN, ICE, TURN. My idea is to add both "generic" and "ours" names to https://docs.ipfs.io/concepts/glossary/ and cross-link them. Would that make sense? (I can PR if ok) |
@lidel : thanks for filling in. @johnnymatthews : I think responses to your questions have been provided. I feel like this issue hasn't come in cleanly packaged so it can be easily actioned on. If you'd like us to come back with a distilled list of specifics (e.g., update page X with the content from Y) or submit some starter PR's let us know. Thanks a lot - much appreciated. |
That's a fair point. I guess that web-3 devs are gonna have to re-learn some stuff about the internet.
This is already on my radar in the Single-source documentation project
This is super useful. I hadn't considered all those uses of node. We could definitely put those terms into the Glossary at the very least. I've created #683 to tackle this. If anyone gets a chance to close that issue, I'd really appreciate it.
It looks like network traversal is becoming a bigger and bigger thing within the web-3 space. It's not something I have a huge amount knowledge on, but I get the impression that I'm gonna have to start reading up on it 😄. Using generic names seems like a fairly nuanced issue. Would either of you two (@lidel, @BigLep) be able to create a stand-alone issue explaining why and where we should use terms like STUN, ICE, TURN? You don't have to assign yourself to the issue, but if you could give me a jumping off point that'd be appreicated.
Yeah I agree! You've both helped me understand what needs to be done here. With the creation of the two new issues (#683 and the one about IETF standards), we can probably close this issue. Unless either have you have more to add? |
Thanks for starting this discussion. It is not only the issue with go / js devs seeing what works where, but I'd argue that even PL devs across language boundaries don't always have an accurate picture of what works where. I think it would be amazing if we had a place that gives high level overview and a way to zoom in to understand the details. E.g. we have IPFS pubsub implemented across all supported environments, but as it turns out they do not interop for various reasons. That is to say things are quite a bit more complex than boolean 💚/💔. I think if we had a good visibility into what current state of implementations and interop is we could make more informed decisions on what to prioritize to get the highest value for the effort. I'd happily support any efforts to do so to my best abilities. In my project proposals I've intentionally tried to move from js/go to nodejs/go/web naming because platform limitations in web are wildly different than in node and bundling them together just muddies the waters both internally and externally. (I should also take responsibility for introducing ambiguity when referring to nodejs as node) |
@johnnymatthews sgtm, we can close this one and continue in #685 and #683, but I feel you may need to open additional one for cleaning up https://docs.ipfs.io/project/implementation-status, namely:
|
Nice. I've just made #697. Closing this one. |
Observed problem
When having conversations internal and external to PL about IPFS, we sometimes spend ~15 minutes getting everyone on the same page about terminology and what functionality is supported in which context.
Cause 1: Unfamiliarity with what is supported where
IPFS as a protocol brings together varying developer audiences (e.g., systems/go developers using go-ipfs, web/js developers using js-ipfs) talking about different contexts (go daemon, JS web browser, JS in NodeJS). We have observed that oftentimes these different parties don't know about important nuances about these different contexts in general or about the differences in the ipfs implementations.
For example, for a Go/system developer, they may not know:
In addition, there is functionality in go-ipfs that just hasn't been implemented in js-ipfs.
Documenting in some way what functionality works in which context will help when making/evaluating proposals. I imagine there's a good way to do this visually, but even just capturing the facts in text form will help.
Cause 2: ambiguous language
Conversations are also hampered because of a lack of precision. Examples include:
Potential End Results
Putting this all together makes me think we should have a "having conversations about IPFS primer" that covers things like:
This will help ensure everyone comes into the discussion with a base-level understanding.
Related
I'm filing this issue after hearing observations made by @lidel. He should come through and make any edits/changes/improvements.
The text was updated successfully, but these errors were encountered: