diff --git a/FURPS/application/network_metrics_tracker.md b/FURPS/application/network_metrics_tracker.md new file mode 100644 index 0000000..d740bd1 --- /dev/null +++ b/FURPS/application/network_metrics_tracker.md @@ -0,0 +1,39 @@ +# Network Metrics Tracker FURPS + +## Functionality + +1. Metrics that can be learned from network observations are available +2. Display number of nodes discovered over discv5, by shard +3. Display number of nodes successfully connected to, by shard and user agent, in last hour, day, week +4. Display number of light protocol clients fleet nodes had a inbound connection of, by libp2p protocol, user agent, libp2p transport, and shard, in last hour, day, week; using unique peer id as identifier +5. Number of messages unique messages seen, by shard +6. Inbound and outbound bandwidth, by shard +7. Number of different content topics in last hour, day and week; considering full content topic and application name. +8. Average and max message size by shard +9. Messages stored by fleet store nodes: total size, number, oldest timestamp, by shard + +## Usability + +1. Metrics above are available publicly for the network of major integrations (Status, RAILGUN, TWN). + +## Reliability + +1. Metrics should be available 90% of the time. + +## Performance + +1. The data is updated at least hourly +2. At least 3 months of data is available + +## Supportability + +1. Grafana dashboards +2. Some metrics may be retrieved by a Waku monitor node with aggressive parameters, other from existing fleet nodes; + this includes running limited fleet nodes for other networks. + +## + (Privacy, Anonymity, Deployments) + +1. No IP or Peer Ids are tracked or displayed. +2. Dashboard deployed for The Waku Network +3. Dashboard deployed for Status Waku Network +4. Dashboard deployed for RAILGUN Waku Network \ No newline at end of file diff --git a/FURPS/core/mix.md b/FURPS/core/mix.md new file mode 100644 index 0000000..1220fb3 --- /dev/null +++ b/FURPS/core/mix.md @@ -0,0 +1,20 @@ +# Mixnet FURPS + +## Functionality + +1. Relay nodes can mount mixnet protocol, acting as entry, exit or mixnet nodes. +2. Nodes can discover mixnet relay and exit nodes using available peer discovery mechanisms. +3. Client nodes can send light push requests over the mixnet before delivery to a service node. +4. Client nodes can receive a response to a light push request over the mixnet. + +## Usability + +## Reliability + +## Performance + +## Supportability + +1. nwaku CLI + +## + (Privacy, Anonymity, Deployments) diff --git a/FURPS/core/waku_api.md b/FURPS/core/waku_api.md new file mode 100644 index 0000000..582ddd5 --- /dev/null +++ b/FURPS/core/waku_api.md @@ -0,0 +1,36 @@ +# Waku API FURPS + +(proposing to move away from "messaging api" to avoid confusion) + +## Functionality + +1. Setup, start and stop a Waku node. +2. Support edge node operation mode. +3. Support relay node operation mode. +4. Does automatic peer discovery based on the node platform and operation mode. +5. Returns health and connectivity information using proven heuristics. + +## Usability + +1. When setting up a Waku node, no need to specify what protocols to mount, only an operational mode (edge or relay). +2. Disconnection detection and recovery, and other peer management matters are automatically handled. +3. Developers do not need to specify the protocols used to send and receive messages; it is deduced from the mode of operation. +4. Developers pass and receive data to the API in types native to the wrapping language. +5. By default, auto-sharding is applied, meaning developers do not need to be concerned by sharding; pubsub topics are never exposed. + +## Reliability + +1. Sends a message using peer-to-peer reliability (service node redundancy for edge, optional store confirmation) +2. Receives messages using peer-to-peer reliability (service node redundancy for edge, periodic store query, periodic filter ping) + +## Performance + +## Supportability + +1. Nim library +2. Golang library +3. Browser + +## + (Privacy, Anonymity, Deployments) + +1. ... \ No newline at end of file diff --git a/draft-roadmap/README.md b/draft-roadmap/README.md index 37d1909..342bd7c 100644 --- a/draft-roadmap/README.md +++ b/draft-roadmap/README.md @@ -2,7 +2,59 @@ Finalised roadmap and milestones can be found on the [Logos roadmap](https://roadmap.logos.co/waku/). -Period in planning: 2025 H1 +Period in planning: 2025 H2 + +## Proposed Priorities + +### Whole Team + +1. **Support Status application**: continue integration of nwaku and provide new chat protocol stack. +2. **Support Logos Core**: ensure that any library and API we push to developers can be consumed in Logos Core; review and prioritize any requirements coming from Logos Core project contributors and developers. +3. **Developer and Contributor Experience:** Review and improve dev assets (docs) and set quality expectation across the team (docs provided with deliverables, etc); Review and take action to improve developer and contributor experience (nimble usage, vscode plugin, etc). + +### Core Team + +1. **Complete integration of nwaku in Status Desktop**. +2. **Simplify a reliable Waku API:** aka Messaging API, make it easier to consume Waku library; critical to enable easy development of Chat SDK. +3. **Upgrade Waku for the Web**: Ensure web applications built on The Waku Network are reliable. +4. **RLN mainnet and API:** Continue RLN migration to onchain tree + L2 testnet, and necessary steps to get RLN on mainnet; provide simple API for Chat SDK. +5. **[Nwaku in Status Mobile and Light Mode MVP](https://github.com/waku-org/pm/milestone/39)**: de-prioritised in favour of cleaning up Waku and RLN APIs for Chat SDK first. +6. **nwaku performance improvement**: Performance on mobile is critical, hence we will review benchmarks and potentially dedicate effort to this topic +(note there is some ongoing effort from Status fleet behaviour). + +#### Research Items + +1. RLN (as above) +2. **Incentivisation:** Deliver incentivisation PoC for reliability, scalability, risk (running own fleet) and sustainability. +3. **Decentralisation and privacy**: continue research work to further decentralised Waku protocols, specifically store, and increase anonymity properties with libp2p-mixnet + +### Chat/App Team + +1. **Chat SDK:** Build a chat SDK (new protocol), learning from Status’ experience. Focus for an iterative delivery of the foundational blocks. Targeting private chats and early RLN integration. + 1. Note that building blocks such as identity mgmt are being built for demos app like Qaku - alignment to define and provide common protocols is expected as we are not limited by existing Status chat protocol. + 2. Work in close partnership with the status-backend developers, to ensure that post-refactoring the SDK can be integrated with the least effort possible. Aim for early and iterative integration. + 3. Note that early Status backend design position chat SDK as backend for Communities too; early iteration may not provide the scale in terms of members per communities; but Status' requirement is noted. + 4. Minimum deliverable will be usability of Chat SDK in Logos Core; need to review the architecture expectation in terms of Logos Core plugin interaction chat sdk <> nwaku. +2. **Build demos and PoC apps**: Continue building PoC apps to teach how to hunt, dogfood and battle test libraries; as well as throwing ideas in the wild, experimenting and seeing what sticks; promising apps will have lib and specs implemented (e.g. Qaku and Logos Forum). + 1. Potentially expand the relevant platforms: from Web to Logos core, Nim/seaqt, Rust, etc. + 2. Integration with Codex still planned under this umbrella + 3. Review Logos Forum (Opchan) requirements; the 2025 Logos Movement Strategy is the new customer. + +### Business and Ecosystem Development Team (BD + Solution Eng) + +1. **Measure Success:** Develop and deploy tools to measure Waku success in terms of users, developers and contributors across all known Waku networks (Status, RAILGUN, TWN, etc) + 1. In partnership with BI. +2. **Waku Chat MVP:** Proceed with the same exercise done for [Waku MVP](https://www.notion.so/Waku-MVP-1838f96fb65c8039acabf8a6a1e689e7?pvs=21). + Consult with current and new leads on their *ideal* Chat SDK. + Understand how confident we are they would onboard on Waku if it is delivered and feedback to Chat/App team to take in account for prioritization. +3. **Support integrations**: support projects that want to build with Waku SDK and Chat SDK. +4. **Foster and join Nim ecosystem (nwaku):** Foster and participate in the Nim developer community inside and outside IFT. +5. **Join FOSS ecosystem:** Be an active part of the FOSS developer community. +6. **Continue planned Rust SDK work**: Messaging API and stable nwaku integration in Status Desktop and pre-requisites to a quality Rust SDK. + +### Status Priorities Review + +**Existing milestones**: - [Hardening and Scaling Foundations for Private Chats](https://roadmap.logos.co/waku/milestones/open/2025-hardening-and-scaling-foundations-for-private-chats): finishing off the work and descoping items that have been identified as unneeded. - [Nwaku in Status Desktop (Relay only)](https://roadmap.logos.co/waku/milestones/open/2024-nwaku-in-status-desktop): work continues, close to completion. @@ -10,6 +62,10 @@ Period in planning: 2025 H1 - [e2e reliability protocol](https://roadmap.logos.co/waku/milestones/open/2024-e2e-reliability-protocol): work continues, close to completion. - [Foundation for Communities Optimization](https://github.com/waku-org/pm/milestone/31): this includes finishing a migration, and move community traffic away from 1:1 chat so we complete the work. +**New work and priorities**: + +1. New Chat SDK (nim) and protocol stack + ## Draft Milestones Testing out new format, once approved: @@ -18,14 +74,67 @@ Testing out new format, once approved: - Deliverables are moved to GitHub issues - Waku FURPS remains in [FURPS](/FURPS/README.md) -- [Foundation for Communities Optimization](foundation_for_communities_optimisation.md) -- [RLN Mainnet](deploy_rln_onchain_tree_on_l2_testnet.md) -- [Hardening and Scaling Foundations for Private Chats](hardening_and_scaling_foundation_for_private_chat.md) -- [Upgrade Waku for the Web](https://github.com/waku-org/pm/milestone/43) -- [Logos Web Apps](formalize_logos_web_apps.md) -- [Explore Peer Discovery Gap](https://github.com/waku-org/pm/milestone/44) -- [Nwaku in Status Desktop (Relay only)](integrate_nwaku_in_status_desktop_relay_mode_only.md) -- [Nwaku in Status Mobile and Light Mode MVP](https://roadmap.logos.co/waku/milestones/open/2025-nwaku-in-status-mobile)https://github.com/waku-org/pm/milestone/44 -- [e2e reliability protocol](introduce_e2e_reliability_in_status.md) -- [Debugging Tools](https://github.com/waku-org/pm/milestone/38) -- [Messaging API](https://github.com/waku-org/pm/milestone/41) \ No newline at end of file +In order of priority. + +1. [Introduce E2E Reliability in Status Communities](./introduce_e2e_reliability_in_status.md) +2. [Foundation for Communities Optimisation](/draft-roadmap/foundation_for_communities_optimisation.md) +3. [Hardening and Scaling Foundations for Private Chat](/draft-roadmap/hardening_and_scaling_foundation_for_private_chat.md) +4. [Integrate nwaku in Status Desktop, relay mode only](/draft-roadmap/integrate_nwaku_in_status_desktop_relay_mode_only.md) +5. [Deploy RLN Onchain Tree on L2 Testnet](/draft-roadmap/deploy_rln_onchain_tree_on_l2_testnet.md) +6. [Define Incentivisation for RLNaaS](/draft-roadmap/define_incentivisation_for_rlnaas.md) +7. [Improve DevEx: API, TWN, Metrics, Docs](/draft-roadmap/improve_devex_api_twn_metrics_docs.md) +8. [Introduce mixnet for message sending](/draft-roadmap/introduce_mixnet_for_message_sending.md) +9. [Formalize Logos Web Apps](/draft-roadmap/formalize_logos_web_apps.md) +10. [Introduce Chat SDK by enabling basic one-to-one chats]() TODO: should be added by https://github.com/waku-org/pm/pull/303 +11. [Integrate RLN with Waku API](/draft-roadmap/integrate_rln_with_waku_api.md) +12. [Streamline DevEx: Mobile, Rust and Web dev](/draft-roadmap/streamline_dev_ex_local_dev_rust.md) +13. Incentivisation follow-up + +Pushed to 2026 +- WebTransport: depending on nim-libp2p (delivery Q4) +- REST API for Waku API: Useful for DST/QA, but let's focus on Status, Chat SDK, and Rust first + +Not yet planned/not sure: +- nwaku performance on mobile: let's focus on finishing desktop integration and getting API ready for Chat SDK + RLN +- quic: need to review where to put it, should be easy. +- Follow-up steps for incentivization: part of current milestone is to produce a roadmap. +- RLN mainnet and audit -> probably wait for Status L2 mainnet? + +### Business Development Milestones + +TODO + +## Gantt + +TODO: fix dates + +```mermaid +gantt + title Waku 2025H2 + dateFormat YYYY-MM-DD + axisFormat %b + section core research + E2E Reliability: 2025-07-01, 2025-08-01 + RLN Onchain Tree: 2025-07-01, 2025-08-01 + Incentivization: 2025-07-01, 2025-08-01 + Mixnet: 2025-07-01, 2025-12-31 + section nwaku + Status Desktop: 2025-07-01, 2025-08-01 + RLN Onchain Tree: 2025-07-01, 2025-08-01 + Improve DevEx (API): 2025-07-01, 2025-10-01 + Improve DevEx (TWN): 2025-07-01, 2025-09-01 + Streamline DevEx (Mobile, Rust): 2025-09-01, 2025-12-31 + RLN Library: 2025-08-01, 2025-12-31 + section js-waku + Improve DevEx (API): 2025-07-01, 2025-10-01 + Improve DevEx (TWN): 2025-07-01, 2025-10-01 + RLN Library: 2025-07-01, 2025-09-01 + Streamline DevEx (Local dev): 2025-10-01, 2025-12-31 + section app-chat + E2E Reliability: 2025-07-01, 2025-08-01 + Communities Opt: 2025-07-01, 2025-08-01 + Foundations Private Chats: 2025-07-01, 2025-08-01 + Improve DevEx (metrics): 2025-07-01, 2025-09-01 + Logos Web Apps: 2025-07-01, 2025-12-31 + Chat SDK: 2025-07-01, 2025-12-31 +``` \ No newline at end of file diff --git a/draft-roadmap/deploy_rln_onchain_tree_on_l2_testnet.md b/draft-roadmap/deploy_rln_onchain_tree_on_l2_testnet.md new file mode 100644 index 0000000..c5308e3 --- /dev/null +++ b/draft-roadmap/deploy_rln_onchain_tree_on_l2_testnet.md @@ -0,0 +1,89 @@ +# Deploy RLN onchain tree on L2 Testnet + +**Estimated date of completion**: 30 June 2025 + +**Resources Required for 2025H2**: +- {roles and % application to it} +- {external services consumed (Vac/IFT)} +- {infrastructure} + +This is a split of RLN mainnet milestone which grew too large in scope. + +Once complemented, the economical behaviour of RLN will have been specified, +implemented and discussed with the Status team. +An implementation of RLN for light clients will also be done, to demonstrate RLN’s UX with onchain Merkle tree. +Finally, the smart contract will be deployed on a Linea-based L2 testnet and used by The Waku Network. + +It will then be possible to design the usage of RLN in Chat SDK. + +**deliverables**: https://github.com/waku-org/pm/milestone/34 + +## [Implement RLN smart contract for paid, multilevel memberships](https://github.com/waku-org/pm/issues/228) + +**Owner**: research + +**Feature**: [RLN Smart Contract](/FURPS/core/rln_smart_contract.md) + +**FURPS**: + +- F1. RLN rate limit can be defined in terms of multiple messages per epoch. +- F2. RLN rate limit is set at membership insertion +- F3. RLN proof generation and validation only requires Web3 RPC `call`s, no blockchain events or initialisation are needed. +- F4. An ERC-20 token deposit is needed to insert a membership +- U1. Application developers can set RLN rate limit at insertion. + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## [TWN supports RLN onchain tree and deposits, existing memberships only](https://github.com/waku-org/pm/issues/286) + +**Owner**: nwaku + +**Feature**: [RLN Smart Contract](/FURPS/core/rln_smart_contract.md) + +**FURPS**: + +- F3. RLN initialization only requires Web3 RPC `call`s, no blockchain events are needed. +- U2. User do not need to wait for merkle tree synchronization and building to start relaying + or sending messages. +- P1. New node setup with an RLN membership can be ready to verify RLN proof within 5s, + no matter the size of the tree **(Vac-DST)**. +- +1. Smart Contracts are deployed on Linea Testnet. +- +2. TWN uses smart contracts deployed on Linea Testnet. + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## [RLNv2 Web management interface](https://github.com/waku-org/pm/issues/281) + +**Owner**: js-waku + +**Feature**: [RLN Membership Management](/FURPS/application/rln_membership_management.md) + +**FURPS**: + +- F1. Can generate RLN credentials. +- F2. Can insert RLN membership in smart contract, with accompanying deposit. +- F3. Can extend RLN membership on smart contract. +- F4. Can withdraw deposit from smart contract. +- F5. Membership credentials are encrypted by default on local disk. +- U1. RLN membership details can be exported and imported. +- U2. Deployment details (address, chain id) are persisted by library and in exports. +- R1. Import and exports are interoperable across all implementations. +- +1. Deployed on https://rln.waku.org +- +2. Available for Linea Sepolia Testnet contracts. +- +3. Proof generation and validation is out of scope. + +For S1. Browser application, using web3 wallet browser extensions. + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) diff --git a/draft-roadmap/improve_devex_api_twn_metrics_docs.md b/draft-roadmap/improve_devex_api_twn_metrics_docs.md new file mode 100644 index 0000000..942faf0 --- /dev/null +++ b/draft-roadmap/improve_devex_api_twn_metrics_docs.md @@ -0,0 +1,170 @@ +# Improve DevEx: API, TWN, Metrics, Docs + +**Estimated date of completion**: {Enter date} + +**Resources Required for 2025H2**: +- {roles and % application to it} +- {external services consumed (Vac/IFT)} +- {infrastructure} + +Proceed with a number of improvements to the developer experience on Waku, for both internal and external purposes. +This includes: + +- improving The Waku Network reliability for Logos apps and other web apps +- simplifying the Waku API +- measuring Waku usage across all integrations +- review and setting strategy for Waku documentation + + +**FURPS**: + +- [{Feature Name}]({path/to/furps/file}): {list of furps: F1, etc} +- [Network Metrics Tracker](/FURPS/application/network_metrics_tracker.md): all + +**deliverables**: + +(TODO: adjust FURPS for existing deliverables) +- [Global Network Metrics](https://github.com/waku-org/pm/issues/295) +- [Scalable Data Sync in Browser](https://github.com/waku-org/pm/issues/280) +- [Improved Browser Bootstrap](https://github.com/waku-org/pm/issues/290) +- [Waku Sync](https://github.com/waku-org/pm/issues/132) + +TODO: quic PoC + +## Define and Implement Light Push Error codes in nwaku + +**Owner**: nwaku + +**Feature**: [Light Push](/FURPS/core/light_push.md) + +**FURPS**: +- F4. Supports comprehensive error codes for various failure scenarios. +- U4. Provides descriptive error messages in responses. +- R2. Status codes indicate the best recovery method (retry, discard service node or irrecoverable failure). +- R3. 80% message transmission success rate on live Status network (service node from both Status Desktop and fleet Waku instances) + +For S1. Linux amd64 CLI as service node +Includes spec delivery + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Implement Light Push Error codes in The Browser + +**Owner**: js-waku + +**Feature**: [Light Push](/FURPS/core/light_push.md) + +**FURPS**: +- F4. Supports comprehensive error codes for various failure scenarios. +- U4. Provides descriptive error messages in responses. +- R2. Status codes indicate the best recovery method (retry, discard service node or irrecoverable failure). + +For S2. Browser as client +Spec delivery not included. + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Introduce Waku API in the Browser + +**Owner**: js-waku + +**Feature**: [Waku API](/FURPS/core/waku_api.md) + +**FURPS**: +- F1. Setup, start and stop a Waku node. +- F2. Support edge node operation mode. +- F4. Does automatic peer discovery based on the node platform and operation mode. +- F5. Returns health and connectivity information using proven heuristics. +- U1. When setting up a Waku node, no need to specify what protocols to mount, only an operational mode (edge or relay). +- U2. Disconnection detection and recovery, and other peer management matters are automatically handled. +- U3. Developers do not need to specify the protocols used to send and receive messages; it is deduced from the mode of operation. +- U4. Developers pass and receive data to the API in types native to the wrapping language. +- U5. By default, auto-sharding is applied, meaning developers do not need to be concerned by sharding; pubsub topics are never exposed. +- R1. Sends a message using peer-to-peer reliability (service node redundancy, optional store confirmation) +- R2. Receives messages using peer-to-peer reliability (service node redundancy, periodic store query, periodic filter ping) + +For S3. Browser + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Introduce Waku API in nwaku + +**Owner**: nwaku + +**Feature**: [Waku API](/FURPS/core/waku_api.md) + +**FURPS**: +- F1. Setup, start and stop a Waku node. +- F3. Support relay node operation mode. +- F4. Does automatic peer discovery based on the node platform and operation mode. +- F5. Returns health and connectivity information using proven heuristics. +- U1. When setting up a Waku node, no need to specify what protocols to mount, only an operational mode (edge or relay). +- U2. Disconnection detection and recovery, and other peer management matters are automatically handled. +- U3. Developers do not need to specify the protocols used to send and receive messages; it is deduced from the mode of operation. +- U4. Developers pass and receive data to the API in types native to the wrapping language. +- U5. By default, auto-sharding is applied, meaning developers do not need to be concerned by sharding; pubsub topics are never exposed. +- R1. Sends a message using peer-to-peer reliability (service node redundancy, optional store confirmation) +- R2. Receives messages using peer-to-peer reliability (service node redundancy, periodic store query, periodic filter ping) + +For: +- S1. Nim library; used by chat SDK +- S2. Golang library; used by status-go + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Review Documentation and Define Guidelines + +**Owner**: {one waku subteam} + +(No FURPS) + +- [ ] Review the current developer documentation +- [ ] And contributor doc +- [ ] Define a guideline for Waku teams to follow when contributing to documentation +- [ ] Setup an initial structure + +## Use Protobuf to transfer data from Wrapper to nwaku library PoC TBC + +**Owner**: {one waku subteam} + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## {Name of deliverable 1 - eg "improve feature X for the browser"} + +**Owner**: {one waku subteam} + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) \ No newline at end of file diff --git a/draft-roadmap/integrate_rln_with_waku_api.md b/draft-roadmap/integrate_rln_with_waku_api.md new file mode 100644 index 0000000..2df6200 --- /dev/null +++ b/draft-roadmap/integrate_rln_with_waku_api.md @@ -0,0 +1,120 @@ +# Integrate RLN With the Waku API + +**Estimated date of completion**: {Enter date} TODO + +**Resources Required for 2025H2**: +- nwaku engineer TODO +- 1 js-waku engineer for 2 months (til 30 Aug) +- core research/test engineer? TODO +- chat sdk engineer TODO +- Support from Vac/ACZ to get zerokit working in the browser. +- {infrastructure} + +Deliver a native RLN library with a deliberate API to manage RLN memberships, as well as proof verification and generation. +This includes extracting RLN Relay as a relay plugin validation strategy, that can then be passed internally to nwaku node +as any other strategy. + +Once delivered, usage of Chat SDK of RLN becomes possible, with clear API to instantiate nwaku library with RLN, as well +as API to manage RLN membership. + +Introduce RLN proof generation and validation in the Browser. RLN API should be similar across all implementations. + +Finally, migrate to Status network L2 testnet and improve UX issues discovered via dogfooding such as rate of RPC Calls. + +**FURPS**: + +- [{Feature Name}]({path/to/furps/file}): {list of furps: F1, etc} TODO + +**deliverables**: + +## Implement RLN membership management in nwaku library + +**Owner**: nwaku + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Implement RLN Onchain Tree Proof generation and verification in the Browser + +**Owner**: js-waku + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Extract RLN as a plug-in library from nwaku + +**Owner**: nwaku + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Deploy RLN Contracts to Status L2 testnet + +**Owner**: nwaku + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Improve RLN UX by reducing Web3 RPC calls + +TODO: other improvements may be flagged as we dogfood the previous RLN milestone. + +**Owner**: nwaku + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## {Name of deliverable 1 - eg "improve feature X for the browser"} + +**Owner**: {one waku subteam} + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) \ No newline at end of file diff --git a/draft-roadmap/introduce_mixnet_for_message_sending.md b/draft-roadmap/introduce_mixnet_for_message_sending.md new file mode 100644 index 0000000..22e7c4c --- /dev/null +++ b/draft-roadmap/introduce_mixnet_for_message_sending.md @@ -0,0 +1,31 @@ +# Introduce Mixnet For Message Sending + +**Estimated date of completion**: 30 Sep 2025 + +**Resources Required for 2025H2**: +- 1 core research engineer for 3 months + +A PoC implementation to improve anonymity in Waku message publishing by mixing Waku Lightpush requests and responses. + +**FURPS** (see deliverables) + +**GitHub Milestone and deliverables**: + +## [Integrate libp2p mix into lightpush](https://github.com/waku-org/nwaku/issues/3280) + +**Owner**: core research + +**Feature**: [Mix](/FURPS/core/mix.md) + +**FURPS**: +- F1. Relay nodes can mount mixnet protocol, acting as entry, exit or mixnet nodes. +- F2. Nodes can discover mixnet relay and exit nodes using available peer discovery mechanisms. +- F3. Client nodes can send light push requests over the mixnet before delivery to a service node. +- F4. Client nodes can receive a response to a light push request over the mixnet. + + +**Checklist**: +- [ ] Specs: link to specs +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) diff --git a/draft-roadmap/streamline_dev_ex_local_dev_rust.md b/draft-roadmap/streamline_dev_ex_local_dev_rust.md new file mode 100644 index 0000000..c60ac8b --- /dev/null +++ b/draft-roadmap/streamline_dev_ex_local_dev_rust.md @@ -0,0 +1,97 @@ +# Streamline DevEx: Mobile, Rust and Web dev + +**Estimated date of completion**: {Enter date} TODO + +**Resources Required for 2025H2**: +- {roles and % application to it} +- {external services consumed (Vac/IFT)} +- {infrastructure} + +Complete the Waku API implementation in nwaku by implementing edge node mode (Status' Light Mode). + +Streamline the Developer Experience by delivering a Rust SDK that implements the full Waku API and is available on crates.io. +As well as building an easy-to-use local dev environment from the browser, enabling developers to build web apps without +relying on external connectivity; as well as opting in and out of RLN, and include a local RLN dev environment. + +Finalize the integration of nwaku in Status application by setting up nwaku-based build for Mobile platforms. + +**FURPS**: + +- [{Feature Name}]({path/to/furps/file}): {list of furps: F1, etc} + +**deliverables**: + +## Edge Mode in Nwaku + +**Owner**: nwaku + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) TODO + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Nwaku in Status Mobile + +**Owner**: nwaku + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) TODO + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Waku Rust SDK + +**Owner**: nwaku + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) TODO + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD) + +## Local RLN Dev Harness + +**Owner**: ? (nwaku? core-research?) TODO + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD)\ + +## Local Web Dev Harness + +**Owner**: js-waku + +**Feature**: [{Feature Name (only 1)}]({path/to/furps/file}) + +**FURPS**: +- {F1. copy-paste full furps statement} + +**Checklist**: +- [ ] Specs: link to specs and/or API definition +- [ ] Code: link to GitHub issues/PRs/Epic +- [ ] Dogfood: link to dogfooding session/artefact +- [ ] Docs: links to README.md or docs.waku.org (TBD)