Description
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:
- What you can do in a browser is different than what you can do with NodeJS
- Furthermore, what you can do in a browser depends on the context (main thread vs. WebWorker vs. ServiceWorker)
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:
- Using the overly generic word "node". It's easy for this to be confused with "NodeJS" or an "ipfs node".
- We defined our own terms for things in WebRTC for example that already have a publicly agreed-upon and accepted name. We spend time explaining the IPFS terminology when we could short-circuit the whole conversation by using the "official" WebRTC term.
- For items in this bucket, I think we should add our term and the public term to https://docs.ipfs.io/concepts/glossary/.
Potential End Results
Putting this all together makes me think we should have a "having conversations about IPFS primer" that covers things like:
- Be aware that IPFS functionality varies across contexts (linking/citing information related to Cause Update README.md #1 above)
- Avoid these unqualified/generic terms (e.g., "node")
- Links to the glossary with additional commonly confused terms.
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.