XSF Discussion - 2024-06-27


  1. jonas’

    it's communicating while using the client as a transport :)

  2. Guus

    Looking at XEP-0054 vcard-temp, section 3.3 (http://xmpp.org/rfcs/rfc6121.html#rules-localpart-nosuchuser): > If no vCard exists or the user does not exist, the server MUST return a stanza error, which SHOULD be either <service-unavailable/> or <item-not-found/> (but the server MUST return the same error condition in both cases to help prevent directory harvesting attacks). RFC 6121 section 8.5.1 (https://xmpp.org/rfcs/rfc6121.html#rules-localpart-nosuchuser): > If the user account identified by the 'to' attribute does not exist, how the stanza is processed depends on the stanza type. For an IQ stanza, the server MUST return a <service-unavailable/> stanza error to the sender. Doesn't that mean that `item-not-found` as suggested by 0054 cannot be used?

  3. MattJ

    Traditionally XEPs have been given priority over the RFC, but in this case I would stick with the advice in the RFC (especially since the XEP gives you that option)

  4. Guus

    Isn't the rationale between both conditions the same anyway (protect against harveting)?

  5. Guus

    (as in: shouldn't we drop item-not-found from 0054?)

  6. MattJ

    Yes

  7. singpolyma

    Would be a breaking change though

  8. Guus

    I've raised https://github.com/xsf/xeps/pull/1351 with a suggested change.

  9. ManDay

    so at which point will pms work consistently? when muc 2.0 or mix are done i.e. the far future?

  10. ManDay

    or is there hope for a breaking change in muc which straightens this out?

  11. MattJ

    What do you mean by "consistently"?

  12. ManDay

    My understanding is that the problems where a PM send on one device will not appear (carbon?) is due to an inconsistency how messages are replicated in MUC vs 1:1

  13. ManDay

    I.e. some re-intepretation of wether all devices of a user should be joined in a room or so - I forgot the details, but the effects are very prominent

  14. MattJ

    The fix for that is to not use MUC PMs or wait for MUC 2.0 or MIX which remove the ability to use MUC PMs :)

  15. ManDay

    well that's kind of exactly where I started isn't it 😝

  16. MattJ

    MUC joins are per-client, so PMs go to one client

  17. MattJ

    Sure, I'm hoping I answered your question

  18. ManDay

    Well, kind of. The timeframe isn't much clearer to me now, though.

  19. ManDay

    (the educatedly-guessed timeframe, that is)

  20. MattJ

    The majority of the federated XMPP ecosystem is made of open-source projects

  21. MattJ

    I don't know how familiar you are with open-source project scheduling, but wait around long enough and you'll see :)

  22. Kev

    Or won't.

  23. ManDay

    I'm a very experienced complainer :D

  24. ManDay

    I mean 369 is experimental but I haven't so much as remotely heard that any client tried to support it (or server, for that matter)

  25. MattJ

    Nobody can set a timeline, it will be done when it's done. My personal goal is to have a post-MUC protocol in Prosody by the end of the year.

  26. Andrzej

    369 is supported by Tigase XMPP Server, Siskin IM for iOS and Beagle IM on macOS

  27. MattJ

    And M-Link (not open-source) and ejabberd has a MIX prototype

  28. Daniel

    And Kaidan afaik

  29. ManDay

    Ah wow, okay. MattJ that's all I needed, for me it's question of 1 year vs 10 years. So I hope this means we're closer at 1 year

  30. MattJ

    Well I'm not holding my breath for MIX at this point

  31. Daniel

    Well the summit killed MIX

  32. MattJ

    Long live MUX? :)

  33. jonas’

    why is it not Deprecated then?

  34. ManDay

    What why?

  35. Zash

    Daniel, that time when we all promised to go home and implement MIX? Yeah that definitely killed it

  36. Daniel

    Zash: that was the summit before that

  37. Daniel

    And then we didn't do that

  38. ManDay

    MattJ what's the post-MUC you're referring to then?

  39. Kev

    I just want us to fix the glaring issues that are baked into MUC (nick-as-resource addressing, implicit presence membership etc.), MIX tried to do that. If there are better ways, we can change MIX. If there's bits that cutting out of MIX makes it more palatable, we can trim them, etc. I am not desperately tied to the protocol that's in MIX. But I also don't think MIX is as far removed from MUC as it appears to people.

  40. MattJ

    ManDay, I'm drafting a proposal here, which I plan to prototype in the very near future: https://pad.nixnet.services/s/7xKNOKxxE

  41. MattJ

    MIX throws everything out and starts from scratch with a very different (and unproven) architecture. This proposal is more about making a bunch of smaller improvements to MUC, without needing to rewrite the world or jump through hoops for backwards compatibility.

  42. Kev

    MIX really does not do that :)

  43. Kev

    Or, at the very least, is not trying to do that.

  44. Andrzej

    changing nick-as-resource addressing and a few other things will break compatibility anyway…

  45. MattJ

    It doesn't jump through hoops for backwards compatibility? This is true ;)

  46. Kev

    It's all meant to map cleanly between MUC/MIX (as much as possible) and when I was knocking together prototype code it all seemed to do that.

  47. Kev

    > changing nick-as-resource addressing and a few other things will break compatibility anyway… I don't think that has to be at all true.

  48. Andrzej

    MattJ, I was able to write component that supports both MIX and MUC so compatibility is not an issue in my opinion

  49. MattJ

    Andrzej, it's easier to present the two interfaces of the same room than it is to present MUC and MIX

  50. MattJ

    Yeah, it's not an issue for you if you've already done it, I agree :)

  51. MattJ

    But no other (open-source?) implementation has achieved it

  52. Andrzej

    did any tried?

  53. Kev

    Ejabberd and Openfire implementations never made it to OSS did they?

  54. MattJ

    Yes, I made two attempts, and ejabberd still has an experimental branch

  55. MattJ

    MUC compatibility is a hard requirement for me, because I care a lot more about the federated network than about closed deployments

  56. MattJ

    I don't know if ejabberd's implementation bridges to MUC, maybe Holger knows

  57. Mickaël

    yes, it was in oss. We tried a prototype implementation, but have been lazily (guilty for that) waiting for the next steps in case it had to get through significant changes.

  58. MattJ

    Mickaël, do you know if it bridges to MUC, or whether MIX groups are independent?

  59. MattJ

    i.e. can a MIX client and a MUC client transparently join and manage the same room?

  60. Mickaël

    > Mickaël, do you know if it bridges to MUC, or whether MIX groups are independent? No bridge, just separate service for now

  61. MattJ

    Right

  62. MattJ

    That's pretty simple to implement, but I didn't even try

  63. MattJ

    That is, if you have a pubsub implementation, which we all do, it makes MIX very easy :)

  64. ManDay

    MattJ the issues you mention all go a bit over my head. From my perspective I'm happy with MUC but for a few small grievances, like PMs, which seem to be solvable by straightening out non-fundamental flaws. But that's just my user perspective.

  65. MattJ

    Same here. But instead of fixing those small issues, MIX invented an entirely new incompatible protocol for group chats :)

  66. MattJ

    If we didn't have to worry about existing implementations and deployments, that would be fine

  67. Kev

    It's not incompatible, it's really not hard to have MIX and MUC be the same entity.

  68. ManDay

    Well your proposal also contains not so few not so small architectural changes. I'm not saying it's a bad thing in either case; I just can't relate to it.

  69. MattJ

    That's something I disagree on, but I understand that my opinion is based purely on my own experience

  70. MattJ

    ManDay, my proposal is all stuff that we are already doing or can trivially do on top of MUC today

  71. MattJ

    But right now it's spread out across a bunch of different XEPs

  72. ManDay

    I see nothing wrong with that. It grew into several XEPs so what

  73. MattJ

    It makes it harder for developers to know what's what

  74. ManDay

    I think that is at best a formality or remedied by an overview document - nothing which demands redesign of the actual semantics.

  75. MattJ

    It gets messy. We've done similar consolidation with SASL2/Bind2, and it simplifies implementations a lot. Simpler protocol and implementation leads to faster development and fewer bugs.

  76. MattJ

    I risk repeating myself, but MIX, today, as specified, is prone to message loss

  77. MattJ

    The answer is always "we can fix that", whever I point out issues in MIX

  78. MattJ

    and it's not untrue, we could

  79. ManDay

    The PM issue though, please refresh my memory (I can't find the debate, unfortunally), it's that PMs issued from one device of user@domain.com do not get replicated to other devices by domain.com, why?

  80. MattJ

    But it doesn't seem worth the effort to me when we can also just fix MUC

  81. MattJ

    ManDay, if you join the room from multiple devices, you wouldn't want to receive duplicates of each message

  82. ManDay

    > It gets messy. We've done similar consolidation with SASL2/Bind2, and it simplifies implementations a lot. Simpler protocol and implementation leads to faster development and fewer bugs. I get it , yeah

  83. ManDay

    > ManDay, if you join the room from multiple devices, you wouldn't want to receive duplicates of each message Yeah that was the catch somewhere, because MUC does message duplication in itself, right? Which is historically designed that way because not every device may be joined in a MUC yaddayadda, right?

  84. ManDay

    Just why does MUC do the replication and not the user's server (as it is the case for 1:1 iirc)?

  85. MattJ

    MUC doesn't - your server is supposed to

  86. ManDay

    (goddamit if I could just find that debate and re-read it again :-/)

  87. MattJ

    or, I'm misremembering

  88. MattJ

    Here we go, here are the rules: https://xmpp.org/extensions/xep-0280.html#recommended-rules

  89. ManDay

    So where again is the problem, device user@domain.com/A sends a PM, why does domain.com not carbon that to /B and /C, the other devices?

  90. ManDay

    Ok, reading...

  91. ManDay

    ah yes, that x... it's coming back to me now

  92. MattJ

    So based on this, the MUC service is responsible for the copying, which it can only do if all your resources are joined to the room

  93. ManDay

    yeah and iirc, that's the part that (I found) inconsistent, but let me catch up... I didn't actually read 280 yet

  94. ManDay

    What happend to KISS 😐

  95. Holger

    ManDay: MUC PMs existed long before XEP-0280 did. Back then, 'sync all history to all devices' wasn't a thing yet. You'd usually see the current 1:1 conversation on the current device, and the next one on the next device. MUC was invented, and a requirement was to allow several devices to join the same room. If you did that and received a PM, MUC services just copied PMs to all joined devices.

  96. Holger

    ManDay: Now you keep looking at things from today's perspective, where 'sync all history everywhere' is a thing. From that perspective, you'd obviously design things differently, yes.

  97. ManDay

    Ok my trouble with this is why the MUC would need any notion of multiple devices in the first place. When I try to "keep it simple" in my head, the absolute only entity which must know about "multiple devices" is the user's own server. Why does this reasoning not apply to MUC?

  98. Holger

    ManDay: And the MUC PM weirdness you mean is specifically due to the old logic not playing well with the new 'sync all history everywhere' idea.

  99. ManDay

    Thank you Holger for that comprehensive explanation (again? 😅)

  100. Holger

    ManDay: Apart from all that I think MUC PMs have way more serious issues.

  101. Holger

    ManDay: From today's perspective that question makes sense, it's basically how MIX is designed. Back then, it seemed normal that only a subset of your devices was joined to a room, possibly only temporarily. The user's own server wouldn't easily be able to handle that.

  102. ManDay

    All right, because only the MUC knew which devices where joined? I must say that even with the then-perspective in mind it doesn't seem to make sense to leak a notion of devices to other servers... But okay, that milk is spilled and recomposted by now, I guess.

  103. ManDay

    Anyway, and thanks for making this clear so quickly, that is the inconsistency which I rememberd, MattJ (and I shall copy and backup our conversation just now, just in case...)

  104. Holger

    ManDay: "Leaking" that notion is core to the XMPP protocol. Unlike email, it allows for addressing individual devices as opposed to accounts. Which allows individual devices to perform service discovery on remote entities, querying room archives, and so on.

  105. lissine

    ManDay: Gajim supports receiving PMs as carbons, as well as fetching PMs from mam, though the messages you receive from others are sometimes duplicated two or three times (I guess this is the number of online clients at the time) I think client developers don't want to implement those features because they're probably a headache. But the current protocol works

  106. lissine

    (Message duplication is when fetching PM history from mam)

  107. ManDay

    > ManDay: "Leaking" that notion is core to the XMPP protocol. Unlike email, it allows for addressing individual devices as opposed to accounts. Which allows individual devices to perform service discovery on remote entities, querying room archives, and so on. I see. It seems very strange to me. I would think that, as a communications protocol, the only concern would be addressing "someone" - and never "someone on a specific device". If only a specific device is involved in the communication, the server which "represents" that "someone" would deal with it.

  108. ManDay

    lissine Uhm the "though messages [...] are sometimes duplicated" doesn't actually sound like it works?

  109. lissine

    ManDay: We don't know whether it's a client bug or a problem with the spec. But you always get your PMs in Gajim (even if duplicated), unlike what you stated in the beginning about it being infeasible because of the protocol

  110. Holger

    ManDay: You could obviously redesign things to have the user server proxy outgoing requests of individual devices, which would add quite a bit of complexity for no obvious gain. Let alone incoming traffic to individual devices (like OMEMO negotiation or whatnot).

  111. lissine

    ManDay: But sure, making that part of the spec simpler / easier will result in more clients implementing it

  112. Holger

    ManDay: I mean yes the "someone" idea makes sense as long as we're only looking at actual IM text messages, given the 'sync everything everywhere' thing. But XMPP does way more than that.

  113. Mickaël

    > I see. It seems very strange to me. I would think that, as a communications protocol, the only concern would be addressing "someone" - and never "someone on a specific device". If only a specific device is involved in the communication, the server which "represents" that "someone" would deal with it. In XMPP, you can address devices because they can have different capabilities. They do not have to be a chat client. I had a client streaming music, when sending messages to it, connected under my own account.

  114. lissine

    Yes, addressing someone is relevant when doing an audio / video call, or a P2P file transfer As for PMs, AFAIK they are sent to room@conference.example.org/nick And AFAIK you can join a room with multiple clients using the same nick That's how you get carbons with PMs

  115. lissine

    Yes, addressing a specific device is relevant when doing an audio / video call, or a P2P file transfer As for PMs, AFAIK they are sent to room@conference.example.org/nick And AFAIK you can join a room with multiple clients using the same nick That's how you get carbons with PMs

  116. Zash

    lissine, challenge: find where it's defined that multiple clients can join with the same nick ;)

  117. lissine

    > lissine, challenge: find where it's defined that multiple clients can join with the same nick ;) It's possible or I got this wrong?

  118. Kev

    It's possible, but it's woefully under-specced, was the point.

  119. ManDay

    I still haven't understood what goes wrong when I **send** a PM on /X and it doesn't show up on /Y - is that by design? Shouldn't it be a carbon going to Y?

  120. lissine

    Zash: it was pretty easy to find ;) > However, if the bare JID <localpart@domain.tld> of the present occupant matches the bare JID of the user seeking to enter the room, then the service SHOULD allow entry to the user, so that the user has two (or more) in-room "sessions" with the same roomnick, one for each resource. https://xmpp.org/extensions/xep-0045.html#enter-conflict

  121. Kev

    Now try to implement it on a server using only that information ;)

  122. lissine

    There's more in the paragraph: > If a service allows more than one occupant with the same bare JID and the same room nickname, it MUST route in-room messages to all of the user's resources and allow all of the user's resources to send messages to the room; it is up to the implementation whether to route private messages to all resources or only one resource (based on presence priority or some other algorithm); however, it is RECOMMENDED to route to all resources.

  123. lissine

    ManDay: you see this paragraph above? That RECOMMENDED is recommended is probably why

  124. lissine

    ManDay: you see this paragraph above? That RECOMMENDED (instead of REQUIRED / MUST) is probably why

  125. ManDay

    Does "route PMs" refer to routing PMs back to the user themself here?

  126. lissine

    A resource means a connected client

  127. ManDay

    So if I send a PM with Movim to xsf@muc.xmpp.org/lissine and it doesn't show up on my Conversations, then I should complain to.... xmpp.org? Or monocles.eu (being my server)?

  128. ManDay

    xmpp.org, I suppose?

  129. singpolyma

    > Now try to implement it on a server using only that information ;) Isn't the only "hard part" that iq effectively routes randomly?

  130. Kev

    > > Now try to implement it on a server using only that information ;) > Isn't the only "hard part" that iq effectively routes randomly? Nick changes at least used to be underspecified, too.

  131. ManDay

    (I did not actually mean to complain, just rhetorically speaking, of course)

  132. ManDay

    What motivates the "RECOMMEND", though - it seems a mistake that the user can not rely on their message history being mirrored across all (joined) devices.

  133. singpolyma

    Around here it is commonly believed that RECOMMEND means must

  134. singpolyma

    But MUST means really really must 😉

  135. ManDay

    Well it doesn't work for me though. I will send you a PM:

  136. singpolyma

    MUC PMs go to MAM, so you can even get them without ever joining the room haha

  137. ManDay

    Well it doesn't work for me though.

  138. lissine

    I actually like that feature :p

  139. lissine

    But Gajim is the only client that I'm aware of that supports it

  140. singpolyma

    I'm strongly considering removing the ability to initiate or send arbitrary MUC PMs entirely

  141. ManDay

    So you are saying if I send a PM in (say) Conversations and it doesn't show up in Movim it's most likely a client bug?

  142. lissine

    ManDay: wait a few minutes for me to test

  143. singpolyma

    Your own outgoing one not showing up you mean?

  144. ManDay

    Yes singpolyma

  145. lovetox

    yes its usually a client bug

  146. singpolyma

    That's just carbons. Nothing to do with MUC at all. So yeah, not sure either your server's carbon rules are not triggering for that or it's a client bug

  147. lovetox

    but also all the PM rules are hard, so you most likely will see bugs in various clients

  148. lovetox

    for example i see a ejabberd bug since a few months, it for some reason puts a pm under certain circumstances twice in the mam archive

  149. ManDay

    > That's just carbons. Nothing to do with MUC at all. So yeah, not sure either your server's carbon rules are not triggering for that or it's a client bug Great, so it's a bug in either one of two clients or at my server... That's sounds like fun figuring out

  150. ManDay

    singpolyma it's *my* server though, not the MUC server, or could that also be?

  151. lissine

    > Great, so it's a bug in either one of two clients or at my server... That's sounds like fun figuring out ManDay, prosody + Gajim don't have this issue. So each time change a piece of your setup to figure out

  152. ManDay

    lissine prosody being MUC and server and two instances of Gajim, I take it?

  153. ManDay

    I'm unfortunally not equipped to walk the entire combinatorics of MUC server, user server, client 1, client 2...

  154. ManDay

    And to be very frank, god beware this happen to a non-techie - how would they possibly get this sorted out...

  155. Daniel

    To be fair most users don't care MUC PMs

  156. lissine

    ManDay, A prosody account logged in on Gajim will receive PM carbons, regardless what is the other client I think it also doesn't matter if the MUC component is prosody or ejabberd. But test to be sure.

  157. ManDay

    > To be fair most users don't care MUC PMs That's true

  158. lissine

    > To be fair most users don't care MUC PMs Only those who use public channels do But you're right, that's a small percentage of the overall network

  159. ManDay

    Well... Unless they join a room which says "PM a moderator to ask for voice" :)

  160. ManDay

    I have a prosody account logged in on Conversations and Movim - and neither direction (Movim -> C; C -> Movim) worked

  161. ManDay

    Well okay, I'll figure it out. Thanks for looking into it in any case!

  162. lissine

    speaking of which, Daniel, maybe you should accept the 'request to speak' PRs to make PMs less important 😇️

  163. lissine

    > MUC PMs go to MAM, so you can even get them without ever joining the room haha singpolyma, shouldn't that be fixed with unique_occupant_ids, so that another person can't get your history simply by getting your nick?

  164. singpolyma

    lissine: no they don't go to MUC mam. They go to *your* MAM

    👍 1
  165. lissine

    ManDay, Conversations and its forks don't handle carbons for private messages

  166. ManDay

    understood, ty

  167. s1

    hello.. is there a place/club/forum to test SIP/xmpp internet video/voice calls with people around the world?