Software /
code /
prosody-modules
Annotate
mod_minimix/README.markdown @ 5173:460f78654864
mod_muc_rtbl: also filter messages
This was a bit tricky because we don't want to run the JIDs
through SHA256 on each message. Took a while to come up with this
simple plan of just caching the SHA256 of the JIDs on the
occupants.
This will leave some dirt in the occupants after unloading the
module, but that should be ok; once they cycle the room, the
hashes will be gone.
This is direly needed, otherwise, there is a tight race between
the moderation activities and the actors joining the room.
author | Jonas Schäfer <jonas@wielicki.name> |
---|---|
date | Tue, 21 Feb 2023 21:37:27 +0100 |
parent | 4541:140cda94c342 |
rev | line source |
---|---|
4540
3aab4e3ab06f
mod_minimix/README: Change markdown header syntax
Kim Alvefur <zash@zash.se>
parents:
3121
diff
changeset
|
1 # Account based MUC joining |
2941
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
2942
024075effb74
mod_minimix/README: Fix typo (thanks porrier)
Kim Alvefur <zash@zash.se>
parents:
2941
diff
changeset
|
3 Normally when joining a MUC groupchat, it is each individual client that |
2941
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 joins. This means their presence in the group is tied to the session, |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 which can be short-lived or unstable, especially in the case of mobile |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 clients. |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 This has a few problems. For one, for every message to the groupchat, a |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 copy is sent to each joined client. This means that at the account |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 level, each message would pass by once for each client that is joined, |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 making it difficult to archive these messages in the users personal |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 archive. |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 A potentially better approach would be that the user account itself is |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 the entity that joins the groupchat. Since the account is an entity that |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 lives in the server itself, and the server tends to be online on a good |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 connection most of the time, this may improve the experience and |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 simplify some problems. |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 This is one of the essential changes in the MIX architecture, which is |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 being designed to replace MUC. |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 `mod_minimix` is an experiment meant to determine if things can be |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 improved without replacing the entire MUC standard. It works by |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 pretending to each client that nothing is different and that they are |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 joining MUCs directly, but behind the scenes, it arranges it such that |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 only the account itself joins each groupchat. Which sessions have joined |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 which groups are kept track of. Groupchat messages are then forked to |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 those sessions, similar to how normal chat messages work. |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 |
4540
3aab4e3ab06f
mod_minimix/README: Change markdown header syntax
Kim Alvefur <zash@zash.se>
parents:
3121
diff
changeset
|
31 ## Known issues |
2941
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 - You can never leave. |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 - You will never see anyone leave. |
3121
92b4a1d72d73
mod_minimix/README: Doesn't handle incoming kicks yet
Kim Alvefur <zash@zash.se>
parents:
2943
diff
changeset
|
35 - Being kicked is not handled. |
2941
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 |
4540
3aab4e3ab06f
mod_minimix/README: Change markdown header syntax
Kim Alvefur <zash@zash.se>
parents:
3121
diff
changeset
|
37 ## Unknown issues |
2941
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 - Probably many. |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 |
4541
140cda94c342
mod_minimix/README: Add TODO section
Kim Alvefur <zash@zash.se>
parents:
4540
diff
changeset
|
41 ## TODO |
140cda94c342
mod_minimix/README: Add TODO section
Kim Alvefur <zash@zash.se>
parents:
4540
diff
changeset
|
42 |
140cda94c342
mod_minimix/README: Add TODO section
Kim Alvefur <zash@zash.se>
parents:
4540
diff
changeset
|
43 - Integrate with bookmarks |
140cda94c342
mod_minimix/README: Add TODO section
Kim Alvefur <zash@zash.se>
parents:
4540
diff
changeset
|
44 - tracking outgoing presence |
140cda94c342
mod_minimix/README: Add TODO section
Kim Alvefur <zash@zash.se>
parents:
4540
diff
changeset
|
45 - leaving rooms |
140cda94c342
mod_minimix/README: Add TODO section
Kim Alvefur <zash@zash.se>
parents:
4540
diff
changeset
|
46 - nickname management |
140cda94c342
mod_minimix/README: Add TODO section
Kim Alvefur <zash@zash.se>
parents:
4540
diff
changeset
|
47 - bookmark sync |
140cda94c342
mod_minimix/README: Add TODO section
Kim Alvefur <zash@zash.se>
parents:
4540
diff
changeset
|
48 |
4540
3aab4e3ab06f
mod_minimix/README: Change markdown header syntax
Kim Alvefur <zash@zash.se>
parents:
3121
diff
changeset
|
49 # Compatibility |
2941
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 |
a57ed544fece
mod_minimix: Experiment in account-based MUC joins
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 Briefly tested with Prosody trunk (as of this writing). |