Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Waku requirements #310

Closed
felicio opened this issue Sep 14, 2022 · 9 comments
Closed

Waku requirements #310

felicio opened this issue Sep 14, 2022 · 9 comments

Comments

@felicio
Copy link
Collaborator

felicio commented Sep 14, 2022

What

  • What protocols are you using? As you are aware, I am also refactoring js-waku APIs to make it more modular. I have actually improve store query from js-waku too. What else is needed?
  • Relay? Not really scalable see [Epic] Waku Relay scalability in the Browser waku-org/js-waku#905
  • Light push? Filter? What kind of expectations do you have? For a given web client, what message rate? how many content topic would one subscribe too, etc?
  • What about encryption/decryption? are the API fitting purpose? Do you need better management of promises (subtle crypto calls)?
  • What abut connection management? Any challenges so far?
    • [https://discord.com/channels/624205794384281629/1019203728701661274/1021967254876856371 (e.g. discovery)]
  • [other]

@fryorcraken

When

- After MVP

@fryorcraken
Copy link

  • After MVP

Is the MVP the 30 September deliverable?

@prichodko
Copy link
Collaborator

prichodko commented Sep 19, 2022

I hope this will mark the beginning of the conversation to fix the issues, align the expectations or find workarounds.

The current implementation is built on top of Relay and Store protocols. We are aware of Relay's potential scalability issue. There is also a draft pull request experimenting with other protocols. During today's call, @fryorcraken mentioned that Lightpush + Filter should be a preferable combination. A written explanation would be appreciated.

Following is the list of Status Web MVP requirements with the links to the code that Status Web uses js-waku for. Also, I like to think about two phases that better illustrate the implications for end-user – non-interactive and interactive.

Non-interactive

The UI shows only the loader and is not interactive for the user. Ideally, this phase would not take longer than 3 seconds to make it feel fast and responsive.

Interactive

We have basic information about the community, such as name, list of chats, and members. Users can perform actions, such as accessing chats or sending messages.

Store node requirements

Post MVP

go-waku feature parity

Recently, it has been suggested to use go-waku nodes when we were experiencing difficulties with nwaku nodes, however according to Franck's message that may not be the best idea:

if you status web hits a go-waku node for a store query we don;t know what kind of performance you'd hit. We do not have go-waku store performance on the roadmap. You may want to be careful with that.

Bridge

Currently the bridge has been turned off for production fleet, however we are worried that it does not reflect the real world scenario. So releasing it in this state may create confusion for people installing desktop or mobile now.

@fryorcraken
Copy link

During today's call, @fryorcraken mentioned that Lightpush + Filter should be a preferable combination. A written explanation would be appreciated.

Waku Relay does not scale in the browser, as discussed in https://forum.vac.dev/t/waku-v2-scalability-studies/142/9
An issue tracks work to improve relay scalability in the browser: waku-org/js-waku#905

Filter and Light Push does not face this scalability problem as they are simple request/response protocols.

Do note that the some of relay's privacy gains are loss when using the store protocol, hence there is little drawbacks in switching to filter+light push in your use case.

It also save bandwith as relay receives and forward any messages seen, whereas with filter you only receive messages of the content topics you have subscribed to.

@fryorcraken
Copy link

Thank you for that. I shall digest it and provide some feedback: education material, issues tracking necessary work, questions, etc.

@fryorcraken
Copy link

Attack plan:

  1. Look at the few requirements above
  2. Break them down in Waku terms
  3. Describe the sequence of events (e.g. connect to node = DNS query + libp2p connection) to state expectations.

Some information is outdated (filter should be used, not relay).

In the case of Waku Store, would be good to check usage of store by status-web and whether it's optimal (in terms of sqlite queries, nwaku is optimized for specific queries via index and query plan(?)).

@chair28980
Copy link

@fryorcraken how should we move forward with this issue? Is it still relevant for pickup?

@fryorcraken
Copy link

fryorcraken commented Feb 6, 2024

This was an earlier attempt to understand what Status needed for Waku.
The attempt has now been merged with the Chat SDK team effort.

Once Status design to use Waku has been decided for the app launch, then we can work closely with the Status web team to clarify how this affects the browser.

Currently, the Status design is still moving and hence it is difficult to provide accurate information until it is pinned down.

@weboko
Copy link

weboko commented Feb 6, 2024

Moving to Icebox as per previous comment.

@fryorcraken
Copy link

I would suggest to close this until Status Web comes back in scope. At which point we can review the requirements.

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

No branches or pull requests

5 participants