Multi-User Chat Configuration

Minimize Chat Room Configuration

I have spent a lot of time looking at all the possible parameters for configuring chatrooms in Prosody XMPP Server. There are many, and I will list the ones I have found at the bottom of this post. I count 2 parameters that can be configured with strings, 6 that can be configured with integers, and 14 that are boolean, and these do not include possible parameters from community modules!

Multi-User-Chat has its place, and there seems to be two dominant uses for it:

  • Social chatting, where you join a room to discuss a subject or to be entertained by anyone who shows up
  • Purposeful chatting, where you join a room to discuss something with people that you know

As gets started, I will be focusing on purposeful chatting. With this in mind, what about chat room configuration? I want this to be easy for the end user. The fewer choices that need to be made, the sooner the user can use his chat room.

Looking at other the MUC Configurations of other services, I see far too many choices that can lead to confusion. I cannot be the only person who spends time pondering the implication of each choice.

If I set rules for the service that must be followed, I can eliminate many choices and make the experience better for the user.

I simplify this down to the absolute bare-bones. I have minimized the configuation for so that it allows only 3 inputs to be considered:

Is anything else really needed?

I have even considered combining name and description into one value, “Descriptive Name”. Pidgin only shows “Name” in its “Description” column. Gajim shows both values.

List of Parameters Prosody offers for MUC Configuration:

muc_room_allow_public                  boolean
muc_room_locking                       boolean
muc_room_default_public                boolean
muc_room_default_persistent            boolean
muc_room_default_members_only          boolean
muc_room_default_allow_member_invites  boolean
muc_room_default_moderated             boolean
muc_room_default_public_jids           boolean
muc_room_default_change_subject        boolean
muc_tombstones                         boolean
new_muc_storage_format                 boolean
muc_room_allow_persistent              boolean
allow_unaffiliated_register            boolean
enforce_registered_nickname            boolean

max_history_messages                   integer
muc_room_lock_timeout                  integer
muc_max_rooms                          integer
muc_room_cache_size                    integer
muc_room_default_history_length        integer
muc_tombstone_expiry                   integer

name                                   string
muc_room_default_language              string