TL;DR
- Proposing Status X, a slimmed down Status app tracking (only) ChatSDK features as they’re developed
- Status X de-risks chat protocol migration
- Status X harden latest Waku research without impacting revenue
- Status X enables definition and specification of what the Status app is
Background
Over the past few years, Waku has been taking on more and more of the Status messaging protocol stack. This has led to the status quo where Waku is developing the “ChatSDK” as a general, app-layer chat stack on top of Waku routing. Within this effort, we’re aiming to systematically solve the entire vertical of reliability, encryption, segmentation, DoS protection and routing that’s required by a decentralised messaging app. In parallel, Status developers are refactoring status-go
to better isolate those same functional areas.
ChatSDK is meant to be a generally useful app-layer chat stack over Waku. However, our first client is Status. Although the new alignment is promising, we’ve seen in the past that without coordination (and a clearly defined, shared goal) there’s a risk that either team may drift from the expectations of the other and into scope creep. Furthermore, ChatSDK can benefit from fast feedback and continuous integration within an app with real world users.
Why not just integrate into Status as is?
ChatSDK is focusing on a narrow scope for now: systematic development of a chat protocol stack that works for “private conversation” use cases. That is, it has as priority developing a chat stack that is roughly compatible (only) with the existing Status 1:1 and private group chat features.
Status app currently consists of many more features, each with its own developmental state and roadmap. This includes the wallet, user features like backups, sync, push notifications, etc. In particular, there are more product decisions to be made on Status Communities, that will follow user validation of the current implementation. This variability of the product roadmap cascades down to technical requirements, which we currently accept as unspecified. This does not block ChatSDK development, because, as previously stated, our first focus is on private chats.
All of these features in the app affect each other, even as we progress with modularisation. Specifically, it makes it hard for ChatSDK to integrate and test, without having designed a solution for all those unrelated features as well.
One can expect that “integrating Chat SDK in Status” involves maintaining a status-go
branch that uses the latest Chat SDK release, and uses it within status-go
thanks to the refactoring. We also expect that such a Frankenstein would need to be maintained until feature parity is reached with the current Status app, as well as maturity and hardening to tackle the risky chat protocol migration.
Enter Status X
We suggest to properly release the integration of the Chat SDK in Status as a dedicated app, so that user validation and technology dogfooding can be done without impacting the product goals of Status.
Status X can be seen as a slimmed down version of Status, that focuses on the features provided by the Chat SDK so far, and put then in the hand of users.
A first phase of Status X will be a functionally complete (set of) specifications for a private chat app over Waku. Secondly it would be a working implementation of that spec stack. The expression as a set of specifications is important as it will allow us to clearly define the API and interfaces between each layer, most importantly the dividing line between Status as an app and the ChatSDK.
Moreover, this will enable de-risking the migration from status chat protocols to the chat SDK, by first proving the chat SDK robustness and reliability. Allowing the migration to be fully focused on that: migration, and not adding risk of rolling out the new chat sdk at the same time.
Finally, latest Waku development are expected to create user friction, such as the usage of ERC-20 deposits to acquire RLN memberships. Having a dedicated app to test such UX and iterate on it, dogfooding it, and evolving it, will enable enhancement without impacting Status’s user acquisition and potential revenue streams.
We will leave the technical choices on how to extract such an app from the current codebase to the Status team, but our expectation is to re-use as much code as possible, and use sensible strategy to cut out specific features that we know do not work with the chat sdk (yet).
This will also enable a focus on the Status side in terms of what composes the Status app and protocol specification.
What we do afterwards
Of course, this just describes an initial vision/first phase for Status X. As priorities get added to the ChatSDK roadmap, Status X will grow with that feature set.
Once the Status App is migrated to using the Chat SDK, we can do a review of the Status X application, that can depend on technical needs, actual overhead, state of Status specifications, and community reception.
Two possible paths forward:
- Continue using the Status X app for experimentation such as de-MLS, RLN entry points, Codex integration, etc.
- OR, agree on experimentation strategies in the Status app and decommission Status X
Feedback welcome!