******** Concepts ******** .. _ml-concept-features: Feature List ============ Participant ----------- The |ml| implements various features pertaining to the participant user: * authentication and authorization * presence * chat * activity Community --------- The |ml| also implements community features enhancing the user experience: * buddy list (list of friends to ease chatting with them) * ignore list (list of other users for which no chat message or no invitation will be received) * activity (what a user is doing at a given moment) * real-time |rooms| creation * list of users currently online * commands (statistics about the |ml|, report participant...) Chat Rooms ---------- The |room| model of the |ml| allows the following features: * private |rooms| * persistent chat messages and chat history * invitation * profanity filter Participant =========== .. _ml-concept-participant: Participant ----------- The :ref:`reference-ml-message-com.daysofwonder.Player` is a set of data pertaining to a given participant of a given |room|. This information is kept by the |ml| (and available on demand or when authenticating). It's also an entity that stays in the |ml| for as long as a connection is up. .. _ml-concept-authentication: Authentication -------------- Before a participant is authenticated, it isn't possible to do anything with the server. A given participant is authenticated (for the moment) with her ``name`` and ``password`` combination. Upon authentication the |client| receives a :ref:`ml-concept-session` identifier, which it should keep locally. This :ref:`ml-concept-session` identifier has to be sent back for the next authentication to speed up the process. .. _ml-concept-session: Session ------- A session is a persistent entity in the |ml| representing the participant, it is designed by a session identifier. .. _ml-concept-presence: Presence -------- The |ml| maintains a presence status for every participant. The status is ``present`` for connected and active participants. It is possible for a |participant| to subscribe for presence status change stream for some other participants. .. _ml-concept-community: Community ========= .. _ml-concept-buddies: Buddy list ---------- Each |participant| has a Buddy list, which contains the friends of this user. The server allows the |participant| to manage this buddy list (add, remove or list buddies). Buddies are used when creating |rooms| by invitation. Friends are not reciprocal, you can add anyone to your Buddy List without her consent, and that doesn't make you one of her buddy. .. _ml-concept-ignored: Ignored list ------------ Like for buddies, each |participant| has an Ignore list. This list contains users that are ignored by a given |participant|. In this case, this user won’t be able to see chat messages from her ignored participants. .. _ml-concept-invitation: Invitation ---------- It is also possible for a |participant| to invite some of her buddies to a |room|. The system will keep the pending invitation to the buddies that are not connected. The |room| will be available as soon as the creator create it and only the creator could invite any buddies. .. _ml-concept-commands: Commands -------- The chat system allows for chat commands, triggering a special action from the server. The |participant| just has to type the command like a regular chat message: * ``/help`` to display the list of commands * ``/statistics`` to have statistics about the current |room| * ``/report`` to report a user for bad behaviour Chat Room ========= .. _ml-concept-id: Local id VS DoW id ------------------ In a |room|, the local id will be the order of arrival inside. The creator will be with the local id `1`. .. _ml-concept-configuration: Configuration ------------- The room configuration is used to set the initial participants, and some other various aspects of a |room| prior to create it, like its ``name`` and ``topic``. .. _ml-concept-profanity: Profanity Filter ---------------- The |ml| will filter incoming messages, obfuscating offensive language to preserve the innocence of participants. A message will be sent by the |admin| to warn the participant of her bad behaviour. A participant can also send a :ref:`ml-concept-commands` to report an other participant for any suitable reason.