Code Monkey home page Code Monkey logo

ipfs-docs's Introduction

IPFS is an open system to manage data without a central server


Made by icon. Project icon. Build status icon. PRs Welcome


Welcome to the official IPFS documentation. The Interplanetary File System (IPFS) is a distributed, peer-to-peer network for storing and accessing files, websites, applications, and data. Protocol Labs is the primary maintainer of the IPFS documentation and will review all issues and pull requests created in this repository.

If you'd just like to read the IPFS documentation, we recommend the website version.

Project set up

Run locally

To build the site locally, follow the steps below.

  1. Clone this repository:

    git clone https://github.com/ipfs/ipfs-docs.git
  2. Move into the ipfs-docs folder:

    cd ipfs-docs
  3. Install the NPM dependencies:

    npm install
  4. Boot up the application in dev mode:

    npm start
  5. Open localhost:8080 in your browser.

  6. Close the local server with CTRL + c.

  7. To restart the local server, run npm start from within the ipfs-docs folder.

Troubleshooting

If you're having trouble setting up the site locally, check this section for solutions to common issues.

Digital envelope routines initialization error

The following error message may display when using Node.js version 18.0.0 when attempting to deploy this project for the first time:

opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'

To solve this error, perform the following steps:

  1. Open a terminal.

  2. Navigate into the ipfs-docs folder:

    cd ipfs-docs
  3. Run the following command:

     export NODE_OPTIONS=--openssl-legacy-provider
  4. Run npm start.

    npm start

You can return to the Project set-up section above and continue with the steps. You can also check this issue in the Webpack GitHub repository for more information about this error.

Contribute to documentation

We would love ❀️ your help to improve existing items or make new ones even better! We also have bounties available!

Issues

If you find something wrong within this repository, please raise an issue here β†’. Unless the issue is urgent, updates will be batch-merged into main on Tuesdays or Thursdays.

Bounties

You can earn the undying love of the IPFS community, and get rewarded by closing an issue containing the bounty tag. Submissions must be production-ready and meet all the specifications listed on the issue page. To get started, check out the current list of open bounties β†’.

If you are attempting to close an issue, great! Thanks for the help! Please leave a comment within the issue requesting to be assigned to that issue before submitting a pull request. This minimizes the chance of multiple contributors duplicating work by submitting pull requests for the same issue. If you submit a pull request to an issue without first being assigned to it, your pull request may not be accepted.

Suggestions

Everyone has an opinion when it comes to documentation, and that's a good thing! Having folks from different backgrounds add to a discussion empowers everyone within that discussion, so if you've got something to add or would like to bring up a topic for discussion about the documentation, please do so! Create an issue using the kind/question tag.

Pull requests welcome

Feel free to submit pull requests with any changes you'd like to see. We will review and approve, or leave change requests, as soon as we are able.

Style and configuration guide

A writing style and template guide is in the process of being written that contributors can use as a guideline.

Static-site generator

The IPFS documentation site uses the VuePress static website generator to convert the Markdown guides into a documentation website. All the documentation is written in Markdown; follow the VuePress Markdown documentation for information on how to write markdown files for VuePress.

Automated deployments

When opening a pull request, CI scripts will run against your feature branch to test your changes.

The CI/CD production workflow builds on the main branch and deploys the documentation site on fleek. The site reflects the latest commit on main.

Primary maintainers

  • @2color: Developer relations & technical writing(ecosystem)

License

All software code is copyright (c) Protocol Labs, Inc. under the MIT license. Other written documentation and content are copyright (c) Protocol Labs, Inc. under the Creative Commons Attribution-Share-Alike License.

ipfs-docs's People

Contributors

2color avatar alexmmueller avatar annamarie2019 avatar bertrandfalguiere avatar biglep avatar cwaring avatar dependabot-preview[bot] avatar dependabot[bot] avatar elpaisano avatar ericlscace avatar filecorgi avatar galargh avatar hacdias avatar hsanjuan avatar hugomrdias avatar jay-dee7 avatar jessicaschilling avatar johnnymatthews avatar johnnywu-namebase avatar jorropo avatar laurentsenta avatar lidel avatar mishmosh avatar runiteore avatar salmad3 avatar terichadbourne avatar thediscordian avatar tmomoreau avatar yusefnapora avatar yyd106 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ipfs-docs's Issues

Recommend installing IPFS Desktop rather than Go-IPFS directly.

IPFS Desktop now installs the ipfs command line tool, and has an auto-update mechanism, and has installers for alot of the platforms: https://github.com/ipfs-shipyard/ipfs-desktop#install

We should encourage folks to install desktop as the default, and then have an "setting up a server?" link... which encourages folk to install ipfs-cluster rather than go-ipfs, as we have ansible and docker scripts for cluster, and it is optimised for running on a server out of the box, and a cluster of 1 puts you in a good position for scaling your things later.

See issue ipfs-inactive/docs#110 for another potentially good install instruction explainer: how much disk space do different instantiations of IPFS take?

Additionally, let's discuss whether/how to include pointers for "non-official" ways of installing IPFS. This arises from a few stagnant (and, as a result of this issue, closed) PRs in the website repo, including:

Automating config/API/CLI documentation

Note: This issue was opened as a result of the November 2019 close-reading audit captured in ipfs-inactive/docs#326.

This issue is one of the prioritized recommendations in the Q1 2020 IPFS Ecosystem Audit for execution in Q2/Q3 2020. Tagging it with $auditrecommendation means it's searchable! See all tagged issues in this repo.

In brief

Manually editing documentation that can be automated is an excellent way to create un-usable API docs and undocumented endpoints. Things get missed, misrepresented, and misunderstood. If we can find a way to automate the docs for all our APIs we can vastly improve the lives of IPFS devs and users.

What's needed

