diff --git a/content/waku/collaboration/guidelines-for-collaboration.md b/content/waku/collaboration/guidelines-for-collaboration.md new file mode 100644 index 000000000..d656dcee1 --- /dev/null +++ b/content/waku/collaboration/guidelines-for-collaboration.md @@ -0,0 +1,43 @@ +--- +title: Guidelines for Collaboration +tags: + - Waku + - collaboration +date: 2024-07-18 +lastmod: 2024-07-18 +--- + +# Guidelines for Collaboration + +## Visibility Into Work and Productivity + +- **Daily Standup** The `stand-up` channel on the Waku Discord server is where core contributors share their daily stand up summarizing their daily planned tasks. +- **Weekly Report**: Every Friday, all team members must add a comment to the *Epic* GH issue they own and worked on the past week or planned to work on next week. See [Waku project management](https://github.com/waku-org/pm#readme) for more. +- **Track your work with Github issues**: Make sure to always have an open Github issue corresponding to your current task. Follow the following post for some [insights on how to write good Github issues](https://wiredcraft.com/blog/how-we-write-our-github-issues/). +- **Quality Github pull requests**: Github issues are (typically) followed by one or multiple Github pull requests (PR) to address the task(s) set out in the issue. PRs should be of *reasonable size* and with *proper documentation*. All commits within the PR [should be signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits). Do not forget to [request PR review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review) from your peers when your PR is ready. Before merging an open PR, all commits should be rebased on master and squashed into a single commit with a [semantic commit message](https://www.conventionalcommits.org/en/v1.0.0/). Use the following guides on how to make a good PR + - [Anatomy of a perfect pull request](https://opensource.com/article/18/6/anatomy-perfect-pull-request) + - [How to write a perfect pull request](https://github.blog/2015-01-21-how-to-write-the-perfect-pull-request/). This post expands on good PR documentation and communication. +- **PR Reviews:** Spend a portion (10-20%) of your daily work reviewing other team members’ Pull requests. This will allow a swift and smooth development process. +- **Seek feedback** Do not hesitate to seek feedback from the senior members of the team, especially those who work closely with you. +- **Communicate effectively:** Know the team members that are relevant to your project and get their feedback and comments on your project when need be. + +## Communication media + +- **Basic principle:** Waku is an open-source protocols and software. We are part of a wider community. As such, your first instinct should be to communicate *as openly as possible* in the forum/channel most suited to your query. That said, we have channels for team-internal communications that relate to project management, team travel or other more personal conversations. +- **Discord server:** it takes a while to get used to the bewildering number of channels on the Waku Discord server. Here are some guidelines to help you get started: + - `#intros`: a good place to introduce yourself to the community once you’ve joined + - `#gm`: a quick “good morning” when you start your day adds to a friendly environment and shows other community members that you’re online + - `#stand-up`: daily one-liners indicating what your focus will be for the day + - `#support`: general support questions related to Waku protocols or the organisation + - `#nwaku-contribute`, `#go-waku-contribute`, `#js-waku-contribute`: discussions related to the nim, go and JavaScript Waku v2 clients respectively + - `#team-pm-private`: team-internal discussions related to Waku Product project management. + - We maintain various team-internal channels, including `#afk`, `#watercooler`, `#events`, and more, which facilitate sharing while we work +- **Examples:** + - *You’re getting started and have a question related to the nwaku codebase:* ask away in the open `#nwaku-contribute` channel. Feel free to tag specific people that you think may help, but don’t be too surprised if other community members jump in with an answer. + - *While reading a Waku RFC you have a suggestion on how to improve the protocol:* ping the team on the open `#support` channel for general question about protocols, or `#rfc` if it is about phrasing or clarity in the RFC. You could also create a GH issue in the [vacp2p/rfc](https://github.com/vacp2p/rfc) repository. + - *You want to inform the team that you’re off sick:* use the team-internal `#afk` channel. + +## Autonomy and Motivation + +- **Alignment with principles**: Waku follows a set of principles as described in https://status.im/about/, a good understanding of those is vital to making a meaningful contribution to the team. Should you have any questions regarding the principles, do not hesitate to reach out to your team members for more insights and explanations. +- **Familiarize yourself with relevant tools and tech** Your work involves knowledge of the basics of Git and [Github](https://docs.github.com/) e.g., creating issues, pull requests (PRs), branches, merging, rebasing, etc. Spend some time and familiarize yourself with these concepts. diff --git a/content/waku/collaboration/onboarding-guide.md b/content/waku/collaboration/onboarding-guide.md new file mode 100644 index 000000000..5e252b307 --- /dev/null +++ b/content/waku/collaboration/onboarding-guide.md @@ -0,0 +1,100 @@ +--- +title: Onboarding Guide +tags: + - Waku + - collaboration +date: 2024-07-18 +lastmod: 2024-07-18 +--- + +# Onboarding guide + +Welcome to Waku! There’s quite a lot to learn so take your time. Here are a few links and some things to start with. + +## Vac & Waku + +Vac is a wide team that builds public good protocols for the decentralized web - [vac](https://vac.dev/). + +Waku originated as an incubation project within Vac with the goal of defining and implementing decentralized communication protocols. We have since evolved into a standalone team, while maintaining close collaboration with Vac, which continues to facilitate the RFC process - [waku](https://waku.org/). + +At Waku, each team member may split their working hours between research and sw development, depending on the team goals and personal interests. + +- Research: describe protocols in a formal/scientific way - https://github.com/waku-org/research. +- SW development: materialization of the protocols into software components - https://github.com/waku-org. + +## Collaboration Guideline + +Have a read at our [Collaboration Guidelines](https://www.notion.so/Guidelines-for-Collaboration-59cf0b0b6c43419fb2467ca5ac36fed1?pvs=21) to acquaint yourself with our collaboration best practices. + +## Starter tasks + +- Complete the BambooHR [tasks](https://statusim.bamboohr.com/inbox/onboarding/) (can be followed in parallel with other tasks.). +- Try out the [Status app](http://status.im/) +- Get familiar with Nim. +Recommendations: + - [Status Nim Style Guide](https://status-im.github.io/nim-style-guide/) + - [Nim Language](https://nim-lang.org/) + - “Nim in Action” book (Dominik Picheta) + - “Mastering Nim” book (Andreas Rumpf) + - [Exercism course on Nim](https://exercism.org/tracks/nim/) + - “[Computer Programming with the Nim Programming Language](https://ssalewski.de/nimprogramming.html)” book (Stefan Salewski) +- Meet the Waku specification +Waku is a communication layer for Web3. +There are three main Waku-client implementations: + - [nwaku](https://github.com/waku-org/nwaku): Nim implementation aimed to be used by the infrastructure nodes. + - [go-waku](https://github.com/waku-org/go-waku): Golang implementation aimed to be used by the Desktop app. + - [js-waku](https://github.com/waku-org/js-waku): JavaScript implementation designed to be run by web browsers. + + Aside from the Waku project, Vac also gives a big contribution in the next ones: + + - Logos, a Blockchain protocol whose clients would be built in Nim and Rust - [Logos](https://logos.co/). + - Codex, a decentralized storage protocol (IPFS) - [code-research](https://github.com/status-im/codex-research), [nim-codex](https://github.com/status-im/nim-codex). +- Build [nwaku](https://www.notion.so/2fd36c23256d4850b22535b8623bd6e5?pvs=21). We encourage all core contributors to run a long-lived nwaku node as an operator. More details [here](https://www.notion.so/a78faaa8e76d44fd963415999408ed11?pvs=21). +Useful resources: + - [Examples](https://github.com/waku-org/nwaku/tree/master/examples/) + - [Docs](https://github.com/waku-org/nwaku/tree/master/docs) +- Skim specs (primarily Vac, but also Status) and try to get a picture of how things fit together. You do not have to read all the specifications all at once (it may get a bit confusing). We suggest start reading them in the following order, it is just a suggestion, feel free to do it the way you want!:). + +While reading RFCs note that there are two versions of WAKU namely WAKU1 and WAKU2. Vac RFCs related to WAKU2 are WAKU2 prefixed whereas other ones are prefixed by WAKU or WAKU1. For example, 8/WAKU-MAIL and 13/WAKU2-STORE are RFCs for WAKU1 and WAKU2, respectively. + - 1/COSS + - 10/WAKU2 + - 16/WAKU2-RPC + - 11/WAKU2-RELAY | 14/WAKU2-MESSAGE | 23/WAKU2-TOPICS | 26/WAKU2-PAYLOAD + - 12/WAKU2-FILTER + - 19/WAKU2-LIGHTPUSH + - 13/WAKU2-STORE + - 18/WAKU2-SWAP + - 27/WAKU2-PEERS + - 15/WAKU2-BRIDGE +- Join the [Vac](https://discord.gg/zRKyr8ve92), [Waku](https://discord.gg/KT2gBKv2ma), and [Nimbus](https://discord.gg/XRxWahP) Discord servers and say hi! +- Recommended: go through the list of existing open issues in the project repo (nwaku, go-waku or js-waku) you’ll mostly be working on and familiarise yourself with the current state of the project. This may take a while, but is an excellent exercise to get acquainted with some important conversations and project history. We encourage new contributors to ask questions in the comment sections of any past issues. You could even self-assign some issues that’s currently unassigned which you’d like to tackle! For this, the `good-first-issue` tag on Github may come in as a handy filter. + +## Resources + +### Vac + +- [Vac overview](https://hackmd.io/@vac/main/https%3A%2F%2Fhackmd.io%2Fz-YmYxhXTSqNVZjnbWYHxw) +- [Vac.dev writeups](https://vac.dev/) +- [Vac RFCs/Specs](https://rfc.vac.dev/) +- [COSS process](https://rfc.vac.dev/spec/1/) +- [10/WAKU2 main spec](https://rfc.vac.dev/spec/10/) +- [Vac forum](https://forum.vac.dev/) +- [Vac 2021 Q3 priorities](https://forum.vac.dev/t/vac-teams-priorities-for-q3-2021/86) +- [Waku v2 training session](https://drive.google.com/file/d/19P3oDNXGBDClfcS6Sgp0t9LYr3UbIFGt/view) +- [Vac Sustainability and business workshop](https://forum.vac.dev/t/vac-sustainability-and-business-workshop/116) + +### Status + +- [Status whitepaper](https://status.im/files/whitepaper.pdf) +- [Status principles](https://status.im/about/) +- [Status main client spec](https://specs.status.im/spec/1) +- [Status specs](https://specs.status.im/) +- [Status Discuss](https://discuss.status.im/) +- [Nimbus team](https://nimbus.team/) +- [nim-libp2p](https://github.com/status-im/nim-libp2p) + +### Ecosystem + +- [Ethereum](https://ethereum.org/en/) +- [libp2p](https://libp2p.io/) +- [libp2p specs](https://github.com/libp2p/specs/) \ No newline at end of file diff --git a/content/waku/index.md b/content/waku/index.md index 07b0f7138..45e4ed3ce 100644 --- a/content/waku/index.md +++ b/content/waku/index.md @@ -5,10 +5,11 @@ tags: - Roadmap - overview date: 2023-08-22 -lastmod: 2024-03-09 +lastmod: 2024-07-18 --- ## Roadmap Overview To learn more about Waku please visit the [website](https://waku.org), [github](https://github.com/waku-rg), and [docs](https://docs.waku.org). +- [Collaboration](waku/collaboration) - [Process](waku/process.md) - [Weekly updates](tags/waku-updates) - [Reports](waku/reports.md)