Skip to content

Conversation

jrainville
Copy link
Member

Adds FURPS for how Satus communities should work over Waku

I made them assuming the description was no longer on Waku but instead of Codex (or somewhere else magically).
Let me know if you want the current version too and I can add it

@jrainville jrainville requested a review from a team as a code owner August 1, 2025 20:12
@jrainville jrainville requested review from iurimatias and fryorcraken and removed request for a team August 1, 2025 20:12
@status-im-auto
Copy link
Member

status-im-auto commented Aug 1, 2025

Jenkins Builds

Click to see older builds (27)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 43d1ff7 #1 2025-08-01 20:19:59 ~7 min tests/nim 📄log
✔️ 43d1ff7 #1 2025-08-01 20:24:47 ~12 min macos/aarch64 🍎dmg
✔️ 43d1ff7 #1 2025-08-01 20:25:39 ~13 min tests/ui 📄log
✔️ 43d1ff7 #1 2025-08-01 20:29:17 ~16 min linux/x86_64 📦tgz
✔️ 43d1ff7 pr18485 2025-08-01 20:39:43 ~10 min tests/e2e 📊rpt
✔️ 43d1ff7 #1 2025-08-01 20:40:46 ~28 min windows/x86_64 💿exe
✔️ 43d1ff7 #1 2025-08-08 08:26:37 ~17 min linux/x86_64 📦tgz
✖️ 43d1ff7 pr18485 2025-08-08 08:47:59 ~21 min tests/e2e 📊rpt
✔️ 43d1ff7 #1 2025-08-09 14:13:42 ~17 min linux/x86_64 📦tgz
✔️ 43d1ff7 pr18485 2025-08-09 15:07:51 ~54 min tests/e2e 📊rpt
43d1ff7 #2 2025-08-13 15:17:27 ~6 min macos/aarch64 📄log
✔️ 43d1ff7 #2 2025-08-13 15:24:28 ~13 min tests/nim 📄log
✔️ 43d1ff7 #1 2025-08-13 15:26:56 ~15 min macos/aarch64 🍎dmg
✔️ 43d1ff7 #2 2025-08-13 15:29:36 ~18 min linux/x86_64 📦tgz
✔️ 43d1ff7 #2 2025-08-13 15:30:50 ~19 min linux/x86_64 📦tgz
✔️ 43d1ff7 #2 2025-08-13 15:35:21 ~23 min tests/ui 📄log
✔️ 43d1ff7 #2 2025-08-13 15:40:23 ~28 min windows/x86_64 💿exe
✖️ 43d1ff7 pr18485 2025-08-13 15:44:55 ~15 min tests/e2e 📊rpt
✖️ 43d1ff7 pr18485 2025-08-13 15:45:04 ~14 min tests/e2e 📊rpt
e7fbab5 #3 2025-08-14 19:42:18 ~3 min macos/aarch64 📄log
✔️ e7fbab5 #3 2025-08-14 19:46:27 ~7 min tests/nim 📄log
✔️ e7fbab5 #3 2025-08-14 19:51:53 ~13 min tests/ui 📄log
✔️ e7fbab5 #3 2025-08-14 19:54:53 ~16 min linux/x86_64 📦tgz
✔️ e7fbab5 #2 2025-08-14 19:55:54 ~17 min macos/aarch64-nwaku 🍎dmg
✔️ e7fbab5 #3 2025-08-14 19:58:52 ~20 min linux/x86_64-nwaku 📦tgz
✔️ e7fbab5 pr18485 2025-08-14 20:06:02 ~11 min tests/e2e 📊rpt
✔️ e7fbab5 #3 2025-08-14 20:06:54 ~28 min windows/x86_64 💿exe
Commit #️⃣ Finished (UTC) Duration Platform Result
6aa3e6d #3 2025-08-14 20:52:15 ~2 min macos/aarch64-nwaku 📄log
6aa3e6d #4 2025-08-14 20:52:15 ~2 min macos/aarch64 📄log
✔️ 6aa3e6d #4 2025-08-14 20:56:16 ~7 min tests/nim 📄log
✔️ 6aa3e6d #4 2025-08-14 21:02:17 ~13 min tests/ui 📄log
✔️ 6aa3e6d #4 2025-08-14 21:02:57 ~13 min linux/x86_64 📦tgz
✔️ 6aa3e6d #4 2025-08-14 21:11:12 ~22 min linux/x86_64-nwaku 📦tgz
✖️ 6aa3e6d pr18485 2025-08-14 21:13:45 ~10 min tests/e2e 📊rpt
✔️ 6aa3e6d #4 2025-08-14 21:14:47 ~25 min windows/x86_64 💿exe
4e5c832 #4 2025-09-05 14:09:54 ~3 min macos/aarch64-nwaku 📄log
✔️ 4e5c832 #5 2025-09-05 14:13:46 ~7 min tests/nim 📄log
✔️ 4e5c832 #5 2025-09-05 14:20:00 ~13 min tests/ui 📄log
✔️ 4e5c832 #5 2025-09-05 14:26:13 ~20 min linux/x86_64 📦tgz
✔️ 4e5c832 #5 2025-09-05 14:35:25 ~29 min windows/x86_64 💿exe
✔️ 4e5c832 pr18485 2025-09-05 14:37:18 ~10 min tests/e2e 📊rpt

