Groupchat 3.0 development - 2025-07-30


  1. Masked Witch

    > Or service-wide things, applied to a specific jid A server or component wide affiliation list would be really nice

  2. MSavoritias (fae, ve)

    that would also move us closer to spaces = servers i think

  3. MSavoritias (fae, ve)

    because you can add moderators space/server wide

  4. singpolyma

    Yeah. That something I've wanted to implement for awhile. The code should not be hard I just haven't gotten to it

  5. MattJ

    Except when we had that feature in Prosody, everyone hated it :)

  6. singpolyma

    Well. I didn't. But also this is slightly different I think

  7. MattJ

    I think there are two distinct types of MUC service - one service == one community, and then there are "public" services

  8. singpolyma

    There's a difference between MUC service wide mod and server admin

  9. singpolyma

    Oh yeah the "public" services are terrible. I think we only have them because servers have mad adding a new service too complex so far

  10. MattJ

    I don't disagree, but I don't know that every public server admin wants random strangers to be able to create subdomains on their server

  11. MattJ

    But in such a case I would probably restrict to private groups if I were a public server admin

  12. MSavoritias (fae, ve)

    locking an affiliation list to a subdomain could also work fwiw

  13. MSavoritias (fae, ve)

    instead of the whole muc service

  14. singpolyma

    Honestly if I'm letting randos make channels why not let them make subdomains. But yeah it's probably not something most hosts want to allow in general due to moderation concerns

  15. MattJ

    MSavoritias (fae, ve), not sure what you mean by that (a MUC service is typically on a subdomain)

  16. singpolyma

    > instead of the whole muc service A muc service is just one subdomain or domain yes

  17. MSavoritias (fae, ve)

    > MSavoritias (fae, ve), not sure what you mean by that (a MUC service is typically on a subdomain) i was thinking of each subdomain being one "space" so that if the affiliation list wasn't server wide but subdomain wide 🤔 probably i misunderstood how xmpp works tho so never mind

  18. MattJ

    That's kind of how it is, but people tend to use one subdomain for more than one community today

    👍 1
  19. MattJ

    But services like xmpp.org, joinjabber.org, etc. are community MUC services where affiliations should likely be shared

  20. MattJ

    chat.yax.im is not such a service

  21. singpolyma

    Yeah exactly. When we say service or server we mean one domain usually. Even if there is one prosody instance behind multiple domaies

    👍 1
  22. MattJ

    Yeah domain (or subdomain) == service, it doesn't make any difference if they are in the same Prosody or different, as far as Prosody is concerned every domain is self-contained

  23. singpolyma

    I think separating technical admin from owner/mod in prosody was good. Now I just need an ad hoc commands to add service wide mod

  24. MattJ

    Ad-hoc? or just normal affiliation stanzas to the domain?

  25. MattJ

    XEP-0045 leans towards the latter

  26. MattJ

    Actually it links to https://xmpp.org/extensions/xep-0133.html#edit-admin it seems

  27. singpolyma

    Ad hoc would work today and be easier for users and admins imo. But other options are possible

  28. MattJ

    "Why not both?"

  29. singpolyma

    Yes. That is my favourite

  30. singpolyma

    Ad hoc and then a xep for it if people want

  31. singpolyma

    As per that one you just linked

  32. singpolyma

    Makes it nice for prototype and also can add optional fields relevant to local implementation without a xep debate

  33. MattJ

    I think it just gets messy when you have a global affiliation, and then change the affiliation in a room

  34. MattJ

    Which one applies?

  35. singpolyma

    If they're service level mod then de mod in a room is probably an error

  36. singpolyma

    OTOH adding mod to just one room is fine

  37. pep.

    > A server or component wide affiliation list would be really nice Personally I wasn't saying this because spaces. Just that it's the same operator and it's the same policies so I wouldn't find it weird to apply service-wide moderation for this reason.

  38. pep.

    > chat.yax.im is not such a service chat.yax.im probably also has such a policy and could apply service-wide restrictions

  39. pep.

    MattJ, re affiliations I'd say if there's an affiliation in a room then apply it otherwise apply service-wide?

  40. MattJ

    An exception I was just thinking about is perhaps outcast. I think in a community you would want all bans to apply service-wide, right?

  41. pep.

    That may be contested. I guess all variants could work anyway, for different use-cases

  42. MattJ

    I can't think of a reason you would want anything else

  43. pep.

    Even "not" as a community

  44. pep.

    But yes especially as a community

  45. MattJ

    Nah, I think services like conference.jabber.org and chat.yax.im are very different

  46. MattJ

    Any random person can create a room there and add anyone to the ban list of their MUC

  47. pep.

    I would expect them not to host problematic content either fwiw. Be they more public than others

  48. MattJ

    You don't want that to affect all the other MUCs

  49. MattJ

    otherwise it can be done maliciously

  50. pep.

    What do you mean

  51. MattJ

    If you create a MUC on chat.yax.im and invite a bunch of people, but I don't like one of those people. So I create another MUC on chat.yax.im, and add that person to the ban list. That shouldn't ban them from every channel on yax.im.

  52. MattJ

    But if a ban happens on a community server, it should be treated as a ban from that community (since all the admins are expected to be acting on behalf of the community, not individual MUCs)

  53. pep.

    Ah no, I expect service-wide affiliations to be handled by people with enough permissions

  54. MattJ

    Right, yes, that's fine

  55. pep.

    So whether I don't like this person or not, I have been granted this permission by the operator, so I think that's alright

  56. MattJ

    So I guess the propagation depends on the global affiliation of the actor

  57. Guus

    Is it worth considering having technical different lists of outcasts: one per muc, and one per service? That makes the difference explicit, rather than an implicit "ban in one room may or may not affect other rooms."

  58. pep.

    I mean I would be trusted by the operator to apply said policy

  59. Guus

    What if an actor with global permissions wants to apply the ban to only one room, not the entire service?

  60. MattJ

    Guus, "what if" indeed, but as stated earlier, I can't think of a use case for that

  61. pep.

    Yeah I also don't have any use-case of the top of my head..

  62. Guus

    I'm mainly concerned that by automatically propagating actions on one room to other rooms of the service, depending on something like an authorization level of the actor, is messy/confusing and unpredictable in practice.

  63. pep.

    Affiliations in individual rooms should probably be removed when someone is outcast service-wide? If individual rooms' affiliations are prioritized?

  64. singpolyma

    > An exception I was just thinking about is perhaps outcast. I think in a community you would want all bans to apply service-wide, right? Not necessarily

  65. Masked Witch

    > Except when we had that feature in Prosody, everyone hated it :) Wait, is there a module maintained for prosody that adds back in that functionality?

  66. MattJ

    It's a configuration option

  67. pep.

    oh wow, let me reenable it then :x

  68. MattJ

    It was disabled at your request :D

  69. pep.

    Which one?

  70. singpolyma

    > What if an actor with global permissions wants to apply the ban to only one room, not the entire service? Yes. This is something I have done

  71. Masked Witch

    I could have sworn I read the documentation about the muc module all the way through

  72. MattJ

    component_admins_as_room_owners

  73. pep.

    Ah that's not what I expected

  74. pep.

    I thought we were talking about that global affiliation thing :p

  75. singpolyma

    Yes

  76. Masked Witch

    > component_admins_as_room_owners Oh no, I was looking for being able to manage membership and bans component wide in general

  77. singpolyma

    That's what that does

  78. pep.

    What do you mean

  79. MattJ

    singpolyma, I believe you, and I'll take your word for it. But I'm very curious about the use case

  80. singpolyma

    Ah, right, it's mods only not bans as well

  81. singpolyma

    > singpolyma, I believe you, and I'll take your word for it. But I'm very curious about the use case For example I have banned a certain person who is annoying from one MUC in my personal community because they were nothing but annoying there. But they still contribute positively in some others so I haven't banned them in all yet

  82. MattJ

    So people being weird, fine :)

  83. singpolyma

    Maybe my personal stuff isn't tied together well enough to really be one community so maybe it's a bad example. But I'm mod in them all

  84. pep.

    Yeah that's something I'm not doing personally. If a person is annoying enough to be banned somewhere (generally going against CoC), they're probably making other people uncomfortable in other places

  85. Masked Witch

    > Oh no, I was looking for being able to manage membership and bans component wide in general It's still a nice feature to have component wide admins, but it's a bit more limited than what I was posting about. I would also want it to dynamically update from the list instead of just when prosody is starting

  86. singpolyma

    Well this wasn't a CoC violation per se. They weren't being abusive. Just not being constructive

  87. pep.

    Which is also why I will ban preemptively

  88. MattJ

    Masked Witch, you only have to edit the config file and reload Prosody

  89. pep.

    singpolyma, well that can go against the CoC too

  90. Masked Witch

    > Masked Witch, you only have to edit the config file and reload Prosody I've reloaded. I've even reloaded the components. It doesn't seem to update affiliation. Maybe the user needs to reconnect?

  91. Masked Witch

    > Masked Witch, you only have to edit the config file and reload Prosody I've reloaded. I've even reloaded the components. It doesn't seem to update affiliation without restart. Maybe the user needs to reconnect?

  92. pep.

    Or /cycle

  93. Guus

    I don't think we should have two distinct lists of affiliations (one per service, and one per room) because maintaining and applying two sets gets messy, fast. I do believe that the act of change affiliation of user X on service should be a distinct act to applying that change on a per-room basis. That should not depend on authorization only.

  94. singpolyma

    Yes that's also a good option. Just mass actions at service level but no storage there

  95. pep.

    If you can apply affiliations differently, doesn't that mean there's two lists?

  96. singpolyma

    Though then when you make a new room what do

  97. pep.

    Ah ok

  98. Guus

    (although if you want to apply a service wide affiliation change to a muc that's created later, you'd still need separate lists... Bah)

  99. pep.

    Yeah, what about new rooms

  100. pep.

    I probably would be fine for now just having an additional global banlist. But yeah for a new protocol that doesn't really make sense to pick just this one

  101. singpolyma

    I don't think two lists is a big deal. There may be UX considerations but that's someone else's problem (well, my problem again. But not most of you)

  102. pep.

    It's not that bad to include UX considerations when design protocols :)

  103. Guus

    > I probably would be fine for now just having an additional global banlist. But yeah for a new protocol that doesn't really make sense to pick just this one My thoughts exactly

  104. pep.

    That's what we're doing here anyway

  105. pep.

    when designing*

  106. singpolyma

    > It's not that bad to include UX considerations when design protocols :) Can result in over-limited protocols or implementations

  107. pep.

    I don't know if it just becomes a limitation. "Depends on the use-case". Then if the use-case is not clear or if you allow too much, clients implement what they want from it and they're all different and people complain again :P

  108. pep.

    And use-cases differ and you need to split the spec anyway because they're not compatible with each other

  109. singpolyma

    Well they're supposed to all be different 🙂 otherwise we'd have only one

  110. pep.

    Are hats being used for extending affiliations or just for fancy labels? :P

  111. singpolyma

    I plan to use them for both

  112. pep.

    https://pad.nixnet.services/#Error-case-Recipient-cannot-receive-direct-messages the last paragraph in there, > If the recipient has no active sessions at all at the present time, Groups MAY reply with a type="wait" <service-unavailable/> error including the <relay-denied/> condition. I don't know if I get why "wait". If the participant doesn't support muc-pm then whether there's an active session or not, a PM gets rejected no? (I'm still reading through, and I wonder if there's an alternative to PMs, but that's a question I'll ask later)

  113. pep.

    (Ah well it's right below)

  114. pep.

    (Ah no that's different, it's still the compatiblity profile)