Find open-source, future-proof ways to (:anger: – biggest pain, easy to automate):

  1. πŸ’’ Automate the CLI docs (https://docs.ipfs.io/reference/cli/)
  2. πŸ’’ Figure out what best to do about HTTP API documentation (https://docs.ipfs.io/reference/http/api/)
  3. πŸ’’ Automate the go-ipfs config docs. (https://docs.ipfs.io/how-to/configure-node/)
    • either copy https://github.com/ipfs/go-ipfs/blob/master/docs/config.md or link to it
    • update: we talked about this during triage and decided to remove the copy of config.md and link to markdown with config docs in go-ipfs and js-ipfs repos instead (they diverged over time, no "universal" one anymore)
  4. Automate the go-ipfs API docs. (https://docs.ipfs.io/reference/go/api)
  5. Automate the js-ipfs API docs. (https://docs.ipfs.io/reference/js/api/ points at .md docs in js-ipfs repo)
  6. Include those documentation automation tools into each project's build process, so every new version comes with a new set of docs.
  7. Automatically pull in those docs into the primary IPFS docs repo and serve everything from one place using IPFS.

Deliverable

A report and roadmap for improving/automating API/CLI docs, including a platform decision (based on competitive analysis and best-in-breed research) and step-by-step timeline for implementation.

Additional notes/requirements

Note: These have been consolidated from a variety of legacy issues (#69, ipfs-inactive/docs#225, ipfs-inactive/docs#227, ipfs-inactive/docs#339, ipfs-inactive/docs#340) in order to reduce inefficiency.

  • Solution must be open source.
  • Solution must be hosted on IPFS (serverless). Per @Stebalien: "The rust docs implement client-side search that works pretty well."
  • Currently, CLI command reference pages are generated from their respective repos and turned into .md files, but this process must (?) be manually triggered; what can be automated in this process? (Per @Stebalien: "'I'd like to be able to run make in this repo and regenerate all documentation, including the CLI documentation.)
  • We don't have any useful approach to versioning right now. Our solution should. (Per @Stebalien: "it would also be great if we could update a single version number somewhere to update to a new go/js release.")
  • HTTP API docs are specific to the go-ipfs implementation and fail to include anything unique to js-ipfs β€” and they don't explicitly note this.
  • HTTP API docs are also "way too thin. All the in-depth docs in the Go code (where the HTTP docs are generated) can’t be used because they are very specific to the CLI and would be confusing for HTTP." Maintaining HTTP API docs separately (rather than generating from go-ipfs) would create a tool specific to the HTTPS use case, but will require a lot more effort to update, and requires more coordination between the Go and JS teams. (There's a longer discussion of this issue here that's worth reading when it's time to dig into this.)
  • Folks are used to using Ctrl+F to find information in the existing (inefficient, large) list presentation we have now. Unless we give them something substantially better that's worth retraining their habits, we should preserve the usefulness of Ctrl+F.
  • Every API resource/command section header should be a linkable anchor for purposes of easy sharing on forums, etc (per @lanzafame).
  • Let's do our best from a UI perspective to display only the relevant information at the right time (to avoid information overload) while not breaking navigability, discoverability and search in the process.

Explain the downgrade procedure for Go-IPFS.

What's the subject of the item you're requesting?

How can users safely downgrade go-ipfs (including reverting migrations)

What's the content of the item you're requesting?

Port and update ipfs/fs-repo-migrations#10

What will the user know how to do after going through this item?

Downgrading and reverting repo migrations

Would you be interested in helping create this item?

No. It should be easy enough for someone to pick up and test. Also, low prio.

Explain how versioning can work in IPFS.

There’s a fair amount of confusion about whether and how IPFS tracks version histories for your files, partially spurred by some confusing language at https://ipfs.io (there will be another issue for fixing that) β€” while IPFS can store every version of a file (because they’ll have different CIDs) and conceptualize files as versions of each other by virtue of sharing blocks, it doesn’t have any native system for describing the version history of a file by linking together a sequence of CIDs that have represented the file over time.

We need a guide that clearly explains the above, then discusses approaches to creating and storing version histories on IPFS:

  • Keeping a simple list of CIDs + a current CID, like the IPFS website repo does (see version listing here and update code here)
  • Custom IPLD formats
  • Using sequence numbers or hash links in custom IPRS records
  • Combinations of the above
  • etc.

Check this repo for incorrect spelling automatically.

To keep writing across the docs consistent, we're going to implement an automated spell-checker that checks markdown documents for errors. The spellchecker must let us add our own items into the dictionary. Unfortunately, Filecoin isn't a well-defined word. Yet.

Tasks

  • Investigate markdown-it-spellcheck as a solution.
  • Add a spellchecker into package.json.
  • Define and add words we need to add to the dictionary (IPFS, Filecoin, FIL, etc).

Expand MFS section of "File systems and IPFS" page

This issue has a bounty!

Successfully closing this issue by producing a production-ready piece of documentation can earn you not only the undying love of the IPFS community β€” it can net you a financial reward. See the current list of bounty issues and their values here.

The need in brief

We need to expand and improve upon the existing File systems and IPFS page; information is incomplete and some is out of date.

At the IPFS developer summit in Berlin in July 2018, we had poster-making sessions where people explored various IPFS concepts. Please examine the poster (contacts for its creators can be provided if necessary) and include its information both in the body text of the revised doc, and in a graphic suitable for publishing on the IPFS docs beta site.

mutable_file_system

Additionally, please examine the more recent material that has been developed on related topics:

Please both link out to these artifacts in a "further information" section at the end of the doc, as well as incorporate summary/high-level concepts from the artifacts within the doc itself.

Finally, please examine the existing content in the original doc and update any content that may be inconsistent, unclear, or out of date. Please note that the final document should still be organized around the two main areas of MFS and UnixFS.

Deliverable

An expansion of the original concept doc that fully integrates the considerations outlined above. As a whole, this revised concept doc should answer the following, supplemented whenever possible by diagrams, videos and/or code examples:

  • What is this?
  • How does it relate to the rest of IPFS?
  • What are some generic use cases for this β€” how might it meet a need in someone's project/goal?
  • How can (or should?) you use it? (Note: sometimes the answer is that you should understand it, but not necessarily use it based on your use case or the current state of the tech.)
  • Where do you go to learn more?
  • What is the current state of this concept or technology?

Content should take the form of a Markdown document, supplemented by diagrams as embedded images. File locations should be as follows:

Guidelines

  • Please use the IPFS Docs Contributor Guidelines as your north star β€” adherence to these guidelines are crucial when it comes to awarding potential bounty!
  • Also, please keep in mind our core user personae. If a piece of content serves one or more personae in particular, make sure it checks out with that persona's attributes.

Enable users to search the docs when viewing the site offline.

The new Agolia search is awesome and really snappy. However, one of the key benefits of serving a website over IPFS is that it can work offline (I've actually used this to download our websites/tools for conferences when I don't trust the local network to work). It would be really awesome if we could find a way to do this offline.

This issue is hardly critical given that the new docs site already works quite well offline and search is more of a nice to have than a necessity. I'd just like it to be on the radar of things that would be nice to have.

One option would be to support both: keep the online search and gracefully degrade to an offline (less featured) version.

Migrate Go-IPFS documentation into this repository.

  • Integrate go-ipfs repo docs content into VuePress site
  • Delete GitHub pages' content, but add pointers to new site for those who may have GitHub material bookmarked
  • Discuss best way to integrate go-ipfs docs-related open issues into docs team workflow overall (start with adding the go-ipfs repo to the docs WG's ZenHub board and sort issues there accordingly)

Explain what immutability is and why it's important to IPFS.

The need: A concept doc on immutability in general (i.e. why it's important), as well as a high-level look at how it functions in an IPFS-specific context (why it's important to IPFS, and also how to accommodate for it in situations like browser addressing).

It's likely to pull heavily from IPFS Camp Core Course A: https://github.com/ipfs/camp/tree/master/CORE_AND_ELECTIVE_COURSES/CORE_COURSE_A

Final guide should live here, for inclusion on the IPFS docs 2.0:
https://github.com/ipfs/ipfs-docs-v2/blob/master/docs/concepts/immutability.md

Automatically test all code examples in this repository.

We have the following line in our release process checklist:

Ensure that all the examples we have produced for go-ipfs run without problems

This is simply impossible to achieve manually.


We should have doctests like in rust (https://doc.rust-lang.org/rustdoc/documentation-tests.html).

  1. All examples in documentation should be clearly marked.
  2. Each piece of documentation should include machine readable instructions for testing the documentation (e.g., the environment the document should be tested in). Personally, I'm thinking yaml top matter.
  3. We need something that actually runs these tests.

For example, every document could start with:

---
....
test: testing tool
---

We could then have a testing tool iterate over every markdown file, running the appropriate testing tool against each one.

Explain how IPNS relates to IPFS, and when to use DNSLink instead.

From https://github.com/ipfs/docs/blob/master/content/guides/concepts/ipns.md
(VuePress beta equivalent: https://github.com/ipfs/ipfs-docs-v2/blob/master/docs/concepts/ipns.md)

You can also use DNSLink (which is currently much faster than IPNS and also uses more readable names).

This doesn't give a great overview of how DNSLink relates to IPNS: reading this, you would think that it's a better alternative to IPNS. If you instead arrived at the IPFS for Websites page (beta equivalent here) you'd think that IPNS is a solution for a mutable reference to a site, and DNSLink is a solution for a human-readable reference, and the two combined are the 'ideal' setup for a personal website on IPFS.

Check this repo for broken links automatically.

This issue is part of the Docs automation project and was taken from ipfs-inactive/docs#438.

To keep writing across the docs project consistent, we're going to implement an automated broken-link-checker that checks markdown documents for dead links, images, and assets. This will likely be done before content can be pushed into master using CircleCI or something like that.

Explain how to troubleshoot NAT problems.

This issue relates to ipfs/kubo#6952.

What's the subject of the item you're requesting?
NAT troubleshooting guide.

What's the content of the item you're requesting?
Many people face issues when attempting to connect their node to the IPFS network. One reason is that their node is sat behind network address translation (NAT) on their router.

What will the user know how to do after going through this item?
The steps required to open their router to allow their node to connect to the IPFS network. They'll also have a very basic understanding of what the NAT is and what problems it solves.

Create a map of how the docs should look, with the "Single-source documentation" project in mind.

Note: This issue was opened as a result of the November 2019 close-reading audit captured in ipfs-inactive/docs#326.

As discussed in ipfs-inactive/docs#326 under Content Guidelines, a next-generation hierarchy was proposed for the overall navigation IA of the docs site:

Home
β”œβ”€β”€β”€β”€β”€β”€ Getting Started
 Quick-win is the name of the game here. We want the reader to be able to go through this section in less than an hour and come out the other end with a solid idea of what IPFS is, how to use it, and why it's important.
β”œβ”€β”€β”€β”€β”€β”€ Developer Concepts
 Explain difficult or new things that IPFS addresses. This could be things like how it's different than a regular database, or how Filecoin integrates into IPFS.
β”œβ”€β”€β”€β”€β”€β”€ Community
 Guides, links, and references to documentation, tools, and services create and maintained by the IPFS community. There should also be support links in here that are directed to places like StackOverflow and the IPFS forum.
β”œβ”€β”€β”€β”€β”€β”€ Guides
 End to end tutorials that walk a user through achieving a particular goal. That can be as simple as setting up a node, uploading a single file, uploading a whole site, or changing a website's name server so that it points to IPFS.
β”œβ”€β”€β”€β”€β”€β”€ Tools
 Things you can use to interact with IPFS. These things might not necessarily be 100% useful or necessary all the time, but they're available all the same.
└────── APIs
 IPFS has a bunch of different APIs available to developers for various different implementations. Each API needs a getting started guide, API references, and an examples section.

However, implementing this new IA will require significant rewriting of existing content, as well as creating new documents and articles to fill in the holes. A more in-depth map should be created before we start writing and editing content.

Let's use this issue as a holding pen for discussing the timeline and necessary steps for implementing a next-gen navigation IA, starting with generating/improving content labeled for new content or content enhancement.

Explain what Multi-addresses are, and how they relate to IPFS.

At the Berlin developer summit, we decided multiaddresses or peer addresses were important to write a concept doc about.

We did not have time to write a rough draft, so we need to create a concept doc from scratch. Concept docs are concise, high-level descriptions of various core concepts in IPFS. They should strive to answer:

  1. What is this?
  2. How does it relate to the rest of IPFS?
  3. How can (or should?) you use it? (Note: sometimes the answer is that you should understand it, but not use it. Bitswap is probably a good example.)
  4. Where do you go to learn more?
  5. What is the current state of affairs?

Explain why IPFS needs relative URLs in web content.

What's the subject of the item you're requesting?
I don't want to solutionize the title. Should be about relative vs absolute urls.

Example of where it's a problem for web developers trying IPFS: https://macwright.org/2019/06/08/ipfs-again.html

What's the content of the item you're requesting?

  1. the difference between absolute and relative urls
  2. how absolute urls break and/or pop you out of the dweb
  3. examples of how relative urls work across different ipfs gateways, to illustrate why it's important
  4. links to tools for relative-izing urls in static content, links to framework helpers that support ipfs by doing this nicely, etc

What will the user know how to do after going through this item?

  • what relative urls are
  • why relative urls are important
  • why full urls are bad for internal links if you want your content to be portable
  • where to find tools for your cms, framework etc

Would you be interested in helping create this item?

no, but seems bounty-able

Is there any other feedback you'd like to share about IPFS docs?

"Three keys to success: read, read, read." - Vladimir Lenin

Automate repetitive tasks within this repo.

Automatically check the documentation for broken links, broken assets, spelling mistakes, and grammatical issues. This issue has evolved from ipfs-inactive/docs#438.

A substantial amount of time is spent checking for spelling and mistakes when writing documentation. Once the docs are written, links and assets need to be tested to make sure they're not broken. While the sidebar navigation in VuePress handles broken-links very well, the body content of the docs doesn't have any process to check links.

These three things are automatable. The grammar checker will likely require a substantial amount of work; however since there doesn't seem to be any decent automation too already to deal with that.

Explain what "Swarms" are in the "Observe peers" section.

We should have a short concept doc about what a β€œswarm” is in IPFS.

Concept docs are concise, high-level descriptions of various core concepts in IPFS. They should strive to answer:

  1. What is this?
  2. How does it relate to the rest of IPFS?
  3. How can (or should?) you use it? (Note: sometimes the answer is that you should understand it, but not use it. Bitswap is probably a good example.)
  4. Where do you go to learn more?
  5. What is the current state of affairs?

Filter users to install what they need by identifying their use-case.

This issue is one of the prioritized recommendations in the Q1 2020 IPFS Ecosystem Audit for execution in Q2/Q3 2020. Tagging it with $auditrecommendation means it's searchable! See all tagged issues in this repo.

URL of the page in question:
https://docs-beta.ipfs.io/install/

What's wrong with this page?

Clicking on "install IPFS" takes me to a page where the big Headers point to installing Companion, Desktop, Cluster and at the very bottom, actually, IPFS.

(there is a link at the top that I only saw when I was actually forced to read the thing in detail).

What would you like to have changed/amended/fixed in order to make things right?

Have an entry page with links (or a top-level index) that says "What do you want to do?" (h1) and lists:

  • Install the IPFS daemon (CLI application)
  • Install IPFS Desktop (Graphical interface)
  • Install the browser plugin, IPFS Companion (works best with IPFS Desktop or Daemon)
  • Develop applications using IPFS (Link to developer docs for Go/JS)
  • Host and share files at scale (Link to Cluster)

Upon clicking you can then explain the subtleties of that choice in their section/page.

I would remove the Dip your toes in decentralized waters as the top-level main thing. This suggests companion is the right tool but I'm not sure if IPFS companion offers a good experience without installing go-ipfs in the first place. I am guessing it will rely on embedded js-ipfs which does not have dht and can only find content if the preloaders are working well, so it might be suboptimal to make it the top-level thing you need to install if you want to install IPFS (IMHO).

Check this repo for incorrect grammar automatically

This issue is part of the Docs automation project and was taken from ipfs-inactive/docs#438.

To keep writing across the docs project consistent, we're going to implement an automated grammar-checker that checks markdown documents for errors. This will likely be done before content can be pushed into master using CircleCI or something like that.

Expand IPNS concept doc

This issue has a bounty!

Successfully closing this issue by producing a production-ready piece of documentation can earn you not only the undying love of the IPFS community β€” it can net you a financial reward. See the current list of bounty issues and their values here.

The need in brief

We need to expand and improve upon the existing IPNS page in our docs; information is incomplete and some is out of date.

At the IPFS developer summit in Berlin in July 2018, we had poster-making sessions where people explored various IPFS concepts. Please examine the posters (contacts for their creators can be provided if necessary) and include its information both in the body text of the revised doc, and in a graphic suitable for publishing on the IPFS docs beta site.

ipns

ipns_publish-resolve

Additionally, please examine the more recent material that has been developed on related topics:

Please both link out to these artifacts in a "further information" section at the end of the doc, as well as incorporate summary/high-level concepts from the artifacts within the doc itself.

Finally, please examine the existing content in the original doc and update any content that may be inconsistent, unclear, or out of date.

Deliverable

An expansion of the original concept doc that fully integrates the considerations outlined above. As a whole, this revised concept doc should answer the following, supplemented whenever possible by diagrams, videos and/or code examples:

  • What is this?
  • How does it relate to the rest of IPFS?
  • What are some generic use cases for this β€” how might it meet a need in someone's project/goal?
  • How can (or should?) you use it? (Note: sometimes the answer is that you should understand it, but not necessarily use it based on your use case or the current state of the tech.)
  • Where do you go to learn more?
  • What is the current state of this concept or technology?

Content should take the form of a Markdown document, supplemented by diagrams as embedded images. File locations should be as follows:

Guidelines

  • Please use the IPFS Docs Contributor Guidelines as your north star β€” adherence to these guidelines are crucial when it comes to awarding potential bounty!
  • Also, please keep in mind our core user personae. If a piece of content serves one or more personae in particular, make sure it checks out with that persona's attributes.

Bring documentation from other IPFS repos into this repo so it can serve as the single-source of truth.

Host all IPFS documentation within one place.

A lot of individual IPFS projects have documentation all over the place, JS-IPFS, and Go-IPFS in particular. This makes it convenient for the devs to create docs but makes it tricky for users that need to access or find those docs in the first place.

Having all IPFS documentation in one place keeps things tidy, consistent, and makes the user experience much better. Instead of having to jump around GitHub repositories and blog posts, readers can head to docs.ipfs.io and get all the information they need.

Add in-page nav to right side of VuePress site.

Initial launch of docs beta doesn't include the in-page nav. Let's investigate whether we should bring it back in in order to ...

  • potentially shorten height of left-hand nav
  • improve chances of users always knowing what sections they are viewing
  • make things easier/prettier for mobile users (?)
  • ameliorate some of the pain in looking for API/CLI commands until we rework those docs (note, though, this doesn't really fix the problem; see discussion below)

Note: This issue was generated as a result of Nov 2019 internal user testing. Background can be found in the summary (source: ipfs-inactive/docs#315).

High-level explainer of Gateways, in an IPFS context.

This issue has a bounty!

Successfully closing this issue by producing a production-ready piece of documentation can earn you not only the undying love of the IPFS community β€” it can net you a financial reward. See the current list of bounty issues and their values here.

The need in brief

A high-level explainers of what gateways are in an IPFS context.

At the Berlin developer summit, we decided gateways were important to write a concept doc about. Here was the original draft:

Gateway

When you start an IPFS daemon, it creates two HTTP servers: the HTTP API that can be used to control the daemon (by pinning hashes, adding content, etc.) and the gateway, which is designed for web browsers to load content in IPFS as if they were loading it from a traditional web site.

When you request a URL like:

http://localhost:8080/ipfs/QMu.../index.html

the gateway does the equivalent of the CLI command:

ipfs cat /ipfs/Qmu.../index.html

…and returns the result to your browser. It also has a few extra conveniences like directory listings.

Protocol Labs operates a public gateway at http://ipfs.io, which is useful for sharing links with people who aren’t running their own daemon.

Some concerns:

  • This should mention DNSLink and how it ties in using the Host header.
  • We should clarify that the gateway is a migration tool β€” it exists because web browsers that natively speak IPFS don’t exist. Eventually, we hope IPFS Companion will be able to add support to browsers, and eventually the browsers will build it in natively.
  • Similarly, we should clarify that you should be careful about relying on the public gateway.
  • Should we explicitly explain you could run your own public gateway?
  • Should this discuss the service worker gateway? (I think we said probably not)
  • We should clarify that a daemon runs a gateway, while an IPFS node (see ipfs/docs#92) does not necessarily include a gateway.
  • We should disambiguate between local gateway (localhost:8080) vs public/shared gateway (example.org) vs the canonical public gateway (ipfs.io)
  • We should disambiguate between the types of HTTP gateways (see comment): DNSLink gateway, path gateway, subdomain gateway

Deliverable

A concise, high-level description of this IPFS concept. It should answer the following, supplemented whenever possible by diagrams, videos and/or code examples:

  • What is this?
  • How does it relate to the rest of IPFS?
  • What are some generic use cases for this β€” how might it meet a need in someone's project/goal?
  • How can (or should?) you use it? (Note: sometimes the answer is that you should understand it, but not necessarily use it based on your use case or the current state of the tech.)
  • Where do you go to learn more?
  • What is the current state of this concept or technology?

Content should take the form of a Markdown document, supplemented by diagrams as embedded images. File locations should be as follows:

Guidelines

  • Please use the IPFS Docs Contributor Guidelines as your north star β€” adherence to these guidelines are crucial when it comes to awarding potential bounty!
  • Also, please keep in mind our core user personae. If a piece of content serves one or more personae in particular, make sure it checks out with that persona's attributes.

Create an introduction for the "IPFS for Web Devs" section.

This issue is one of the prioritized recommendations in the Q1 2020 IPFS Ecosystem Audit for execution in Q2/Q3 2020. Tagging it with $auditrecommendation means it's searchable! See all tagged issues in this repo.

To showcase some of the features of IPFS, we need to create a path for web developers to get their feet wet. In this tutorial series, the reader will move through creating a simple single-page website and hosting it on IPFS. The reader will then work through the series, building up to hosting a static-site generated website on IPFS and using the CloudFlare gateway service. As an optional extra, the reader can purchase a domain and link that up to their newly decentralized website.

Add "Related content" section at the bottom of each page.

Use VuePress front matter, combined with a similar component methodology to what was used for "no content yet" stub pages, to generate a "related content" section of each page, highlighting in particular community-generated materials.

Please note that this may be a proof of concept for general tagging/taxonomy work in the site in the future, so designing this particularly future-proof is a good endeavor.

Original notes follow for context:

Our friends at Textile created a full Training Program to teach devs on how to build for the Decentralized Web.

https://medium.com/textileio/announcing-textile-build-a-free-online-workshop-27472fd5d913
image

The recording from these sessions live at https://www.youtube.com/watch?v=gOzAYiT1Z4U&list=PLC8CEtJ9shDznO1tpvGe--BVEWmCKY9_Z

image

The series cover a ton of content and touch multiple parts of the stack + guide devs through building a full DApps. This is really great πŸ‘πŸ½πŸ‘πŸ½πŸ‘πŸ½πŸ‘πŸ½πŸ‘πŸ½πŸ‘πŸ½

Create a localization strategy.

Note: This issue was opened as a result of the November 2019 close-reading audit captured in ipfs-inactive/docs#326.

Having the docs site in several languages is great for globalization, and improves SEO. However, localization is hard and comes with significant overhead. Every change we make to a document means that the page needs to be translated again. We could cut down this overhead by using a dynamic service like Localize.js, or we can leave users to chose their own translation service.

We should decide:

  1. Is localization something we want to tackle this year.
    a. If yes: which solution?
    b. If no: why not?
  2. How to support IPFS users regardless of the decision.

Investigate IPFS emulation for try-as-you-go docs

Investigate difficulty/rewards involved in

  • Adding sandboxing to How-tos in general
  • Creating an emulated IPFS CLI for that sandboxing, so users could immediately try what they learn without having to spin up a local instance. (Note: For within-site usage you can use js-ipfs - like what ProtoSchool is doing - with an in-browser node.)

Let's use this issue to discuss and possibly implement.

Note: This issue was generated as a result of Nov 2019 internal user testing. Background can be found in the summary (source: ipfs-inactive/docs#315).

Disambiguating nodes/peers/instances vs daemons

The term β€œnode” is used in very different ways in different contexts around IPFS. At the Berlin developer summit, we decided adding a concept doc describing this might be helpful (it would also be a good idea to try and avoid using the general term β€œnode” in the future πŸ˜›).

Here was the original draft:

Node

You might see the term β€œnode” used all over in discussions, issues, and IPFS-related code. It is a very general term, so its meaning depends on context, but you’ll see it used in two main ways around IFPS:

  1. IPFS Nodes (aka IPFS daemons aka DHT nodes) are copies of IPFS that are running on a computer and can exchange data with other IPFS nodes.

  2. DAG Nodes, UnixFS Nodes, Data Nodes, etc. are actual pieces of data on IPFS. When you add a file with the ipfs add myfile.txt command, it gets broken up into several nodes that each contain a chunk of the file and are linked to each other.

Some concerns:

  • Equating an IPFS node and a daemon is not quite correct (an IPFS node doesn’t have to be the only thing running in a process, it might not also have a gateway, etc.). Can we be more accurate without descending into arcana?

  • What about Libp2p Nodes (kinda like IPFS nodes)?

/cc @Stebalien @hsanjuan who were also in this session


Concept docs are concise, high-level descriptions of various core concepts in IPFS. They should strive to answer:

  1. What is this?
  2. How does it relate to the rest of IPFS?
  3. How can (or should?) you use it? (Note: sometimes the answer is that you should understand it, but not use it. Bitswap is probably a good example.)
  4. Where do you go to learn more?
  5. What is the current state of affairs?

Fix submenu to expand when visiting page directly.

When directly visiting a top level section (like Community) on the new docs beta (i.e. clicking from offsite or pasting https://docs-beta.ipfs.io/community/ directly into your address bar), the left hand menu doesn't expand for the highlighted section:

Screenshot 2020-01-21 at 14 07 29

I would expect it to be expanded in the same was as if I clicked on the "Community" link in the menu:

Screenshot 2020-01-21 at 14 08 20

I happens for all the top level sections, not just Community, but it does work as expected for sub-sections like Community >> IRC

Add prev/next links in docs site footer, solving for offsite links

Currently much of the docs content isn't very well threaded, but upcoming changes (like those proposed by @johnnymatthews in #265) should serve to improve the overall content flow from page to page. In the mean time, users may find it handy to have this secondary/analog method of navigation available. This may be especially true for mobile, where users otherwise have to toggle open a menu in order to browse.

HOWEVER, in order to implement this, we must first control for the fact that many left-hand nav links go to external sites. Possible options include:

  • Wait to implement this until we (as planned) migrate a lot of go-ipfs and js-ipfs content out of their respective repos and onto the docs site
  • Make a docs page for each of these links. That page would include brief info gleaned from the destination content, and of course, the link itself.

Mockups

Desktop
image

Mobile
prev-next-mobile

Svg arrow files
Default
Hover (if we swap art rather than recoloring on hover)

Default arrow color #Default: #9ad4db
Hover arrow color #377f85

A high-level explainer of IPLD.

This issue has a bounty!

Successfully closing this issue by producing a production-ready piece of documentation can earn you not only the undying love of the IPFS community β€” it can net you a financial reward. See the current list of bounty issues and their values here.

The need in brief

A high-level explainer of IPLD.

Context/supporting materials: At the IPFS developer summit in Berlin in July 2018, we had poster-making sessions where people explored various IPFS concepts. This IPLD poster could ideally be expanded into a basic diagram of what IPLD is and how it works, supplemented by written content.

ipld

Deliverable

A concise, high-level description of this IPFS concept. It should answer the following, supplemented whenever possible by diagrams, videos and/or code examples:

  • What is this?
  • How does it relate to the rest of IPFS?
  • What are some generic use cases for this β€” how might it meet a need in someone's project/goal?
  • How can (or should?) you use it? (Note: sometimes the answer is that you should understand it, but not necessarily use it based on your use case or the current state of the tech.)
  • Where do you go to learn more?
  • What is the current state of this concept or technology?

Content should take the form of a Markdown document, supplemented by diagrams as embedded images. File locations should be as follows:

  • MD content should live here (lease make a PR against the existing placeholder document) https://github.com/ipfs/ipfs-docs-v2/blob/master/docs/concepts/ipld.md
  • Images can live in the MD content's parent directory; we'll move them before final merge
  • For videos, just post temporarily on the platform of your choice, and we'll sort out on a case-by-case basis

Guidelines

  • Please use the IPFS Docs Contributor Guidelines as your north star β€” adherence to these guidelines are crucial when it comes to awarding potential bounty!
  • Also, please keep in mind our core user personae. If a piece of content serves one or more personae in particular, make sure it checks out with that persona's attributes.

Explain how much disk space an initial installation will use.

Around there where you suggest running daemon, I would appreciate some comment if this would take a lot of disk space or not. As a IPFS beginner, I would suspect that it would start syncing data from others to my computer. Probably it does not do so, but then a statement of encouragement would be cool as well. (Like, no files will be downloaded until you ask for them.)

[NEW CONTENT] Define and document standards and styles for IPFS docs

Note: This issue was opened as a result of the November 2019 close-reading audit captured in ipfs-inactive/docs#326.

One consequence of having several different writers create documentation is that there isn't any consistency between the pages in terms of writing style, word choice, styling, and examples. To create a consistent experience across all IPFS documentation we should:

  1. Create a personality and writing style for our docs. Note: "personality" of the voice in our docs is a separate effort from the "user personae" we discuss when we're talking about general docs user research.
  2. Create contribution guidelines -- these should be presented alongside the IPFS developer contributor guidelines, as well as in our own docs site
  3. Create a style guide for writing docs.
  4. Create a code persona and base example project to pull code-blocks and small examples from.

Strikethroughs denote completed tasks.

Let's use this issue as a holding pen for the four efforts noted above, but manage and track each effort in its own issue.

Review docs site for accessibility.

UPDATE: Known contrast issue in text colors. Please see #293 and remedy based upon that analysis.

Once docs VuePress site is in a solid enough state, conduct an accessibility review. This could include:

  • At minimum, examining against WCAG
  • Possible implementation of automated accessibility testing for future site revisions
  • If necessary, interview-based accessibility testing

Explain how files are managed in IPFS.

ETA (Dec 2019)

In light of the new nav/IA structure on the docs beta site, let's use the content spec'd out in this issue to enhance the beta page currently located at https://github.com/ipfs/ipfs-docs-v2/edit/master/docs/concepts/file-systems.md .

Original issue text follows ...

This isn't the documentation itself (I'm not qualified to write that) but the main content that should be included in it along with some other pointers/questions as to how to approach the subject. Feel free to edit content directly on the issue (created as an issue for easy editing).

The objective of this document is to provide an easy read for both new users and developers who want to understand the high-level architecture of how are files managed in IPFS. This document should also work as the reference for the low-level code comments and mid-level usage examples (like ipfs/kubo#5052), to avoid repeating explanations and having a clear source of truth.

The master document should actually be the specification of the Files API layers, but since those documents are missing at the moment this is the best second-choice reference and we should actually strive to write this document before working on the full specs (that is, if we can't finish this up let's not even bother trying to write the specs). Compared to a specification the concept document should be much more accessible and user-friendly, e.g., the specification is useful for someone already familiar with the stack who wants to maybe code a different implementation while the "concepts" site is the entry point for someone who doesn't know anything about the subject (it should be useful as a first read).

This is still a work in progress, I'll be developing this content in parallel to a mid-level document (about how to use the ipfs files command and how it works under the hood ipfs/kubo#5052) to assess what information would be needed here to follow that guide.

We need diagrams and (maybe) some basic usage examples (or a link to them).

There are at the moment two light-weight concept documents about UnixFS and MFS which should be absorbed here and we should present a single "Files" concept document as an entry point to the entire subject (as the names UnixFS and MFS are meaningless to a new reader).

[TODO: List issues in the milestone (https://github.com/ipfs/go-ipfs/milestone/38) that this document should close.]

Files abstraction layers (stack)

This is the central concept: how we divide work in different layers, each one abstracting some part of the IPFS model. Maybe we could add here (or link to somewhere else) a short preface of what does it mean to be in a content-addressed paradigm where paths are just an abstraction but do not hold any hierarchy of its own.

We should have a simple diagram that would show how each layer operates on each other, e.g.,

     +---------+
     |   MFS   |   File system.
     +---------+
     |  UnixFS |   Files and directories.
     +---------+
     |   DAG   |   Nodes.
     +---------+
     |  Block  |   Stream of bits.
     +---------+

that could reflect the path from a block to a DAG ProtoNode, to a DAG of UnixFS nodes, and finally to a filesystem hierarchy in MFS.

The block and DAG layers could be extracted elsewhere (although I would first attempt to expand on them here to get firm sense of how they fit in the stack and then consider putting them in a document of their own).

The TCP/IP stack example (shown in the UnixFS section) could be presented in this intro instead (but may be too much information since the user hasn't seen any format yet).

Block

This is the most basic data unit, a stream of raw bits, it's how we store and transmit information.

Explain how do we address blocks, differentiate between the CID and the hash. Let's provide a Qm... example here to later use that notation (avoiding CIDv1 for now). Show an /ipfs/CID example path (this may already exist in another document, just point to that), explain that we prefix the CID with they type of interpretation or context for it (e.g., /ipfs/ or /ipns/). No need to talk about datastores, just know that IPFS stores blocks as key-value pairs where the key is the CID (hash) of the block.

DAG - IPLD Nodes

There's plenty of confusion (at least for me) in this subject (especially related to IPLD), but let's first explain the basic concept: we format those blocks adding the property of links allowing them to connect into a directed acyclic graph (DAG) and call them nodes.

What type of nodes should we mention here? Again, first give the most clear definition before going into details: a node is a block formatted with the link and data attributes, that is, it has its own data and points to other nodes with more data. From the Go implementation what I'm most interested in mentioning is the ProtoNode (since it's the most common one, no need to mention raw nodes), but maybe a more generic IPLD notion could be given here (with care to not over-complicate things early at this point).

We should emphasize at this point the the basic property of the Merkle DAG (maybe point to the Merkle tree which is more widely known and conceptually very similar for what we want to explain) that will have repercussions in the uppers layers: content-addressing (comparing it to path/location-addressing). Content is fixed, mutating/editing means recreating the node. Mutation needs to propagate upwards in the DAG, upper nodes will still "point" to the old content so we need to update/edit them as well, meaning we'll need to recreate them also (because chaining a link in the node changes the block contents and therefore its hash). This "propagation of change" goes all the way up to the root itself. That should have a name, e.g., "mutation path", all the nodes that need to be replaced for a certain change to take effect across the DAG. (Important concept for MFS and UnixFS).

[We definitely need a diagram here, e.g.,]

     +-------------+
     |    QmRoot   |
     +-------------+
            |                
            |           +---------------+        
            +---------> |    QmChild    | 
                        +---------------+        

Update `QmChild` contents, what's the result? `QmChild`!! We can't change that,
we can generate a new node based on `QmChild` but with our desired modifications,
the result is `QmNewChild`:

     +-------------+
     |    QmRoot   |
     +-------------+
            |                
            |           +---------------+        
            +---------> |    QmChild    | 
                        +---------------+        

                        +---------------+        
                        |  QmNewChild   | 
                        +---------------+     

What happened? Our root is still pointing to the old content, and we can't
change that, since the link (how it points) is embedded as part of its
contents, so actually we need a new root!

     +-------------+
     |  QmNewRoot  |
     +-------------+
            |                
            |           +---------------+        
            +---------> |  QmNewChild   | 
                        +---------------+     

     +-------------+
     |    QmRoot   |
     +-------------+
            |                
            |           +---------------+        
            +---------> |    QmChild    | 
                        +---------------+        

So we effectively end up with two different DAGs, we can't overwrite old content,
we just duplicate and modify it.

[and not an ugly diagram like this example but a nice one (with colors!!) like this. Also, not even sure if we want to be using the CID terminology here, we need to reflect the fact that we are talking about content (and not node positions in a diagram, since this isn't location-addressed) but the Qm notation is awful, and I would like to write names with spaces, not NewChild/OldChild.]

Another concept (useful for the MFS layer) worth expanding on is the root. There is no actual root, it's a relative term that depends on the entity we are abstracting. That root itself may be the child node of another node in a bigger DAG. So, similarly, there is not a single DAG, it's just the sub-DAG we're referring to at the moment (which may be part of a bigger DAG, and we never know how big that DAG is, since there may always be other unknown -to us- nodes pointing to it). [We need to rephrase this but the general idea is that even though we may not always mention it root and DAG are relative terms and the reader should always stop and think relative to what.]

(If we end up extracting this section to other documents we'll need to be careful how we divide things like the previous paragraphs with concepts closely related to both the DAG and UnixFS/MFS layers.)

The name DAG (mostly in the code, not sure if in the high-level documents as well) is usually associated with the layer being described here and not with the generic graph concept (since our "DAG" term comes from MerkleDAG where the "Merkle" -content-addressed- part is crucial), but many parts of the architecture can be thought of as a DAG (just not of IPLD nodes but for example of other sub-graphs as is the case of MFS).

[TODO: Pending review of the following two sections.]

UnixFS

Most important attribute is the file offset.

We split files in chunks and distribute it in a DAG (not sure if we should explain why or just say "to make them easier to modify and distribute"). Each chunk is a node with a part of the content of the file interconnected with other nodes. If you need to read offset X you'll need to traverse the graph to find the node that contains that offset. How do you know which one is the correct node? Because UnixFS nodes add more attributes like the offset of the data they contain (let's not mention the attributes names which in many cases do not clearly represent what they are).

At this point it would be useful to have a diagram to represent the different layers and the information encapsulated in each layer, e.g., this UDP/IP diagram which shows what is the "data" (a term largely misused in the code base) for the different layers. (It may also be useful to borrow the header+data model and terminology). Following that example we could say that the block's data (e.g., link layer in the diagram) is comprised of both the DAG Node header information (with the links attribute) and the node's data itself. Then at the DAG layer (e.g., Internet layer) the DAG node's data is unpacked to another (also called) node of the UnixFS type (whether to call this a node, giving the impression that we may be unpacking a node from itself has long been discussed and should be clearly documented). The header/meta-data of this UnixFS node has for example the offset the UnixFS node's data belong to in the file itself (e.g., transport layer).

it's more general than the Files API but this is an excellent example

An implicit concept in the code that should be clarified here and given a name is the mechanism by which we refer to an entire by only the root UnixFS node of that file DAG (another term worth introducing). Why? Because with the root node the UnixFS layer can decode the entire file (traversing the DAG) and since we are in a content-addressed system that node (through its hash) encodes all the nodes below it. So the result is that we refer to that root node as the entire file, we often just name it node in the code when it's actually representing much more than a single node: the entire file. To start changing that we should introduce the concept of a "root file node" (rename) to make this clear since it's heavily used in the MFS layers where we manipulate files and directories just by managing a single UnixFS node.

Haven't mentioned directories up to now, a simple example can be given, the most important aspect is that directory entries in the UnixFS layer rely in the links of the DAG layer which is a excellent examples of how these layers interact. (Let's not mention HAMT directories here, or provide a link to another document at most.)

How are these DAGs formed? Not sure if worth explaining here, we can just mention that we have different layouts for different use cases, e.g., balanced and trickle.

TODO: Add discussions about node encapsulation, node specialization. Something to consider when writing this section (see ipfs/kubo#5166).

Mutable File System (MFS)

Sub-graph concept and how they can be seen in different layers (already discussed in DAG). This is a new dimension not present in telecommunication models like TCP/IP. We could see an entire UnixFS graph representing a file like a sub-graph at the MFS layer, because the MFS will only interact with the root file nodes. Very useful for HAMT directories and the general idea that a directory may be comprised of several nodes and again, I will normally hold a reference (hash) to the root one.

Why do we need this layer? As it says in the concept doc: "Because files in IPFS are content-addressed and immutable, they can be complicated to edit." I would like to expand on that with a simple example (that should interact with the concepts discussed earlier) like: if I have a directory /home/user/ represented by a UnixFS node QmHomeDir (let's use readable CIDs for the examples whenever possible) that has a link to a child file bashrc (avoiding the dot for simplification) with a CID QmBashrc, if I modify the bashrc file contents it will therefore have a new hash and CID, e.g., QmBashrcModified, and the entry of QmHomeDir will point to the old contents. (Diagram with both old/ new content and the link that will be updated). (This can be based, or merged with, the previous example diagram of the DAG section, since we're talking basically about the same issue.)

Once we are done editing those changes will be flushed to the UnixFS layer: the final contents will be paired with the correct links to each other. (elaborate on this, it's important to have an idea that we need to save/flush changes because hashes are immutable).

The same way a "root file node" represented an entire file a "root MFS node" can represent an entire file system hierarchy.

MFS provides path-addressable content abstracting the UnixFS layer (to simplify the limits of the content addressable system of thee DAG layer, which should be clarified earlier.) And follow up with the bashrc example.

(Merge with previous paragraph.) To keep this all in sync while working with files we create another layer that works with paths (that are actually meaningless in content-addressed, "meaningless" may be too strong) and keeps a reference of "what I mean when I talk about the bashrc file" without actually being concerned with the (ever-changing) hash of a file that is being edited.

Expand upon existing FAQ page

The barebones FAQ at https://github.com/ipfs/ipfs-docs-v2/blob/master/docs/concepts/faq.md needs to be augmented as follows:

  • 1. Incorporating the most important and/or significantly commented items in the "old" FAQ located
    at https://discuss.ipfs.io/c/help/Old-FAQ (warning, there are a lot of them!)

  • 2. When done, close and remove the "old FAQ" section of Discourse

  • 3. Next-level improvements as outlined by @momack2 in her original issue ipfs-inactive/docs#213, now closed. These are pasted below:

*I would really like to see us have a usefully organized FAQ about IPFS instead of just linking to this hard-to-parse/search list directly. Would love folks to run with this! Maybe @vasa-develop or @andrewxhill/@carsonfarmer have content from explainers they've created to contribute here?

Other questions I'd like to eventually see answered include:

A better "what is IPFS" answer that has less jargon
How does IPFS work?
How is IPFS different from other file systems?
How are IPFS and Filecoin related?
Is all data added to IPFS permanent?
this confusion comes from the "permanent web" moniker - making people think that all data added is indefinitely persisted by some pervasive storage layer in IPFS, which is not the case.
Can you have private / personal data on IPFS?*

Create a Troubleshooting section for IPFS projects.

What's the subject of the item you're requesting?
Troubleshooting IPFS.

What's the content of the item you're requesting?
Common pitfalls and issues users run into when interacting with IPFS projects such as the IPFS Desktop and IPFS Daemon.

Before this page goes live, we should have steps to solve the following problems as a minimum:

  1. Downgrading go-ipfs.
  2. Downgrading js-ipfs.
  3. Firewall configuration.

More problems can be added to this minimum-viable-product list through the discussion here.

What will the user know how to do after going through this item?
How to solve small problems that they're running into with the IPFS daemon, IPFS Desktop, or other related projects.

This page will likely serve as an SEO honey pot. The vast majority of the points listed in this troubleshooting page will come from places like StackOverflow and the IPFS forum.

Would you be interested in helping create this item?
Yes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.