pm/draft-roadmap/streamline_dev_ex_local_dev_rust.md
2025-06-10 22:19:14 +10:00

126 lines
4.4 KiB
Markdown

# Streamline DevEx: Mobile, Rust and Web dev
**Estimated date of completion**: {Enter date} TODO
**Resources Required for 2025H2**:
- {roles and % application to it}
- nwaku 1 eng during 1 month 70% until 30 Sep - start 1st Sep
- js-waku 1 eng 70% 1-19th Sep
- {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.
## Strategic Objective
TODO: Clarify with Leonard
## FURPS
TODO
## Risks
| Risk | (Accept, Own, Mitigation) |
|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| nwaku performance | Performance of nwaku in comparison to go-waku will be measured by DST during H2 and may raise issues that will become blockers for pratical usage of nwaku in Mobile. |
| Publishing to crates.io | One of the challenge to publish libwaku on crates.io is the package size. Several strategy may be developed and tried to find a way to distribute Nim-based Rust crates. |
| Local dev harness | Creating a local dev environment may be a challenge due to the nature of Waku and RLN, as we would need to locally coordinate bootstrap and blockchain emulation. |
## 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 Web Dev Harness
TODO: update milestone
1 js-waku engineer, 70% cap allocated;
start 1st Sep, end 19th Sep;
**Owner**: js-waku
**Feature**: [Local Web Dev Harness](/FURPS/application/local_web_dev_harness.md)
**FURPS**:
- F1. Runs local Waku node to test Web application without relying on external connectivity.
- F2. js-waku runs in NodeJS for testing and CI purposes.
- U1. Developer only need to run a script or preset to start local Waku node and have their web app connect to it.
- U2. Potential WSS/HTTPS issues are worked around so that developer does need to manually generate or import SSL certificates.
- U3. There is an easy option for the developer to bootstrap and connect to local node, instead of external peers.
- S1. Linux and Mac development environments.
- S2. Local network without RLN.
- S3. Chrome and Firefox browsers.
**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
**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)\