Closed Mr0grog closed 6 years ago
This is largely done. Research notes and output (than can be made public) can be browsed at:
This also includes:
An inventory of discuss.ipfs.io topics in Google sheets: https://docs.google.com/spreadsheets/d/1Z0Wy_jSS-42gXP9n1MA9JifZ7PDvNEVbpbfTFTVlz8M/edit
This is a list of all topics on https://discuss.ipfs.io as of 2018-03-05. All the columns from “custom tags” onwards are tags I’ve added to help get a sense of what kinds of topics are convered. The “custom tags” tab lists each tag and the number of topics that use it. (“All tags” is the same, but includes the topic author’s tags as well.) I’ve only gotten through about half the topics, but focused on ones with the most discussion. @pmthomps has been a great help in this effort (thanks!!). Here's a quick histogram of those tags:
Custom Tag | Count | |
---|---|---|
troubleshooting | 66 | ////////////////////////////////////////////////////////////////// |
basics | 46 | ////////////////////////////////////////////// |
ipns | 32 | //////////////////////////////// |
use-cases | 31 | /////////////////////////////// |
explanation | 22 | ////////////////////// |
api | 20 | //////////////////// |
features | 20 | //////////////////// |
announcement | 20 | //////////////////// |
go-ipfs | 18 | ////////////////// |
tools | 17 | ///////////////// |
cli | 17 | ///////////////// |
js-ipfs | 16 | //////////////// |
status | 15 | /////////////// |
concepts | 15 | /////////////// |
privacy | 12 | //////////// |
networking | 11 | /////////// |
dynamic-data | 11 | /////////// |
ideas | 11 | /////////// |
pinning | 11 | /////////// |
performance | 10 | ////////// |
filecoin | 10 | ////////// |
security | 9 | ///////// |
files | 9 | ///////// |
community | 8 | //////// |
uploading | 8 | //////// |
cluster | 8 | //////// |
bug | 8 | //////// |
gateway | 7 | /////// |
windows | 7 | /////// |
private-networks | 7 | /////// |
pubsub | 7 | /////// |
An inventory of all the repos on GitHub: https://docs.google.com/spreadsheets/d/1IDVAGfniyHCJLIxLc3y7K7YTOFGCtgwTVCZEojtNLlw
This has one tab for each org (ipfs, ipld, libp2p, multiformats, ipfs-shipyard), but I was only able to fully get through ipfs
:
More notes to come here momentarily.
Pulling in some bits from https://gateway.ipfs.io/ipns/ipfs-docs-research.robbrackett.com/html/General-Notes.html:
Where do I start? What’s what?
Where is the spec? What’s the current canonical version of it?
What’s the status of _____? (Piece of software, a spec, a concept [e.g. IPNS vs. IPRS], a document, a repo -- clear indicators and roadmaps are often missing. See above about spec!)
How can I help the network? Is there data I can store?
I followed “getting started” guide, what do I do now?
How do I know the progress or completion of a pin or a get?
I can't see my file on some machine, but I can in the Gateway (networking issues)
What ports do I need to open/what firewall settings do I need? How do I do that? (Related to the above)
What happens when I close my laptop (that the daemon is running on) for the day?
How do I share keys?
How do I change a file?
Why is the IPFS hash (CID) not just the hash of the file?
How do I choose JS vs. Go, how are they different?
Can I limit what I store or share?
Can I share data with only certain other people?
The conecpt of “uploading” content:
How do I remove a file?
How do I host more than one thing with IPNS?
How do I modify IPNS from more than one computer/node?
Can I keep my files (or their contents) secret? What's the story around privacy?
What is…
Can other people see all my files? Can I see all theirs?
Can I pin a file later? i.e. can I add a pin to a queue, but not block while it is getting?
How do I know which pins are which?
[How] can I do dynamic data?
Where are some good examples of things built with IPFS?
Who's using IPFS?
Are there legal concerns?
What's the difference between http://localhost:8080/ipfs/<cid>
and https://gateway.ipfs.io/ipfs/<cid>
? Why do I care?
There are enough new concepts and IPFS is different enough from general server/client systems that we should probably have some kind of “concepts dictionary.” We don’t need to define all these terms there (e.g. CBOR is a pretty standard, thing though it may be obscure to many people), but we do need to be careful to always provide some reference for these terms wherever we use them, whether a link (e.g. http://cbor.io), a quick description (e.g. “CBOR (a binary version of JSON),” or something else.
We don’t need to speak too actively toward these, but these are the sorts of things people are actively comparing IPFS to. We should have ready responses or some kind of “how does it compare to…” doc — there’s no reason to come up with a unique description of the differences/pros/cons every time someone asks.
Licensing: for the most part, this is good, but:
Some repos are unlicensed or only refer to their license by name (e.g. “MIT”) without the actual license text or a link in the readme or source, which is effectively unlicensed. These repos are not actually open-source in any legal sense.
Discussion/organizing repos have inconsistent licensing. It seems like, at some point, there was a push to make them Creative Commons-licensed (which seems more reasonable for discussion than MIT), but there are quite a few that are MIT licensed instead.
Organization:
There are lots of repos, but a huge number of them are deprecated. Not all the deprecated ones are marked as such, which adds more confusion. Archiving these repos can help reduce noise (they don’t show up in most views), but at least making sure they are consistently marked as deprecated (and in a consistent way) can at least reduce confusion.
Empty READMEs and repo description lines: both of these are important cues for people to understand what a repo is and what it’s for, but are often empty. Additionally, some READMEs are empty in value even though they appear structured and have text — it looks like there was a push to validate READMEs with standard-readme
at some point, and people reacted by filling in the required structure with “TODO” or placeholder content, which defeats the point of having the check and makes it easy for the READMEs to continue to fail in their purpose.
Naming conventions are often inconsistent. Sometimes there’s even more than one attempt at a convention for a given type of thing (e.g. *-ds-*
vs. *-store-*
for datastore implementations). This is a tough one to fix (renaming a project is all kinds of messy).
Contributing:
Contribution Instructions: There are two standard styles of listing contribution instructions:
standard-readme
spec: https://github.com/ipfs/ipfs-cluster#contributeContributors: most (but not all) js-*
repos list contributors in package.json
. NO other projects list contributors anywhere, but instead rely on Git/GitHub metadata. (Worth noting: this misses out on contributions that do not show up as Git commits)
See also https://docs.google.com/spreadsheets/d/1IDVAGfniyHCJLIxLc3y7K7YTOFGCtgwTVCZEojtNLlw
And my last bit here, before moving on to concrete actions (will be a separate issue)…
These use cases focus on what people perceive they are using IPFS for, rather than how they are using it. There are a lot of cross-cutting concerns in this view, but I think it’s important to think from both perspectives.
File Storage
Websites -------> Complicated Webapps
ipfs://<cid>
???Local/native Apps
Data Modeling/Distributed Database
Working around censorship
Another formulation of the above focuses on how people are using IPFS (see note at top):
Files, Sharing, Communication (Using IPFS as app/service via CLI, browser plugin, or some other OS integration/UI)
Distributed [Data] Application Development
Deep Protocol Development and Integration
See #58 for plan of action based on this research.
Updated research docs to add notes from an interview with Geoff Hayes at Compound.Finance.
Living link: https://gateway.ipfs.io/ipns/ipfs-docs-research.robbrackett.com/html/ This version: https://gateway.ipfs.io/ipfs/QmV5QdWAVbYCpcEspWu4tiCtVfdL9SESidLmnXLEJ82gdL/html/
Updated research docs to add notes from an interview with Eric Tang at Livepeer.
Living link: https://ipfs.io/ipns/ipfs-docs-research.robbrackett.com/html/ Permalink: https://ipfs.io/ipfs/QmNj68gTzAs9QbfMKzMGurXP2WCmA6GTcKuUkWm4kBV1Qn/html/
I’m closing this issue — it’s not actionable anymore, and it will still be linked and findable from the README in #114.
We need to do some honest research to create a cohesive picture of things like:
…which should give us a clearer, more concrete picture of what problems we need to solve.