XMPP Council - 2026-05-06


  1. larma

    MattJ: I understand that there are interesting breaking changes to explore. I'm not even sure I agree with changing the addressing or specifically that it's worth the effort and that we couldn't achieve the goals behind without doing so. As an example Jitsi Meet "changed the addressing" in a way that's not breaking (clients choose a random id as "nickname" and then use the 0172 element to actually specify the nickname, that way they can change the nickname within a session without that affecting their occupant jid)

  2. larma

    The question to me is: why should we make other improvements depend on changing the addressing? What issues are we actually solving with that? which issues are not solved with that? what downsides does it have?

  3. larma

    I already had the example of allowing nick collisions. Changing the addressing would solve it for MUC2, but only if there's no MUC1 compatibility. If we consider MUC1 compatibility mandatary, we have to solve the issue also for MUC1. If we solve the issue for MUC1, maybe the solution for MUC1 also solves some of the issues we tried to fix with changing the addressing in first place (because both are about decoupling the displayed nickname from the resource, they actually are related)

  4. larma

    All that said, I'm not against a new c2s protocol syntax for MUC. But I think it would be better if the motivation for that is that the old protocol syntax became ugly because of the features we added to it, not because we add new features to the new protocol syntax. And effectively, switching where in a MUC stanza we have occupant id and nickname is just that: syntax.

  5. MattJ

    Jitsi could make that change because they control the clients. It sounds like they didn't change the addressing as such, it all relies on the client being trusted to do the right thing. Server-side enforcement of stable in-room addresses for each joined bare JID provides much stronger guarantees that clients in an open ecosystem can rely on.

  6. MattJ

    PMs are one thing we need to fix (I want to send a message to this occupant, not whoever currently has this ephemeral nickname)

  7. larma

    Well, there's a bunch to consider when sending PM to a MUC participant, the addressing is really not the issue (the same could be done by sending to the room bare jid and have something in the body to instruct the room server to forward)

  8. larma

    What I meant with Jitsi is that they solved that, within a session, a nickname change does not result in a new JID and they solved that there can be nickname collisions

  9. dwd

    I'm going to write a message to the list on PMs etc. I have "ideas" there. Loosely, in '45, an occupant started off as a simple forwarder. Jid sharing has complicated (and in some ways broken) that, and it's poor for privacy as well. I'd like to explore the concept of an occupant jid being a "thick" proxy, so it can respond to PEP, Jingle, etc. I'll expland in an email though.

  10. dwd

    larma, You certainly can band-aid all sorts onto '45. The problem - and I think this is the angle Kev and MattJ are coming from - is that layers of band-aid add, rather than remove, complexity.

  11. Zash

    Forward to account or full JID, is the question

  12. larma

    dwd: I think the best solution is a protocol to request revealing a bare jid of another participant. If you want privacy, that could be a burner jid

  13. dwd

    > Forward to account or full JID, is the question It absolutely is the question, and I think a "thicker" proxy would help answer that.

  14. dwd

    larma, I'm unconvinced that's the optimal approach. It makes things like PEP extremely awkward.

  15. MattJ

    dwd, FWIW the "simple forwarder" hasn't been a thing for a very long time. We already handled vCard and today we handle PEP

  16. MattJ

    and by "handle" I mean simply, "send to bare instead of full"

  17. MattJ

    It's not delightful, and I don't think it's in XEP-0045

  18. dwd

    MattJ, Yes, absolutely. But I think the general approach is a naive forwarder that switches between one or more full jids and a bare jid.

  19. MattJ

    Also we never really resolved to-full when there are multiple sessions behind one nick

  20. MattJ

    It's extremely hacky and has a number of edge cases where it just breaks

  21. larma

    MattJ: you mean you broke privacy of semi-anonymous participants by making their pep nodes available to users not knowing their bare jid?

  22. dwd

    MattJ, Right, entirely 100% agreed.

  23. MattJ

    larma, yes, I'm aware of your opinions on this aspect :)

  24. MattJ

    I think if you publish a PEP node with the configuration that it can be accessed publicly, it can be accessed publicly

  25. Cynthia

    > MattJ: you mean you broke privacy of semi-anonymous participants by making their pep nodes available to users not knowing their bare jid? How many PEP nodes out there the reveal the bare JID of the user?

  26. MattJ

    Cynthia, none that I know of, but OMEMO keys allow for fingerprinting and correlation of users across semi-anon MUCs

  27. MattJ

    However my position on this is that vcards already do this, and the alternative is no OMEMO anyway

  28. MattJ

    *and* it's all controllable by the client

  29. Kev

    I suspect the argument isn’t whether open pep nodes should be accessible to anyone (clearly they should), but whether they should be able to be used to tie a semi-anonymous room occupant to a bare JID. Although I’m not coming down on either side of that.

  30. Kev

    But historically we’ve already done this through vcards anyw…what Matthew says.

  31. Cynthia

    > However my position on this is that vcards already do this, and the alternative is no OMEMO anyway OMEMO is not useful in semi-anonymous MUCs anyway

  32. Cynthia

    Maybe this could be solvable with a new access control model for PEP nodes?

  33. larma

    To the user's home server, a MUC is just a regular usee

  34. larma

    To the user's home server, a MUC is just a regular user.

  35. MattJ

    Cynthia, it's certainly one option. But it's not clear exactly what that access control model would do.

  36. larma

    It basically changes the privacy properties of semi-anon MUCs significantly

  37. Cynthia

    I mean one that the MUC server follows

  38. Cynthia

    Basically "open to everyone, but in semi-anonymous MUCs"

  39. Cynthia

    Basically "open to everyone, except in semi-anonymous MUCs"

  40. larma

    Without a regular use being able to tell before joining the room.

  41. MattJ

    Okay, so you trust the MUC server to implement the access control on your behalf (which is reasonable, it's already trusted not to reveal your JID)

  42. Cynthia

    I mean it already has my JID

  43. dwd

    larma, Unfortunately, it does not change the privacy of semi-anon rooms, which is the problem...

  44. larma

    Previously anything that goes to a room occupant jid is forwarded to the participant's full jid. The client thus decides if they want to reply and the client does have the necessary context.

  45. MattJ

    "Previously" was ~2003

  46. dwd

    larma, That's not been the case for decades.

  47. Kev

    Yeah, that’s not been true since… as long as I can remember, which is about 2001 :)

  48. MattJ

    vcards have always gone to bare JID, traditionally. That's why adding PEP doesn't change much.

  49. Zash

    No

  50. MattJ

    I agree with you that this is not ideal, and it should be user-visible

  51. Zash

    Ejabbed answers vcard requests to the full JID

  52. dwd

    Certainly when I first implemented XEP-0045 (or rather, worked on an implementation), the vCard thing was very well established.

  53. MattJ

    Zash, didn't they fix that?

  54. Zash

    Dunno

  55. dwd

    Zash, Oh, I'd forgotten about that.

  56. MattJ

    I *think* they fixed it some years ago, but not 100% certain, I haven't tested for a long while

  57. dwd

    MattJ, I think they have; I don't see the vCard requests coming into my client session from ejabberd MUCs now.

  58. MattJ

    Yeah, but really they had two bugs: intercepting vcard requests to the full JID, and their MUC implementation requesting to the full JID

  59. MattJ

    They had to fix the MUC implementation because Prosody didn't intercept, so you would never see Prosody user avatars in MUCs

  60. MattJ

    So I'm 95% sure they fixed that part, I'm less certain about the interception part

  61. MattJ

    larma, I don't generally disagree with you that this situation could be improved. But I disagree that just adding PEP significantly changed much, and we possibly disagree about where the fix should lie. I'm leaning towards giving the client more control over what happens when stuff is sent to their bare JID. That's precisely of the reasons why I'm pushing to move vcards to PEP, so we can remove that loophole which we've had for so long.

    👍 1
  62. MattJ

    (vcard-temp has no access control at all)

  63. MattJ

    A client could handle this today by keeping their nodes in whitelist mode, and optionally (i.e. with user consent when adding a new group to bookmarks) grant the MUC access to specific nodes

  64. larma

    MattJ: I would want to just have MEP or whatever you want to call it: store the avatar or whatever the user wants to share in a specific room with that room.

  65. MattJ

    I've never been a big fan of the room becoming a place for storage of external users

  66. MattJ

    I prefer a model where there is a single source of truth for this (the account), and it gets pulled on demand. Instead of having your data spread everywhere (as a user), and having to host arbitrary data from third-party users (as an operator).

    👍 1
  67. dwd

    MattJ, Which is why I lean toward controlled proxying. But, I can entirely be persuaded, to be clear.

  68. larma

    MattJ: the single truth is equivalent to single identity

  69. MattJ

    If you have an identity per room and manage to keep perfect record of everywhere you used that identity, then yeah. Personally I have an identity per account, because it keeps this and everything else cleanly separated.

  70. MattJ

    I can't imagine having to change my avatar in each of the ~100 MUCs I'm in. And if my client supports doing that automatically, I can't imagine wanting several of those MUCs to not update to my new avatar because the MUC server was temporarily unreachable at the time I updated my avatar.

  71. dwd

    MattJ, I think knowing which MUC I want my avatar to be shown in and configuring the occupant jid accordingly seems fine. Especially if that can (eventually) be a one-off configuration because of bare jid occupancy.

  72. dwd

    MattJ, Also because things like Jingle don't fit precisely into PEP-shaped holes, so PEP alone won't cover us. I think.

  73. MattJ

    Yes, we already have some per-account stuff on the MUC side (affiliation, nick, etc.), I'm fine with some configuration stuff

  74. MattJ

    I could even stretch to an avatar hash perhaps

  75. dwd

    MattJ, But I think we agree we don't want data storage.

  76. dwd

    MattJ, But I think we agree we don't want data storage?

  77. MattJ

    It seems we agree

  78. larma

    If storinh an avatar hash is fine, why is storing a link to the avatar file (avatar metadata node) so bad

  79. larma

    If storing an avatar hash is fine, why is storing a link to the avatar file (avatar metadata node) so bad

  80. dwd

    Link to?

  81. Cynthia

    IP loggers?

  82. Cynthia

    Especially if you can serve different PEP nodes to different users

  83. larma

    dwd: HTTP URLs, what we already do for high res avatars

  84. MattJ

    larma: I'd be fine with storing a reference to the avatar hosted somewhere else

  85. dwd

    larma, We do?

  86. MattJ

    We do, but it's understandably controversial 🙂

  87. larma

    Privacy for HTTP is an adjacent issue that needs solving for all kinds of stuff.

  88. Cynthia

    Is there a way to proxy the avatar link?

  89. dwd

    Not our problem to solve, surely.

  90. dwd

    Also what XEP is HTTP Avatars?

  91. MattJ

    IIRC it's in the normal avatar XEP? It always mentioned HTTP support but it wasn't really used

  92. MattJ

    https://xmpp.org/extensions/xep-0084.html#table-1

  93. MattJ

    Cynthia: see this thread: https://mail.jabber.org/hyperkitty/list/standards@xmpp.org/thread/W5DAHICDMX5ZCS6R6JRV5QWKHHMV4WIO/#HPGV4T5N6KJAULUL5CWPFPOXHNIG3OGK

  94. dwd

    > IIRC it's in the normal avatar XEP? It always mentioned HTTP support but it wasn't really used I think the kids describe my current feeling as "the ick".