Group Chats

Group chats allow multiple users to have a conversation together. In XMPP, group chats are called rooms or “Multi-User Chat” (MUC). Rooms can be either public or private.

Creation

Rooms have their own XMPP addresses like users, but with their own server suffix. On our server, the suffix is @conference.chatbx.eu (so a room address may be [email protected]). A new room can be created by anyone by simply entering a non-existing room address with a client. By default, new rooms are public and temporary, see below for how to change this configuration.

Configuration

The first user who joins a new room is the owner of that room. Owners can change the room configuration; XMPP clients can open a room configuration form for this task.

Here is a list of some important settings:

SettingDescription
Make room persistentWhen this setting is enabled, the room doesn’t automatically get destroyed when the last user leaves; settings and roles are kept until the room is explicitly destroyed.
Make room public searchable & Make participant list publicThese settings make the room itself and the participant list open for anyone to see. You want to disable these for private rooms. Note: anyone who knows the room address can still join if these settings are disabled.
Make room members-onlyWhen this setting is enabled, only users who have been explictly invited (i.e. set on the members list) can join the room. This makes the room private.
Present real Jabber IDs toThis setting specifies which users in the room can see the full XMPP address of other users in the room. This has to be set to anyone for end-to-end encryption to work.

Note that some clients may have different default settings in their user interface. For instance, some may offer to create a “private group chat” which has the correct settings already set.

Roles

XMPP distinguished between roles and affiliations of users in a room. A role is a temporary attribute of a user that is currently in the room. An affiliation lives as long as the room exists, even if the user is currently not in the room.

The roles are:

RoleDescription
ModeratorA user that can kick users from the room, and grant or revoke “voice”
ParticipantA user that has the right to send to send message (has “voice”)
VisitorA user that does not have “voice”, that is they can only read messages

Note that the room must be configured to be moderated so that the distinction between participant and visitor is relevant. By default rooms are unmoderatd; everyone who joins is a participant, i.e. has “voice”. Additionally, it can be configured which role is allowed to send invites (by default everyone).

The affiliations are:

AffiliationDescription
OwnerThe user that created the room has this affiliation by default. Owners can change the room configuration
AdminCan perform administrative tasks such as banning users, but cannot change the room configuration.
MemberIs explicitly invited / “whitelisted” for a room. Can join private rooms.
OutcastWas banned from the room; can’t join the room anymore, even if it is public.
NoneNo special affiliation to a the room. Can join the room if it is public.

To learn more about roles and affiliations, see XEP-045 Multi-User Chat  .