From dff752e778c0b004f2801bd8a2a02ec68b4a5584 Mon Sep 17 00:00:00 2001 From: Danny Salman Date: Mon, 5 Sep 2022 03:10:06 -0400 Subject: [PATCH 1/8] enhance readme --- README.md | 153 ++++++++++++++++++++--------- static/images/libp2p-docs-logo.png | Bin 0 -> 59840 bytes 2 files changed, 106 insertions(+), 47 deletions(-) create mode 100644 static/images/libp2p-docs-logo.png diff --git a/README.md b/README.md index 7da3b3c6..9da8fca7 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,142 @@ -# libp2p Docs +

+ +

+ +
+

The networking layer of the web3 and the distributed web

+ +
+ +[![Made by icon.](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](https://protocol.ai/) +[![Project icon.](https://img.shields.io/badge/project-libp2p-lightgrey)](https://libp2p.io/) +[![Build status icon.](https://img.shields.io/circleci/project/github/ipfs/ipfs-docs/master.svg?style=flat-square)](https://circleci.com/gh/ipfs/ipfs-docs) +![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg) +[![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io) +
+ + +- [Overview](#overview) +- [Contributing content](#contributing-content) +- [Running locally](#running-locally) +- [Configuration guide](#configuration-guide) + - [Static site generator](#static-site-generator) + - [Automated deployments](#automated-deployments) + - [Translation](#translation) +- [Primary maintainers](#primary-maintainers) +- [License](#license) + + +--- -Home of https://docs.libp2p.io +## 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, decentralized applications, and advanced networking features like decentralized publish-subscribe or data structures like distributed hash tables. -This repo is used to: +## Contributing content -1. Organize documentation work across the libp2p project. -2. Host the documentation website for libp2p. It gets published to IPFS and made available at https://docs.libp2p.io/. +The documentation site contains several different kinds of content. We’d love ❤️ your help with any of it: -Check the [issues](https://github.com/libp2p/docs/issues) for updates. +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](https://github.com/libp2p/js-libp2p/tree/master/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. -## Overview +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: -libp2p documentation currently has several acute problems: + - **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? -- There is **no clear introduction to the overall idea of exactly how libp2p works and what it’s doing.** -- libp2p has **lots of new concepts** that are just very different from the web technologies people know today. -- **Docs are inconsistently located** and spread across a number of repos people have to hunt through. -- Clear, **standard API docs** are not always available. -- **Hunting through GitHub is hard.** (Which repos have docs? Where in the repo are they? Which projects are important and how do they relate to the others? Which repos and docs are up-to-date?) + See a list of concepts we need help with by [checking the issues](https://github.com/libp2p/docs/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3Acontent+concept). -We aim to solve some of these problems through a documentation site (the source of which is in this repo) and others through organizing work, conventions, and practices across project repos (managed in the issues here). +4. **Reference documentation**: Please see the issues in this repository for current activity around reference/API documentation. -## Contributing content +5. **Community**: If there are missing community links, feel free to file an issue or pull request, -The documentation site contains several different kinds of content. We’d love ❤️ **your** help with any of it: +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](https://github.com/libp2p/docs/issues). If you decide to work on one, please post to the issue to let us know! -1. **Introductory overviews.** This lives in `content/introduction`. If you spot a problem or have improvements, please post an issue or PR. +Before posting a pull request with your changes, please check [our style guide](https://github.com/ipfs/community/blob/master/DOCS_STYLEGUIDE.md) and [contributing guide](https://github.com/libp2p/community/blob/master/CONTRIBUTE.md). -2. **Guides, examples, and tutorials.** Most examples currently live in other repos, like [js-libp2p examples](https://github.com/libp2p/js-libp2p/tree/master/examples). If you have thoughts on how to better integrate them, please file an issue here. If you have feedback on individual examples or want to add a new one, please file an issue or PR on the relevant repo. If you have ideas for guides or tutorials, they belong here! Please propose them in an issue here before creating a PR. +Finally, let’s work together to keep this a respectful and friendly space. Please make sure to follow our [official code of conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md). -3. **Concept guides.** Concept guides are intended to present a brief overview to libp2p-related concepts that might be new to people. They live in the `content/concepts` folder and should strive to answer: +## Running locally - 1. **What** is this? - 2. How does it **relate** to the rest of libp2p? - 3. How can (or should?) you **use** it? (This can often vary by implementation) - 4. **Where** do you go to learn more? - 5. What is the **current state** of affairs? +The site uses a `MakeFile` to handle the site building procedure. - See a list of concepts we need help with by [checking the issues](https://github.com/libp2p/docs/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3Acontent+concept). +Build the optimized site by running: -4. **Reference Documentation.** Please see the issues in this repo for current activity around reference/API documentation. +```bash +make +``` -5. **Community.** If there are important missing community links, file an issue or PR here! +To create a production build, run: -This repo is also a website, which means we could also use your help with design and technical features (interactive examples, better syntax highlighting, scripts to pull in content from other repos, etc.) in addition to writing. To get a sense of what we could use help on, check the [issues](https://github.com/libp2p/docs/issues). If you decide to work on one, please post to the issue to let us know! +```bash +make build +``` +> This requires hugo & ipfs on your PATH -Before posting a PR with your changes, please check [our styleguide](https://github.com/ipfs/community/blob/master/DOCS_STYLEGUIDE.md) and [contributing guide](https://github.com/libp2p/community/blob/master/CONTRIBUTE.md). -Finally, let’s work together to keep this a respectful and friendly space. Please make sure to follow [our code of conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md). +You’ll find the final static site in the `public` directory. +To serve the static files, run: -## Building the Docs Site +```bash +make serve +``` +> This requires hugo & ipfs on your PATH -### Build and Run the Site +Preview the site at http://localhost:1313. -* In the root directory, run `make dev` -* Load http://localhost:1313 in your web browser -* Edit and add things! +Run the following `make` command in the root directory to start a hot-reloading dev server: -To create a production build, run `make build` instead. You’ll find the final static site in the `public` directory. +```bash +make dev +``` +> This requires hugo on your PATH -### CI and publication - -This site deploys through [Fleek](https://app.fleek.co) to https://docs.libp2p.io +Preview the site at http://localhost:1313. -## FAQ +To add an preview the site on IPFS, build the site in the root directory by running: -### Why is this is a static site? +``` +make deploy +``` +> This requires hugo & ipfs on your PATH -We believe in hosting libp2p's documentation on IPFS, and that’s much easier when the content is static. +See the `Makefile` for the full list of `make` commands, or run make help in the project root. You can pass the env var `DEBUG=true` to increase the verbosity of your chosen command. +## Configuration guide -## License +### Static site generator -All software code is copyright (c) Protocol Labs, Inc. under the **MIT license**. +The libp2p documentation site uses [Hugo](https://gohugo.io/) +as a static site generator, making it easy to serve and host the static files on IPFS. -Other written documentation and content is copyright (c) Protocol Labs, Inc. under the [**Creative Commons Attribution-Share-Alike License**](https://creativecommons.org/licenses/by/4.0/). +### 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](https://fleek.co/). +It reflects the latest commit on `master` and publishes at [https://docs.libp2p.io](https://docs.libp2p.io). + +### Translation + +Please stay tuned for the steps to translate the documentation. + +## Primary maintainers + +- [@DannyS03](https://github.com/DannyS03}: primary contact, project organization & technical writing(engineering) +- [@mxinden](https://github.com/mxinden): libp2p steward(engineering), primarily rust-libp2p +- [@marten-seemann](https://github.com/marten-seemann): libp2p steward(engineering), primarily go-libp2p +- [@MarcoPolo](https://github.com/MarcoPolo): libp2p steward(engineering), primarily go-libp2p +- [@jennijuju](https://github.com/jennijuju): program management(engineering) +- [@p-shahi](https://github.com/p-shahi): libp2p project management(engineering) +- [@BigLep](https://github.com/BigLep): interplanetary management and supervision(engineering) + +## License -See [LICENSE file](./LICENSE) for details. +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**](https://creativecommons.org/licenses/by/4.0/). diff --git a/static/images/libp2p-docs-logo.png b/static/images/libp2p-docs-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6c16ce5302f666d4ae509828affbcbaa620a6c39 GIT binary patch literal 59840 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 literal 0 HcmV?d00001 From 6326e9c666f4185d5aee744fc4d676f885e0efd2 Mon Sep 17 00:00:00 2001 From: Danny Salman Date: Mon, 5 Sep 2022 03:11:55 -0400 Subject: [PATCH 2/8] edits --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 9da8fca7..afba85d0 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ 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, decentralized applications, and advanced networking features like decentralized publish-subscribe or data structures like distributed hash tables. +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 @@ -79,7 +79,6 @@ 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: From 7f2184278f971b6fd9593a54daba14fafd14b145 Mon Sep 17 00:00:00 2001 From: Danny Salman Date: Mon, 5 Sep 2022 03:20:35 -0400 Subject: [PATCH 3/8] size --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index afba85d0..522838d3 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,10 @@

- +

The networking layer of the web3 and the distributed web

-
- [![Made by icon.](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](https://protocol.ai/) [![Project icon.](https://img.shields.io/badge/project-libp2p-lightgrey)](https://libp2p.io/) [![Build status icon.](https://img.shields.io/circleci/project/github/ipfs/ipfs-docs/master.svg?style=flat-square)](https://circleci.com/gh/ipfs/ipfs-docs) @@ -14,6 +12,8 @@ [![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io)
+--- + - [Overview](#overview) - [Contributing content](#contributing-content) From 99b85ac78961b004394bfdcb622b26b529d3b75e Mon Sep 17 00:00:00 2001 From: Danny Salman Date: Mon, 5 Sep 2022 03:22:32 -0400 Subject: [PATCH 4/8] edits --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 522838d3..67863830 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,6 @@ [![Discuss](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg?style=flat-square)](https://discuss.libp2p.io) ---- - - [Overview](#overview) - [Contributing content](#contributing-content) @@ -128,7 +126,7 @@ Please stay tuned for the steps to translate the documentation. ## Primary maintainers -- [@DannyS03](https://github.com/DannyS03}: primary contact, project organization & technical writing(engineering) +- [@DannyS03](https://github.com/DannyS03): primary contact, project organization & technical writing(engineering) - [@mxinden](https://github.com/mxinden): libp2p steward(engineering), primarily rust-libp2p - [@marten-seemann](https://github.com/marten-seemann): libp2p steward(engineering), primarily go-libp2p - [@MarcoPolo](https://github.com/MarcoPolo): libp2p steward(engineering), primarily go-libp2p From d5eecdb80afe599e322f627053bc10d51498e755 Mon Sep 17 00:00:00 2001 From: Danny Salman Date: Mon, 5 Sep 2022 03:24:35 -0400 Subject: [PATCH 5/8] mention use of learn theme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 67863830..1d92ac1d 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,8 @@ See the `Makefile` for the full list of `make` commands, or run make help in the The libp2p documentation site uses [Hugo](https://gohugo.io/) 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](https://learn.netlify.app/en/) to present +the libp2p documentation. ### Automated deployments From 6df812d4709a9e4e001bd241d9958be47f19fa88 Mon Sep 17 00:00:00 2001 From: Danny Salman Date: Mon, 5 Sep 2022 03:36:16 -0400 Subject: [PATCH 6/8] address PR feedback --- README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 1d92ac1d..943e5c78 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@

-

The networking layer of the web3 and the distributed web

[![Made by icon.](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](https://protocol.ai/) [![Project icon.](https://img.shields.io/badge/project-libp2p-lightgrey)](https://libp2p.io/) @@ -128,13 +127,13 @@ Please stay tuned for the steps to translate the documentation. ## Primary maintainers -- [@DannyS03](https://github.com/DannyS03): primary contact, project organization & technical writing(engineering) -- [@mxinden](https://github.com/mxinden): libp2p steward(engineering), primarily rust-libp2p -- [@marten-seemann](https://github.com/marten-seemann): libp2p steward(engineering), primarily go-libp2p -- [@MarcoPolo](https://github.com/MarcoPolo): libp2p steward(engineering), primarily go-libp2p -- [@jennijuju](https://github.com/jennijuju): program management(engineering) -- [@p-shahi](https://github.com/p-shahi): libp2p project management(engineering) -- [@BigLep](https://github.com/BigLep): interplanetary management and supervision(engineering) +- [@DannyS03](https://github.com/DannyS03): primary contact, project organization & technical writing (engineering) +- [@mxinden](https://github.com/mxinden): libp2p steward (engineering), primarily rust-libp2p +- [@marten-seemann](https://github.com/marten-seemann): libp2p steward (engineering), primarily go-libp2p +- [@MarcoPolo](https://github.com/MarcoPolo): libp2p steward (engineering), primarily go-libp2p +- [@jennijuju](https://github.com/jennijuju): program management (engineering) +- [@p-shahi](https://github.com/p-shahi): libp2p project management (engineering) +- [@BigLep](https://github.com/BigLep): interplanetary management and supervision (engineering) ## License From 242784ff54d4be98d7ebfeb610c510d83bae20a0 Mon Sep 17 00:00:00 2001 From: Danny Salman Date: Mon, 5 Sep 2022 04:06:28 -0400 Subject: [PATCH 7/8] address PR feedback --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 943e5c78..018774b4 100644 --- a/README.md +++ b/README.md @@ -131,10 +131,12 @@ Please stay tuned for the steps to translate the documentation. - [@mxinden](https://github.com/mxinden): libp2p steward (engineering), primarily rust-libp2p - [@marten-seemann](https://github.com/marten-seemann): libp2p steward (engineering), primarily go-libp2p - [@MarcoPolo](https://github.com/MarcoPolo): libp2p steward (engineering), primarily go-libp2p -- [@jennijuju](https://github.com/jennijuju): program management (engineering) +- [@jennijuju](https://github.com/jennijuju): documentation management (engineering) - [@p-shahi](https://github.com/p-shahi): libp2p project management (engineering) - [@BigLep](https://github.com/BigLep): interplanetary management and supervision (engineering) ## 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**](https://creativecommons.org/licenses/by/4.0/). +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**](https://creativecommons.org/licenses/by/4.0/). From 339d9713c6262a1798d7ca4652eb13a83ca4e5cf Mon Sep 17 00:00:00 2001 From: Danny Salman Date: Mon, 5 Sep 2022 04:11:56 -0400 Subject: [PATCH 8/8] edits --- README.md | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 018774b4..f35857db 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ To create a production build, run: ```bash make build ``` + > This requires hugo & ipfs on your PATH You’ll find the final static site in the `public` directory. @@ -83,6 +84,7 @@ To serve the static files, run: ```bash make serve ``` + > This requires hugo & ipfs on your PATH Preview the site at http://localhost:1313. @@ -92,6 +94,7 @@ Run the following `make` command in the root directory to start a hot-reloading ```bash make dev ``` + > This requires hugo on your PATH Preview the site at http://localhost:1313. @@ -101,25 +104,26 @@ To add an preview the site on IPFS, build the site in the root directory by runn ``` 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 env var `DEBUG=true` to increase the verbosity of your chosen command. +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](https://gohugo.io/) -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](https://learn.netlify.app/en/) to present -the libp2p documentation. +The libp2p documentation site uses [Hugo](https://gohugo.io/) 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](https://learn.netlify.app/en/) 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](https://fleek.co/). -It reflects the latest commit on `master` and publishes at [https://docs.libp2p.io](https://docs.libp2p.io). +The CI/CD production workflow builds on the `master` branch and deploys the documentation site on [fleek](https://fleek.co/). It reflects the latest commit on `master` and publishes at [https://docs.libp2p.io](https://docs.libp2p.io). ### Translation @@ -127,13 +131,13 @@ Please stay tuned for the steps to translate the documentation. ## Primary maintainers -- [@DannyS03](https://github.com/DannyS03): primary contact, project organization & technical writing (engineering) -- [@mxinden](https://github.com/mxinden): libp2p steward (engineering), primarily rust-libp2p -- [@marten-seemann](https://github.com/marten-seemann): libp2p steward (engineering), primarily go-libp2p -- [@MarcoPolo](https://github.com/MarcoPolo): libp2p steward (engineering), primarily go-libp2p -- [@jennijuju](https://github.com/jennijuju): documentation management (engineering) -- [@p-shahi](https://github.com/p-shahi): libp2p project management (engineering) -- [@BigLep](https://github.com/BigLep): interplanetary management and supervision (engineering) +- [@DannyS03](https://github.com/DannyS03): primary contact, project organization & technical writing +- [@mxinden](https://github.com/mxinden): libp2p steward, primarily rust-libp2p +- [@marten-seemann](https://github.com/marten-seemann): libp2p steward, primarily go-libp2p +- [@MarcoPolo](https://github.com/MarcoPolo): libp2p steward, primarily go-libp2p +- [@jennijuju](https://github.com/jennijuju): documentation management +- [@p-shahi](https://github.com/p-shahi): libp2p project management +- [@BigLep](https://github.com/BigLep): interplanetary management and supervision ## License