From 678eae1d9e5bbc11fd977564dd0e22bdb29f83be Mon Sep 17 00:00:00 2001 From: "Alexander \"PapaTutuWawa" Date: Sat, 19 Aug 2023 23:59:31 +0200 Subject: [PATCH] cmt: Write down how bans (and other things) might propagate --- xep-xxxx-communities.md | 71 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/xep-xxxx-communities.md b/xep-xxxx-communities.md index 756481f..d0ef54f 100644 --- a/xep-xxxx-communities.md +++ b/xep-xxxx-communities.md @@ -140,6 +140,77 @@ have to. ``` +## State Synchronization (Maybe new XEP?) + +There may be some state that should be synchronized across different channels, like ban lists, ACLs, hats, and so on. To accomplish this, XEPs may define +new [PubSub](#) nodes that supporting channels within a community should subscribe to. Upon receiving a [PubSub](#) notification, the channels should +react appropriately in regard to the payload. + +Care must be taken when storing bare or full JIDs in these [PubSub](#) nodes as to not leaking them. Thus, The recommendations of +[Persistent Storage of Private Data via PubSub](https://xmpp.org/extensions/xep-0223.html) apply. + +### Linking + +Each channel must be configured to listen to [PubSub](#) events for every bit of synchronized state it cares about. The actual mechanism for it is out of scope, +but for MUC, it may include a field in the configuration data form that refers to the community's JID. + +Example: + +```xml + + + + + http://jabber.org/protocol/muc#roomconfig + + + community.example.org + + + + +``` + +### Banning + +Every channel inside a space that supports banning users, should be configured to subscribe to the `proto:urn:xmpp:community:0:ban` [PubSub](#) node. When a JID is put there, +the supporting channels will be notified of the new ban and SHOULD apply it locally. This node MUST be configured with an access model of whitelist such that only administrators +can see the bare JIDs of banned users. + +Banning a JID: + +```xml + + + + + + + +``` + +### Power Levels + +Every channel inside a space that supports power levels, like "Moderator", "Admin", and so on, should subscribe to the `proto:urn:xmpp:community:0:power` [PubSub](#) node. Each item in it +describes a bare JID and its power level. When a notification is received, supporting channels SHOULD keep their internal power levels in sync with the payload. + +Making a JID an administrator: + +```xml + + + + + + + + + +``` + # Notes - Using just this XEP, one can implement Gajim-like workspaces: Create a private community on your own bare JID and create a channel group per workspace.