/docs

Documentation site for the libp2p project.

Primary LanguageCSSOtherNOASSERTION

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


Overview

libp2p is a modular framework that encapsulates an evolving set of specifications for peer-to-peer networking. What started as the networking component that enables IPFS turned into a general-purpose framework to deliver a modular, peer-to-peer networking stack of protocols that are transport agnostic, flexible, reusable, and easy to upgrade.

libp2p enables interoperability between applications, resilient applications, and advanced networking features like decentralized publish-subscribe or advanced data structures like distributed hash tables.

Contributing content

The documentation site contains several different kinds of content. We’d love ❤️ your help with any of it:

  1. Introductory overviews: this lives in content/introduction. If you spot a problem or have improvements, please post an issue or PR.

  2. Guides, examples, and tutorials: Most examples currently live in other repositories, like js-libp2p examples. If you have thoughts on integrating them better, please file an issue. If you have feedback on individual examples or want to add a new one, please file an issue or pull request on the relevant repository. If you have ideas for guides or tutorials, they belong here! Please propose them in an issue here before creating a pull request.

  3. Concept guides: Concept guides are intended to present a brief overview of libp2p-related concepts. They live in the content/concepts folder and should strive to answer:

    • What is this?
    • How does it relate to the rest of libp2p?
    • How can (or should?) you use it? (This can often vary by implementation
    • Where do you go to learn more?
    • What is the current state of affairs?

    See a list of concepts we need help with by checking the issues.

  4. Reference documentation: Please see the issues in this repository for current activity around reference/API documentation.

  5. Community: If there are missing community links, feel free to file an issue or pull request,

This repository is also a website; we could use your help with design and technical features (interactive examples, better syntax highlighting, scripts to pull in content from other repositories, etc.) in addition to writing. To get a sense of what we could use help on, check the issues. If you decide to work on one, please post to the issue to let us know!

Before posting a pull request with your changes, please check our style guide and contributing guide.

Finally, let’s work together to keep this a respectful and friendly space. Please make sure to follow our official code of conduct.

Running locally

The site uses a MakeFile to handle the site building procedure.

Build the optimized site by running:

make

To create a production build, run:

make build

This requires hugo & ipfs on your PATH

You’ll find the final static site in the public directory.

To serve the static files, run:

make serve

This requires hugo & ipfs on your PATH

Preview the site at http://localhost:1313.

Run the following make command in the root directory to start a hot-reloading dev server:

make dev

This requires hugo on your PATH

Preview the site at http://localhost:1313.

To add an preview the site on IPFS, build the site in the root directory by running:

make deploy

This requires hugo & ipfs on your PATH

See the Makefile for the full list of make commands, or run make help in the project root.

You can pass the environment variable DEBUG=true to increase the verbosity of your chosen command.

Configuration guide

Static site generator

The libp2p documentation site uses Hugo as a static site generator, making it easy to serve and host the static files on IPFS. In particular, the site uses the Hugo Learn theme to present the libp2p documentation.

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 master branch and deploys the documentation site on fleek. It reflects the latest commit on master and publishes at https://docs.libp2p.io.

Translation

Please stay tuned for the steps to translate the documentation.

Primary maintainers

  • @DannyS03: primary contact, project organization & technical writing
  • @mxinden: libp2p steward, primarily rust-libp2p
  • @marten-seemann: libp2p steward, primarily go-libp2p
  • @MarcoPolo: libp2p steward, primarily go-libp2p
  • @jennijuju: documentation management
  • @p-shahi: libp2p project management
  • @BigLep: interplanetary management and supervision

License

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