Rework milestones, group dev ex together

This commit is contained in:
fryorcraken 2025-06-03 12:33:11 +10:00
parent 81937a0a89
commit 7e0f272e27
No known key found for this signature in database
GPG Key ID: A82ED75A8DFC50A4
10 changed files with 258 additions and 149 deletions

View File

@ -0,0 +1,27 @@
# JS-Waku FURPS
TODO
## Functionality
1. ...
## Usability
1. ...
## Reliability
1. ...
## Performance
1. ...
## Supportability
1. ...
## + (Privacy, Anonymity, Deployments)
1. ...

View File

@ -29,3 +29,4 @@ Assuming messages in a group are sent at least every `S` seconds.
## Supportability
1. Applied to Communities channels on Status Desktop
2. For Web apps as a developer library.

34
FURPS/core/waku_api.md Normal file
View File

@ -0,0 +1,34 @@
# 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 specificy the protocols used to send and receive messages; it is deduced from the mode of operation.
## Reliability
1. Sends a message using peer-to-peer reliability (service node redundancy, optional store confirmation)
2. Receives messages using peer-to-peer reliability (service node redundancy, periodic store query, periodic filter ping)
## Performance
## Supportability
1. Nim library
2. Golang library
3. Browser
## + (Privacy, Anonymity, Deployments)
1. ...

View File

@ -122,9 +122,9 @@ A _Deliverable_:
- docs
Finally, for _Tasks_ that do not belong to a _Deliverable_:
- MUST qualify either as (with related GitHub labels)
- `bug`: bugs reported by users or discovered internally, SHOULD be linked back to a corresponding _FURPS_ and _Milestone_
- `test`: maintaining and fixing broken tests, SHOULD ideally be linked back to a corresponding _FURPS_ and _Milestone_
- MUST qualify either as (with related GitHub labels):
- `bug`: bugs reported by users or discovered internally, SHOULD be linked back to a corresponding _FURPS_ and _Milestone_.
- `test`: maintaining and fixing broken tests, SHOULD ideally be linked back to a corresponding _FURPS_ and _Milestone_.
- `release`: work associated with releasing new versions.
- `dependencies`: work associated with updating dependency versions.

View File

@ -15,14 +15,9 @@ Period in planning: 2025 H2
### 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 by simplifying the API
and including p2p reliability. This is critical to enable fast Chat SDK development.
1. Deliver this API in nim (chat SDK), and Rust SDK, identified as the most promising SDK for community adoption;
in addition to Browser and nim (libwaku)
3. **Harden TWN for Web apps**: Web applications built on The Waku Network suffer from unreliable bootstrapping,
continue investigation and resolution of this as planned in *Upgrade Waku for the Web* milestone.
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.
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).
@ -79,36 +74,39 @@ Testing out new format, once approved:
- Deliverables are moved to GitHub issues
- Waku FURPS remains in [FURPS](/FURPS/README.md)
- [Define and Implement Peer-To-Peer Reliability Strategies](./define_p2p_reliability.md)
- [Introduce E2E Reliability in Status Communities](./introduce_e2e_reliability_in_status.md)
- [Foundation for Communities Optimisation](/draft-roadmap/foundation_for_communities_optimisation.md)
- [Hardening and Scaling Foundations for Private Chat]()
- [Deploy RLN Onchain Tree on L2 Testnet](/draft-roadmap/deploy_rln_onchain_tree_on_l2_testnet.md)
- [Integrate nwaku in Status Desktop, relay mode only](/draft-roadmap/integrate_nwaku_in_status_desktop_relay_mode_only.md)
- [Define Incentivisation for RLNaaS](/draft-roadmap/define_incentivisation_for_rlnaas.md)
- [Measure Waku Usage](/draft-roadmap/measure_waku_usage.md)
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]()
9. [Formalize Logos Web Apps]()
10. [Introduce Chat SDK by enabling basic one-to-one chats]()
11. [Streamline DevEx: Mobile, Rust and Web dev]()
#### P2P Reliability Implementation in the Browser
not planned yet:
- Move DST/QA to Waku API (REST API)
- Performance for mobile
- webtransport
- quic
TODO: It's actually done?
## Gantt
**Owner**: js-waku
**Feature**: [P2P Reliability](/FURPS/application/p2p_reliability.md)
**FURPS**:
- F1. Improves probability of message propagation through redundant publishing and receiving.
- F2. Enables detection and remedy of message losses between peers using Store or Filter based reliability strategies.
- F3. Enhances Lightpush reliability through service node pooling, redundant publishing, and failure detection.
- F4. Improves Filter reliability through redundant subscriptions and subscription health monitoring.
- U1. Provides feedback on message delivery status leveraging store protocol.
- U2. Automatically handles reconnection and retransmission when failures are detected.
For
- S1. Within browser environments (edge node mode)
**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)
```mermaid
gantt
title Waku 2025H2
dateFormat YYYY-MM-DD
axisFormat %b
section core research
e2e reliability: 2025-07-01, 2025-08-01
RLN: 2025-07-01, 2025-08-01
Incentivization: 2025-07-01, 2025-08-01
Mixnet: 2025-07-01, 2025-12-31
section nwaku
p2p reliability: 2025-07-01, 2025-08-01
Status Desktop: 2025-07-01, 2025-08-01
RLN: 2025-07-01, 2025-08-01
Dev
```

