diff --git a/docs/rfcs/2025-07-30-channels.md b/docs/rfcs/2025-07-30-channels.md new file mode 100644 index 0000000000..bbb8ba4969 --- /dev/null +++ b/docs/rfcs/2025-07-30-channels.md @@ -0,0 +1,43 @@ +# Channels + +This supersedes the previous [super-peers RFC](./2025-02-13-super-peer-groups-mvp.md), by reducing its scope to channels. + +## Problem + +This doc proposes the scope for MVP for channels based on chat relays, as the first step to arbitrary large groups based on chat relays. + +The technical difference of channels is that only owners can send messages and all members are "observers" who can send reactions. + +From UX point of view, channels will be a separate thing, as one more action in the menu. + +From threat model point of view, we want to protect from chat relays being able to act as owners - channel "identity" will be based on owners keys, as described in [this rfc](https://github.com/simplex-chat/simplexmq/blob/stable/rfcs/2025-04-04-short-links-for-groups.md). + +## Solution + +Minimal testable scope: +- protocol for managing owners changes and channel profile changes - probably based on some consensus protocol. +- message signing by owners - to authorize channel profile and ownership changes. +- make group link part of group profile, while delegating connection to channel to chat relays included in link data. +- messages sent from channel name. +- message forwarding by chat relays: + - all relays forward each message, client de-duplicates by message ID and highlights any differences between chat relays. + - forwarding operation should be persistent, resumable and batched, optimizing between latency and load. + +Channels MVP implementation scope: +- split directory service from chat relay. +- message services to allow for fast subscriptions of chat relays to SMP servers using service certificates. It is in progress in [this PR](https://github.com/simplex-chat/simplexmq/pull/1565). +- fully migrate SMP servers to PostgreSQL. +- chat relay management (started in [this PR](https://github.com/simplex-chat/simplex-chat/pull/5653)), include chat relays into pre-configured operators. +- catch up with skipped messages (related to history navigation). +- manage chat relays in UI. +- member keys, for owners, profile signatures and for establishing e2e encryption in chat with admins. Possibly, profile keys as described in [this RFC](./2025-04-14-signing-messages.md) (option 2). +- reuploading files by relays for indefinite storage and maintaining channel quotas for files. +- operator content moderation. +- UI changes for channel/group creation. + +Post MVP: +- pagination in member list. +- history "navigation" - request older messages. +- e2e encryption in chats with admins. +- message revocation from history by senders. +- message comments.