- **Control node**: the sole authority for publishing official community description changes.
- **Token masters**: same rights as owners except cannot manage other token masters.
- **Admins**: same rights as token masters, except cannot deploy/mint/burn tokens.
- Messages must be available on Waku **store nodes** for **at least 30 days**.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is Store nodes here a hard requirement?

Or is the requirement that messages are queued for 30 days?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As per my other comments, I would move away from requirements that are imposed on specific tech, and instead, more functional requirements of the final product:

  • A user who was offline must eventually be able to retrieve all messages of the community, as long as they were offline for less than 30 days.
  • A user that was offline less than one week must be able to retrieve all missed messages within 5 minutes
  • A user that was offline for more than one week, and less than 30 days, must be able to retrieve all missed messages within 30 minutes

- Waku must ensure **delivery of messages to subscribed peers**, even under:
- Temporary disconnections
- Slow or lossy networks
- Waku store nodes must reliably store messages for **30 days**, and make them retrievable on demand.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate of F5?

## Functionality

- **Community messages** (channel posts, updates) must be sent and received via **Waku**.
- **Description change notifications** must be broadcast on Waku when the community description is updated via Codex.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Description change notifications** must be broadcast on Waku when the community description is updated via Codex.
- Participants must be notified of **Description changes**.

"Broadcast on Waku" implies that that all nodes need to be notfied rather than limited to community members.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would rephrase to:

"Users must be aware of changes on the community description" within 1 hour.

Also, I would define in more details "description":

  • logo
  • descriptive text
  • owner id
  • member ids

and then you can clarify for each (eg Logo + descriptive text) what is needed:

  • retrievable for any user, member or not
  • only members can see it, etc

And we can also start questioning things such as:

  • members of the community can get the list of all other members in the community.

- Temporary disconnections
- Slow or lossy networks
- Waku store nodes must reliably store messages for **30 days**, and make them retrievable on demand.
- Description change messages must be **deduplicated and verifiable**.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What particular properties need to be verified?

- **Partial updates** (e.g., channel edits, member changes) can be proposed by **admins**, but must be sent to the **control node** for approval before being published.
- Communities support a **permission model**:
- **Control node**: the sole authority for publishing official community description changes.
- **Token masters**: same rights as owners except cannot manage other token masters.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'Owners' are not defined here


## Functionality

- **Community messages** (channel posts, updates) must be sent and received via **Waku**.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This requirement makes sense, but out of curiosity is Waku a hard requirement here?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest to rewrite that as a requirement to the "Logos" stack, then we (Waku. Codex, etc) can review what system should handle what.

Copy link
Collaborator

@fryorcraken fryorcraken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome job, thank you for that.

As discussed in our call, I suggest those requirements to be focused on Logos stack as a whole. So that whether Waku or Codex is used can be left to Waku Chat SDK devs.

I also suggest to rewrite some requirements to understand what exactly Status app needs out of the overall library, instead of dictating how you'd want to see it.