View File

@ -1,5 +1,12 @@
# [Define Incentivisation for RLNaaS](https://github.com/waku-org/pm/milestone/35)
**Estimated date of completion**: {Enter date}
**Resources Required for 2025H2**:
- {roles and % application to it}
- {external services consumed (Vac/IFT)}
- {infrastructure}
By the end of this milestone, we will have defined a roadmap and implemented a working proof of concept to incentivise node operators running Waku infrastructure for shared shards.
In general, Waku infrastructure consists of RLN Relay nodes both forming the decentralised routing backbone for Waku messages and providing a set of services on top of Waku that might be useful for applications.
@ -28,7 +35,7 @@ This is the first step to providing a sustainable way to scale the Status applic
- U2. A consumer node can select an RLNaaS provider based on their price and local reputation.
- R1. A consumer prefers new providers to known unreliable providers.
- R2. In a stable network, a client can find, pay and send a message via a RLNaaS provider (**Vac-QA**)
in 90% of cases **(Vac-DST)**
in 90% of cases **(Vac-DST)**.
- R3. A client can assess whether an RLNaaS provider has relayed their message (**Vac-QA**)
in 90% of cases **(Vac-DST)**.
- P1. Assuming a block time of 5 seconds,

View File

@ -1,88 +0,0 @@
# Define and Implement Peer-To-Peer Reliability Strategies
**Estimated completion date: TBD**
Last remains of *Direct Message Reliability* milestone.
Once delivered, the reliability of the Waku protocols will be maximised when used with decentralised light push and filter service nodes;
in mostly offline or frequently disconnected environments (mobile, laptop).
This may include some bandwidth overhead that can later be optimized when rolling out enhanced end-to-end reliability strategies.
This includes a high reliance on centralized store nodes.
User experience is catered for, in terms of delay of message retrieval and retention,
which is why store performance is also review and maximized for the current circumstances.
Limited effort will be spent on store performance as its relevance is expected to reduce mid-long term.
**FURPS** (see deliverables)
**Deliverables**:
<!--
Once the deliverables are created as GitHub issues, we can delete the content below
and just provide a list of GitHub issues, or even simpler, a link to the GitHub milestone that contain them.
Also copy the FURPS from deliverable here.
-->
## 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.
- R3. Status codes indicate the best recovery method (retry, discard service node or irrecoverable failure).
- R4. 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
- [ ] 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.
- R3. 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
- [ ] Code: link to GitHub issues/PRs/Epic
- [ ] Dogfood: link to dogfooding session/artefact
- [ ] Docs: links to README.md or docs.waku.org (TBD)
## PostgreSQL Optimisation Phase 1
**Owner**: nwaku
**Feature**: [Store](/FURPS/core/store.md)
**FURPS**:
- F6. Industry practices are applied to PostgreSQL setup to reach appropriate performance
- P5. Hash query of less than 10 hashes are served under 400ms; for a database less than 250 GB size and average message size under 500KiB **(Vac-DST)**.
- P6. Time range queries of less than 24 hours, with less than 10 content topics, are served under 400 ms; for a database less than 250 GB size and average message size under 500KiB **(Vac-DST)**.
Fora
- S1. Linux amd64 CLI as service node; and
- S2. PostgreSQL as database engine.
**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)

View File

@ -0,0 +1,149 @@
# 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)
## 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.
- R3. Status codes indicate the best recovery method (retry, discard service node or irrecoverable failure).
- R4. 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
- [ ] 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.
- R3. 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
- [ ] 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 specificy the protocols used to send and receive messages; it is deduced from the mode of operation.
- 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
- [ ] 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.
- F. 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 specificy the protocols used to send and receive messages; it is deduced from the mode of operation.
- 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
- [ ] 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
## {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
- [ ] Code: link to GitHub issues/PRs/Epic
- [ ] Dogfood: link to dogfooding session/artefact
- [ ] Docs: links to README.md or docs.waku.org (TBD)

View File

@ -1,19 +0,0 @@
# {Milestone Title - use verb}
_Extracted from TODO_
**Estimated date of completion**: {Enter date}
**Resources Required**:
- {roles and % application to it}
- {external services consumed (Vac/IFT)}
- {infrastructure}
{Milestone Description - what do we get once done}
**FURPS**:
- [Network Metrics Tracker](/FURPS/application/network_metrics_tracker.md): all
**deliverable**: https://github.com/waku-org/pm/issues/295