From 7422fc9baf7b6c473fdd15728b8f3d099d3d3170 Mon Sep 17 00:00:00 2001 From: "Alexander \"PapaTutuWawa" Date: Sat, 19 Aug 2023 21:07:25 +0200 Subject: [PATCH] feat: Write down a way of specifying communities --- README.md | 3 +- xep-xxxx-communities.md | 125 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 xep-xxxx-communities.md diff --git a/README.md b/README.md index 45852e2..62c33c2 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,5 @@ | --- | --- | | Extensible File Thumbnails | A specification for different types of thumbnails in the context of file transfers | | File Upload Notifications | A specification for telling clients that a file will be sent as soon as it is uploaded | -| SSO Login | A specification for allowing SSO logins during XMPP authentication | \ No newline at end of file +| SSO Login | A specification for allowing SSO logins during XMPP authentication | +| Communities | A specification for defining loose collections of JIDs similar to Discord servers or Matrix spaces | diff --git a/xep-xxxx-communities.md b/xep-xxxx-communities.md new file mode 100644 index 0000000..c50ed18 --- /dev/null +++ b/xep-xxxx-communities.md @@ -0,0 +1,125 @@ +# Communities + +In different instant messaging services, users have the options to create collections of group chat venues that are logically linked +together. + +This XEP is designed in a modular way, similar to [Mediated Information Exchange]. As such, this XEP only provided the basics for such +groupings. + +## Design Requirements + +To aid adoption, the following requirements are considered while creating this XEP: + +- Basic communities, i.e. grouped links to other JIDs with additional metadata, should work without server support +- The protocol should be extensible for future evolution + +## Basics + +A community in XMPP is identified by a JID that "owns" the community. This may be a end-user JID or a server JID. This JID must provide +a [PubSub](https://xmpp.org/extensions/xep-0060.html) service on which the community's metadata is stored. This XEP proposes a couple of basic nodes, but other XEPs may extend +this set and provide custom extensions. + +A community may be either public, meaning that anyone who knows the JID may join and query information about, or private, meaning that users +wishing to join MUST be added by an administrator of the community. To accomplish this, public communities SHOULD set all their [PubSub](#) nodes +to have an access model of "open", while private communities SHOULD set all of their nodes to "whitelist". A future XEP may define a way for +administrators to pre-authenticate users such that "invite URLs" to users. + +### Description + +A community's information is described by a `` element containing information about the community. + +```xml + + Awesome Community + ... + + +``` + +This element is stored in the `proto:urn:xmpp:community:0:info` [PubSub](https://xmpp.org/extensions/xep-0060.html) node at the bare JID of the community. +Implementations MUST use an id of "latest" to prevent multiple revisions of existing. + +```xml + + + + + + Awesome Community + ... + + + + + + +``` + +### Channel + +Within this XEP, a channel refers to each item within a channel group that should be displayable by the client. This XEP provides +the `` element which community administrators MAY use to link to items within the XMPP network by its JID. + +The defined types are: + +- `groupchat`: A joinable group chat (MUC, MIX, ...) +- `user`: A JID that a one-on-one conversation can be started with +- `community`: A link to another community as defined per this XEP. + +```xml + +``` + +The title attribute describes the function of the channel to the user. The id is used for sorting within a +channel group. The id MUST consist of only alpha-numeric characters. + +### Channel Groups + +A channel group is a list of items that should be logically grouped together. This may include group chat venues (MUC, MIX), +user JIDs (like admins), or other channel groups. + +```xml + + Development chats + + + + + +``` + +Each extension item inside the `` must also carry an id. The id must be unique within its surrounding group, but not the parent or child groups. + +A community has a single `proto:urn:xmpp:community:0:groups` [PubSub](https://xmpp.org/extensions/xep-0060.html) node that contains one top-level group called the *root group*. It MAY have a title, but it does not +have to. + +``` + + + + + + + + Development + + + + + Support + + + + + + + +``` + +# Info + +| Key | Value | +| --- | --- | +| Author | PapaTutuWawa | +| Version | 0.1.0 | +| Short name | cmt |