Make signal/noise ratio (system vs chat message) more configurable

Current situation
Afaiu, messages like “xyz joined/left the room” (not sure about the wording, as I have only seen it in a German instance) can only globally be switched on or off.

Topic
UX/Configuration

Proposed change
I propose that this configuration setting should be made both per room and per client.

Ideally, administrators could define this option per room (show participation notifications on/off) but later clients could override this setting.

Rationale
I observed a chat instance where there was an onboarding room and a rarley frequented room. In the onboarding room, it is great to see who joined and left, but in the other room I am really just interested in the content. As it might be silent there for longer periods of time, the room is still cluttered with messages of the type “XYZ joined/left the room”, which are of no additional value to me and make it actually harder to inspect the history of what has been said (web-client: scroll up, wait for the browser to fetch and reveal older content, scroll up, wait for the …).

Minor improvement
Maybe an improvement that would be quicker in its implementation (but I do not know the codebase) would be to group the join/left messages visually and let them eat less space (i.e. “26.-28.May: UserA joined (2018/05/26 15:23); UserB joined (2018/05/26 17:34), UserA left (2018/05/27 00:21) …”.
I counted that my current laptop travel screen setup allows (only) 9 such notifications to be seen on the same time, which means that every join/leave eats up more than 10% of content space.