Groupchat 3.0 development - 2025-07-29


  1. overseer

    I know I'm just a lurker who's interested in GC3 but is any of this substantially pertain the subject of this public chatroom? Even if any of it is true (and, honestly, I can't even find evidence of this slur he's suggesting existing online), wouldn't it best be handled privately?

  2. xylobol

    you have witnessed new xmpp folklore

  3. xylobol

    > I know I'm just a lurker who's interested in GC3 but is any of this substantially pertain the subject of this public chatroom? Even if any of it is true (and, honestly, I can't even find evidence of this slur he's suggesting existing online), wouldn't it best be handled privately? anyways I'm in the same position, doesn't seem like there's been any serious conversation for months at this point after digging through the logs

  4. overseer

    Other than apparent schizophrenia, has anything interesting happened with GC3 lately?

  5. singpolyma

    MattJ is is working on some initial prototype stuff recently

  6. xylobol

    oh awesome

  7. a moderator removed a message

  8. a moderator removed a message

  9. a moderator removed a message

  10. a moderator removed a message

  11. a moderator removed a message

  12. a moderator removed a message

  13. a moderator removed a message

  14. a moderator removed a message

  15. a moderator removed a message

  16. a moderator removed a message

  17. a moderator removed a message

  18. a moderator removed a message

  19. a moderator removed a message

  20. a moderator removed a message

  21. a moderator removed a message

  22. a moderator removed a message

  23. MattJ

    Prosody gained a 'muc_enable_experimental_gc3' option in trunk a few weeks ago

  24. MattJ

    But it's nothing amazing yet, I'm still working on stuff

  25. pep.

    Any clients doing gc3 stuff?

  26. Link Mauve

    pep., there is a merge request open for xmpp-parsers.

  27. pep.

    Yeah it's just for parsers though, nothing is being done with that, at least in the open

  28. MattJ

    Merge request? for what protocol?

  29. MattJ

    There are currently ~3 GC3 proposals, and none of them match what Prosody implements

  30. Link Mauve

    MattJ, https://gitlab.com/xmpp-rs/xmpp-rs/-/merge_requests/533

  31. MattJ

    Ah, then it will almost certainly be for the proposal jonas’ wrote :)

  32. MattJ

    I am trying to follow stuff that has already been written, but I highly doubt it will match any of the proposals 100%, and I'm currently using a 'tmp' namespace to make that future-proof

  33. pep.

    Where can we see these proposals?

  34. pep.

    Yay another tmp namespace :)

  35. MattJ

    The original doc I wrote: https://pad.nixnet.services/s/7xKNOKxxE A doc by Kev: https://github.com/swift/protoxeps/blob/master/gc3.md A doc by jonas’: https://pad.nixnet.services/s/yu7drWpml

  36. jonas’

    fight!

  37. jonas’

    fist fight in front of stpeter's house is the only way to resolve this, clearly.

  38. MattJ

    The 2nd and 3rd docs were both written based on discussions around the first doc (which is more an ideas doc)

  39. MattJ

    I expect the 2nd and 3rd to gradually converge into a XEP as the prototype implementation progresses

  40. MattJ

    It also sounds worse than it is, because the docs don't overlap all that much. And amusingly the first thing I implemented (participant listing) isn't covered in any of them.

  41. jonas’

    MattJ, that's not the first thing you implemented, you implemented create ;-D

  42. MattJ

    Did you test against it?

  43. MattJ

    (asking because if I implemented it, I'm not sure where the code is...)

  44. jonas’

    MattJ, yeah we were testing back & forth

  45. jonas’

    before summit

  46. jonas’

    I think we got create and destroy up

  47. jonas’

    then we got into a discussion about how to map '45 and GC3 participants to one another, then summit happened (where I didn't participate), and we both moved on to different things IIRC.

  48. jonas’

    I can look up the hostnames I was testing against later.

  49. MattJ

    Found it

  50. MattJ

    161 lines I can now merge into Prosody :)

  51. jonas’

    :)

  52. jonas’

    so in fact the xmpp-rs impl does work against Prosody, so there's that.

  53. pep.

    jonas’, "A Server is an XMPP entity hosts zero or more Group entities. Typically, a Server is identified by a localpart-less domain-only JID." is the idea of reproducing the "a room MUST have a localpart" thing of MUC? Can a server not be identified via its identity rather?

  54. jonas’

    pep., no

  55. jonas’

    you can have a GC3 Chat at the domain

  56. singpolyma

    And then the domain is both a chat and a muc service containing that chat?

  57. jonas’

    pep., support for groups on the domain is explicitly mentioned: > If a Server supports Groups on the Server JID itself (for example, if the server is at chats.example, it might support hosting a Group at chats.example (without localpart)), it MUST NOT create such a group in response to a <create/> request. Instead, such groups may only be created through a separate administrative action. A <create/> request would otherwise be ambiguous.

    👍 1
  58. pep.

    Ok

  59. pep.

    singpolyma, that's a different issue.

  60. pep.

    I'm mainly advocating here for letting entities identify themselves instead of arbitrarily putting them into boxes

  61. singpolyma

    I don't think it's an issue, I'm just clarifying

  62. pep.

    (identity-affirming for XMPP :x)

  63. pep.

    Though I also think this could be nice to have multiple use-cases like that. heck an account is already both an account and a pubsub node

  64. singpolyma

    A pubsub service! With many nodes

  65. pep.

    Indeed

  66. pep.

    "Implementations MUST support at least 10 levels of redirects.", still reading https://pad.nixnet.services/s/yu7drWpml# Is 10 a common number? That seems overly big. We're not http

  67. pep.

    Anyway, nits

  68. pep.

    "Servers SHOULD reply with this error for at least six months after a Group has been destroyed." heh. "admins should continue paying even though they're shutting down their servers" :p

  69. pep.

    In the Joinjabber server covenant we say at least 3 months, fwiw. https://joinjabber.org/about/community/covenant/

  70. pep.

    (Not to a specific room but for a server shutdown)

  71. jonas’

    pep., I probably made that number up on the fly

  72. jonas’

    people need something to bikeshed

  73. jonas’

    and with that number in there, they'll focus on that instead of the things which are important to keep as they are :->

  74. pep.

    :P

  75. jonas’

    pep., a Server is a software/deployment. If that deployment is gone, all requests the Server gets are automatically correctly answered by that Server.

  76. pep.

    Iseewhatyoudidthere

  77. jonas’

    (because it gets no requests.)

  78. pep.

    "Establish a Session", why have the group iq the client? Instead of the client saying it supports the protocol?

  79. pep.

    "A Group MAY optimize this query using the mechanisms described in XEP-0115, XEP-0390" ok

  80. pep.

    Included in the join presence then right

  81. pep.

    Included in the session presence then right

  82. pep.

    But that still means a first roundtrip right?

  83. pep.

    > Note: A Session is not a requirement in order to be able to send messages to the Group. Any Participant’s resource may send messages to the Group at any time, even if they currently do not have a Session established to receive live messages. Do you also have a use-case in mind for non-announcement messages? (I mean made by owners mostly, service announcements)

  84. pep.

    I guess these could be made by moderators too

  85. pep.

    "Send an IQ request to another participant", I wish avatars and stuff were on a pubsub node on the group, so we don't have to relay stuff anymore. _and_ we can have different profiles per group easily

  86. singpolyma

    Why would they be on the group??

  87. pep.

    Right now I can think of avatar and encryption keys

  88. pep.

    I mean public keys

  89. pep.

    Why the surprise?

  90. pep.

    Sending an iq through the MUC has always been a way to get private information from a client/account/person. It's not available everywhere, that's ok for avatars I guess but a lot less for encryption. And yeah I may want to encrypt for non-contacts

  91. pep.

    Plus, it allows having different profiles per room

  92. pep.

    Everything that can be in a room's node can be different in another

  93. MattJ

    I get that, and I've seen multiple people suggest such a model, but I don't really like spreading the user data around

  94. MattJ

    Storing avatars and stuff in a room just feels like it's solving stuff at the wrong level

  95. pep.

    Where would you see that done? Or how else?

  96. MattJ

    and it will add new problems, from keeping it in sync to data hygiene issues (it will remain when a user deletes their account)

  97. pep.

    hmm.

  98. MattJ

    *if* we do it, it should be done at the user's account (somehow... I don't have a decent proposal)

  99. pep.

    I still want a pubsub service on MUC fwiw, if not to keep user data then for various feeds related to the topic

  100. MattJ

    other than, you know, "use a different account" which IIRC you don't agree with, but I think it makes a lot of sense

  101. MattJ

    Yeah, sure, you know I've always been in favour of that

  102. MattJ

    That has never needed GC3 and is pretty trivial to achieve with MUC

  103. MattJ

    Just nobody bothered to do stuff that way

  104. pep.

    Well I end up having 10 different accounts yeah

  105. MattJ

    Sure. I still think having 10 different accounts is better than having one account and hundreds of different channels you have to manage one-by-one

  106. pep.

    I still have the hundreds channels I need to manage one-by-one :p

  107. pep.

    They're just spread on various accounts

  108. MattJ

    Yeah, but if you have one persona per account, when you update your avatar/keys/whatever, it is updated everywhere that you joined that account to

  109. MattJ

    If you have it under one account but manage data per room, you have to tell each room to update its copy of the data

  110. pep.

    Maybe yeah, dunno. I still think there's something in the middle

  111. MattJ

    I am leaning towards having an avatar hash stored by the room, fwiw. That might make a multi-avatar account slightly more feasible.

  112. MattJ

    If you can then solve the discovery/permissions issue at the account level, then it might make it possible for a client to manage things in the way you want

  113. pep.

    Same as I don't have to have the same nick in all rooms

  114. MattJ

    Reasonable

  115. pep.

    As for the data hygiene issues "it will remain when a user deletes their account", that's a problem we should try to solve anyway

  116. Kris

    auto expiry?

  117. pep.

    That doesn't sound too bad yeah

  118. pep.

    Quid of service wide bans, btw

  119. pep.

    Or service-wide things, applied to a specific jid

  120. singpolyma

    > I still want a pubsub service on MUC fwiw, if not to keep user data then for various feeds related to the topic Sure yes. For the avatar of the MUC at least

  121. singpolyma

    > I am leaning towards having an avatar hash stored by the room, fwiw. That might make a multi-avatar account slightly more feasible. Multi avatar is just an implementation thing right? Server needs to reply to pep requests from different gets with different answers. Just no one has built it

  122. pep.

    singpolyma, more than "for MUC avatar". I don't know, anything that concerns the MUC could be open for use. May be restricted to moderators. Say roleplay stuff that's done on the MUC, to keep progress state, or more commonly, forge webhook stuff that spam the room and not everyone wants, I'd like for people to be able to opt-in to that

  123. pep.

    singpolyma, more than "for MUC avatar". I don't know, anything that concerns the MUC could be open for use. May be restricted to moderators. Say roleplay stuff that's done on the MUC, to keep progress state, or more commonly, forge webhook stuff that spams the room and not everyone wants, I'd like for people to be able to opt-in to that

  124. pep.

    I'm gonna make a big reveal but I couldn't care less about the debian nightly build in the prosody room :p