Matrix/Server/What v1.0 means to me
Jump to navigation Jump to search
What I expect from a "real" server?
This list is work in progress, and everyone is welcome to update.
- Written in a real (compiled) language. Speed and resource utilisation.
- Use a modern database backend. Optimal for the task, fast, optimal storage space requirements, resource-friendly, handle operational expectations (retention, purging, don't choke on spam/abuse).
- Reliable. Don't crash too often, or can recover fast. Do not lose data. Keep user sessions, don't cause pain to users.
- Support baseline chat expectations:
- Support sending and receiving unencrypted messages, rooms, spaces, invites, ...
- Support E2EE features
- Support reactions, threads and related events
- Public user control, including registration (using various verification methods), user management, banning/blocking, mass abuse management, foreign server abuse management. Protection of user sessions and protocol-level protection features.
- Measures to speed up basic user functions: initial sync, joining rooms
- Support media storage
- Backfilling missing events
- Support anti-abuse expectations
- Don't choke on abuse (spam, flood, mass joins, mass invites, ...)
- Offer the admin to handle abuse (user event purge, mass removals, db cleanup,
Nice to have
- Horizontal scale: work in cluster or load-balanced servers, possibly with High Availability
- Independent development process from both the protocol development body and Synapse (so the protocol development have to incorporate external ideas as well, and to prevent Synapse to define the protocol without formal specification).