E.g. "30 days on Waku" is not a good requirement.

A better reqquirement is "user can access messages after being offline, as long as tehy were offline for less than 30 consecutive days".

Then the Chat SDK can decide whether to leave message for 30 days on Waku, or 1 hour on Waku and the rest on Codex, etc.

Would be good to spend more time on privacy/anonymity/censorship-resistance.= expectations too


## Functionality

- **Community messages** (channel posts, updates) must be sent and received via **Waku**.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest to rewrite that as a requirement to the "Logos" stack, then we (Waku. Codex, etc) can review what system should handle what.

@@ -0,0 +1,51 @@
# Waku Requirements for Status Communities — FURPS

Note: These requirements assume the Community Description has been moved to Codex
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would suggest to see the "Logos stack" as a whole from an app dev point of view, and state your requirements on the full stack.

As discussed, it may make more sense to have the Community Description on-chain, simply because it opens the design space in terms of "who can add users", and makes administration much easier.

It allows a more lazy retrieval approach to it (in comparison to pushing on Waku).

Hence, we need requirements on this such as "nobody can now who is in teh community" so that specific solutions (Merkle tree, proof) can be specified.

## Functionality

- **Community messages** (channel posts, updates) must be sent and received via **Waku**.
- **Description change notifications** must be broadcast on Waku when the community description is updated via Codex.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would rephrase to:

"Users must be aware of changes on the community description" within 1 hour.

Also, I would define in more details "description":

  • logo
  • descriptive text
  • owner id
  • member ids

and then you can clarify for each (eg Logo + descriptive text) what is needed:

  • retrievable for any user, member or not
  • only members can see it, etc

And we can also start questioning things such as:

  • members of the community can get the list of all other members in the community.


- **Community messages** (channel posts, updates) must be sent and received via **Waku**.
- **Description change notifications** must be broadcast on Waku when the community description is updated via Codex.
- Only the **control node** is authorized to publish description changes.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would avoid inferring a specific architecture, especially because I understand the "control node" is seen as a limitation, not something really desired.

Suggested change
- Only the **control node** is authorized to publish description changes.
- Only changes on the community description published by the community owner are valid.

- **Community messages** (channel posts, updates) must be sent and received via **Waku**.
- **Description change notifications** must be broadcast on Waku when the community description is updated via Codex.
- Only the **control node** is authorized to publish description changes.
- **Partial updates** (e.g., channel edits, member changes) can be proposed by **admins**, but must be sent to the **control node** for approval before being published.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar to the above

Suggested change
- **Partial updates** (e.g., channel edits, member changes) can be proposed by **admins**, but must be sent to the **control node** for approval before being published.
- **admins** can proposed **Partial updates** (e.g., channel edits, member changes) to the **owner**.

The previous sentence already states that only the owner can published finalized changes

- Only the **control node** is authorized to publish description changes.
- **Partial updates** (e.g., channel edits, member changes) can be proposed by **admins**, but must be sent to the **control node** for approval before being published.
- Communities support a **permission model**:
- **Control node**: the sole authority for publishing official community description changes.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Control node**: the sole authority for publishing official community description changes.
- **Owner**: the sole authority for publishing official community description changes.

- **Control node**: the sole authority for publishing official community description changes.
- **Token masters**: same rights as owners except cannot manage other token masters.
- **Admins**: same rights as token masters, except cannot deploy/mint/burn tokens.
- Messages must be available on Waku **store nodes** for **at least 30 days**.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As per my other comments, I would move away from requirements that are imposed on specific tech, and instead, more functional requirements of the final product:

  • A user who was offline must eventually be able to retrieve all messages of the community, as long as they were offline for less than 30 days.
  • A user that was offline less than one week must be able to retrieve all missed messages within 5 minutes
  • A user that was offline for more than one week, and less than 30 days, must be able to retrieve all missed messages within 30 minutes

Comment on lines 16 to 20
- Waku must support **channel-based topics**, including:
- Public channels
- **Token-gated channels**, where messages are encrypted and sent to dedicated Waku topics
- The system must support **message encryption** using the Status protocol or none, depending on the use case.
- **Mobile clients** must operate in **light mode** (filtering by topic of interest) and not relay all Waku traffic.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, focus on the functional end goal, without referring to the current technological and architectural choices

