diff --git a/proposals/1772-groups-as-rooms.md b/proposals/1772-groups-as-rooms.md index d4ac126f..72e4c0c7 100644 --- a/proposals/1772-groups-as-rooms.md +++ b/proposals/1772-groups-as-rooms.md @@ -17,40 +17,18 @@ purposes. Examples include: We refer to such collections of rooms as "spaces". -Synapse and Element-Web currently implement an unspecced "groups" API which -attempts to provide this functionality (see -[matrix-doc#1513](https://github.com/matrix-org/matrix-doc/issues/1513)). This -API has some serious issues: - * It is a large API surface to implement, maintain and spec - particularly for - all the different clients out there. - * Much of the API overlaps significantly with mechanisms we already have for - managing rooms: - * Tracking membership identity - * Tracking membership hierarchy - * Inviting/kicking/banning user - * Tracking key/value metadata - * There are membership management features which could benefit rooms which - would also benefit groups and vice versa (e.g. "auditorium mode") - * The current implementations on Riot Web/iOS/Android all suffer bugs and - issues which have been solved previously for rooms. - * no local-echo of invites - * failures to set group avatars - * ability to specify multiple admins - * It doesn't support pushing updates to clients (particularly for flair - membership): https://github.com/vector-im/riot-web/issues/5235 - * It doesn't support third-party invites. - * Groups could benefit from other features which already exist today for rooms - * e.g. Room Directories - * Groups are centralised, rather than being replicated across all - participating servers. - -In this document, the existing implementation will be referred to as -"`/r0/groups`". +Synapse and Element-Web currently implement an unspecced "groups" API (referred +to as "`/r0/groups`" in this document) which attempts to provide this +functionality (see +[matrix-doc#971](https://github.com/matrix-org/matrix-doc/issues/971)). However, +this is a complex API which has various problems (see +[appendix](#appendix-problems-with-the-r0groups-api)). This proposal suggests a new approach where spaces are themselves represented by rooms, rather than a custom first-class entity. This requires few server -changes, other than better support for peeking (see Dependencies below). The -existing `/r0/groups` API would be deprecated in Synapse and remain +changes, other than better support for peeking (see Dependencies below). + +The existing `/r0/groups` API would be deprecated in Synapse and remain unspecified. ## Proposal @@ -523,12 +501,41 @@ implementations should use `org.matrix.msc1772` to represent the `m` namespace. For example, `m.space.child` becomes `org.matrix.msc1772.space.child`. - ## History * This replaces MSC1215: https://docs.google.com/document/d/1ZnAuA_zti-K2-RnheXII1F1-oyVziT4tJffdw1-SHrE * Other thoughts that led into this are at: https://docs.google.com/document/d/1hljmD-ytdCRL37t-D_LvGDA3a0_2MwowSPIiZRxcabs +## Appendix: problems with the `/r0/groups` API + +The existing `/r0/groups` API, as proposed in +[MSC971](https://github.com/matrix-org/matrix-doc/issues/971), has various +problems, including: + + * It is a large API surface to implement, maintain and spec - particularly for + all the different clients out there. + * Much of the API overlaps significantly with mechanisms we already have for + managing rooms: + * Tracking membership identity + * Tracking membership hierarchy + * Inviting/kicking/banning user + * Tracking key/value metadata + * There are membership management features which could benefit rooms which + would also benefit groups and vice versa (e.g. "auditorium mode") + * The current implementations on Riot Web/iOS/Android all suffer bugs and + issues which have been solved previously for rooms. + * no local-echo of invites + * failures to set group avatars + * ability to specify multiple admins + * It doesn't support pushing updates to clients (particularly for flair + membership): https://github.com/vector-im/riot-web/issues/5235 + * It doesn't support third-party invites. + * Groups could benefit from other features which already exist today for rooms + * e.g. Room Directories + * Groups are centralised, rather than being replicated across all + participating servers. + + ## Footnotes