(probably need to move bw requirements to Performance)

Suggested change
- Waku must support **channel-based topics**, including:
- Public channels
- **Token-gated channels**, where messages are encrypted and sent to dedicated Waku topics
- The system must support **message encryption** using the Status protocol or none, depending on the use case.
- **Mobile clients** must operate in **light mode** (filtering by topic of interest) and not relay all Waku traffic.
- Within a community, messages can be segregated by channels, for which users may have different permission access (read/write)
- Permissions may be defined using onchain tokens (token-gated channels)
- Users that do not have the read permissions on a channel, must not be able to read messages on this channel (encryption must be used).
- A Status Desktop instance should use less than 10Mbps on download and 5Mpbs (avg per day) on upload
- A Status Mobile instance should use less than 5GB per month in total data transmitted.

Comment on lines 24 to 25
- Message propagation and retrieval must be **transparent to end users**.
- Users should not experience delays when sending or receiving messages in real time.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Usability is for developers, as Logos/Waku are providing library.
So you need to express usability so you can easily integrate the library.
Some usability or functionality items may be derived from you trying to define your own Usability items for end users (but such Us would belong in Status' app FURPS).

Suggested change
- Message propagation and retrieval must be **transparent to end users**.
- Users should not experience delays when sending or receiving messages in real time.
- Automated retry for message sending and retrieval should apply without additional configuration
- A message sent by a user, should be received by another online user within 500ms
- A message sent by a user, should be marked as acknowledged within 5 seconds if another user was online.


- Message propagation and retrieval must be **transparent to end users**.
- Users should not experience delays when sending or receiving messages in real time.
- **Token-gated channel access** should require no manual topic configuration — the Status app must handle Waku topic subscriptions automatically.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, you define the Status app, so this doesn't really belong here, do you mean

Suggested change
- **Token-gated channel access** should require no manual topic configuration — the Status app must handle Waku topic subscriptions automatically.
- The usage of Waku content topics should be managed by the provided Chat SDK

That's a good usability point!

Base automatically changed from docs/roadmap-H2-2025 to master August 13, 2025 15:11
@jrainville jrainville force-pushed the docs/waku-communities-furps branch from 43d1ff7 to e7fbab5 Compare August 14, 2025 19:38
@jrainville
Copy link
Member Author

@fryorcraken @jazzz thank you for the comments. I think I addressed them all.

Summary: I changed the format to be agnostic of Waku and use the Logos Stack generically.

I also added an annex at the bottom to describe what the Community Description contains.

Later, after I've had a meeting with Patryk, I'll also add FURPS for when the community is on chain instead.

Copy link
Collaborator

@fryorcraken fryorcraken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is the neat-est Status requirements I have ever read :]

by approving I am not committing to the delivery of those requirements :D but that they are well defined and enable discussions around fulfilling said requirements with Waku software

Comment on lines 7 to 10
- **Community messages** (channel posts, updates) must be sent and received via the **Messaging protocol**.
- The Community will be described in the **Community Description**
- See Annex A below for the list of properties of the Community Description
- The Community Description must be stored on the **Storage Protocol**
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Community messages** (channel posts, updates) must be sent and received via the **Messaging protocol**.
- The Community will be described in the **Community Description**
- See Annex A below for the list of properties of the Community Description
- The Community Description must be stored on the **Storage Protocol**
- **Community messages** (channel posts, updates) must be exchanged between users of the community in a real-time.
- The Community will be described in the **Community Description**
- See Annex A below for the list of properties of the Community Description
- The Community Description must be available to all users of the community. Only the community owner can update the community description.

You just replaced Waku and Codex with "Messaging Protoocl or Storage Protocol". My suggestion was to focus on the actual functionality you want. I don't think you, or your users, care what kind of protocol is used.

@jrainville jrainville force-pushed the docs/waku-communities-furps branch from 6aa3e6d to 4e5c832 Compare September 5, 2025 14:05
@jrainville jrainville requested a review from jazzz September 5, 2025 14:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants