XSF Discussion - 2020-03-27


  1. Link Mauve

    In MIX, is it impossible to unsubscribe from a node after having joined a channel, instead of leaving and rejoining with just the ones we want?

  2. Zash

    Instinctively I'd say you should be able to un/subscribe to individual nodes all you want.

  3. Zash

    I thought the join stanza was mainly a convenience thing that did a bunch of subscribes for you under the hood

  4. Link Mauve

    Zash, the join has to be done by the user’s server, then there is the update-subscription that can be done directly by the user, but it doesn’t define an unsubscribe mechanism.

  5. Link Mauve

    I guess I’ll propose it.

  6. MattJ

    People who are using XEP-0333 in the wild, are you really using the id attribute for that?

  7. MattJ

    In a MUC especially that seems like a bad idea

  8. larma

    MattJ, it doesn't say which id to use, does it?

  9. larma

    > The Chat Marker MUST have an 'id' which is the 'id' of the message being marked. isn't really specific

  10. MattJ

    The example shows it using the id attribute

  11. larma

    true

  12. MattJ

    So those two things combined suggest that yes, it does specify

  13. pep.

    "The example shows" is not normative :x

  14. MattJ

    Regardless, we have plenty of things only documented by examples in XEPs :)

  15. larma

    the example message also isn't in a MUC, so...

  16. pep.

    Maybe someday we'll make them normative..

  17. larma

    also the example doesn't have origin-id or stanza-id, so maybe the rule is, "Use in order: stanza-id of a MUC, origin-id, message id attribute", the examples are just not good in showing that rule and it's not written down yet 😀

  18. MattJ

    Nice try :)

  19. MattJ

    which is why I asked what people are doing in the wild

  20. larma

    we don't do stanza id

  21. larma

    (Dino)

  22. Daniel

    Conversations uses orgin id for everything 184 and 333 related

  23. flow

    larma, chat markers (and many other xeps referring to just "id") predate other xeps which introduce other IDs, so it is safe to assume that those XEPs are talking about rfc6120 IDs

  24. Daniel

    Not going into the _correctness_ of that but you asked what clients are doing

  25. larma

    We also consider origin-id the new id attribute pretty much everywhere in Dino

  26. larma

    (if present)

  27. Daniel

    Using the stanza id might be _more_ correct in mucs. But only available in mucs. And then you have different behavior for group chats and 1:1

  28. larma

    I guess we would want different behavior here

  29. MattJ

    Looks like converse.js uses the id attribute

  30. MattJ

    I'm in a situation where I want the MUC to be able to track who has read what

  31. Daniel

    That's why I advocated multiple times that clients setting the orgin-id must set message ID and orgin id to the same value

  32. larma

    IMO we should finally have a XEP that rules how to use IDs properly

  33. larma

    like all of them

  34. MattJ

    Daniel, yeah, I think that makes sense

  35. MattJ

    I mean, we almost dropped origin-id entirely anyway

  36. larma

    Daniel, isn't that what all clients do that support origin-id?

  37. larma

    (although it should be in the XEP)

  38. larma

    and it should also be in the XEP that it shall be UUIDs

  39. Daniel

    larma: maybe. It's definitely not codified in the xep and flow was against that

  40. pep.

    But that works only if muc#stable-id right?

  41. pep.

    id == origin-id

  42. Daniel

    Well no

  43. Daniel

    It's about expectations

  44. pep.

    I mean for MUC cases

  45. Daniel

    When a client expects the reply to reference the normal ID and the replyee uses the orgin id it doesn't matter

  46. larma

    pep., the sender can send id == origin-id, it's just not guaranteed to be the same after it passed MUC

  47. Daniel

    Because both would work

  48. pep.

    larma, sure I agree

  49. pep.

    The receiver will have very different expectations if muc#stable-id is present or not

  50. MattJ

    jonas’, weird revision history here? (see timestamps): https://xmpp.org/extensions/xep-0184.html#appendix-revs

  51. MattJ

    1.3.0 is dated later than 1.4.0

  52. jonas’

    probably a slip when writing the year

  53. jonas’

    or maybe a PR which was stuck reaaaaly long

  54. larma

    pep., I personally don't like muc#stable-id, we kind of have to work-around it everywhere with stanza-id of the MUCs MAM. It would be much more useful if MUCs would just guarantee that id is a uniquely generated random id and tell the sender the id their message got

  55. pep.

    It would..

  56. pep.

    I'm not saying I like it either

  57. MattJ

    larma, that's basically exactly what I'm considering doing right now :/

  58. MattJ

    Looks like we don't even advertise stable-id

  59. jonas’

    sounds like MIX

  60. MattJ

    But I imagine many clients will break if we just rewrite ids

  61. MattJ

    (though jabber.org still does that, right?)

  62. larma

    MattJ, I don't think so, most clients can handle it if muc#stable-id is not present

  63. larma

    also some gateways don't support it

  64. MattJ

    So I'm looking at converse.js which uses the 'id' attribute in XEP-0184 and XEP-0333

  65. Zash

    Maybe there should be both muc#stable-id and muc#random-id

  66. larma

    we could have a new feature muc#unique-id

  67. larma

    😀

  68. MattJ

    it doesn't appear to look for origin-id or detect muc#stable-id

  69. MattJ

    I think it uses origin-id only to track what messages are reflections

  70. larma

    btw, I always wondered if muc#stable-id is a violation of RFC 6120

  71. larma

    > It is up to the originating entity whether the value of the 'id' attribute is unique only within its current stream or unique globally. None of the two is guaranteed when doing muc#stable-id

  72. MattJ

    It depends what you consider the "originating entity" to be

  73. larma

    well, the one in from

  74. MattJ

    Some people argue the client is the originating entity, others argue that the MUC is originating a new message based on the one the client submitted

  75. larma

    which is the muc

  76. MattJ

    Are clients storing a map between the id assigned by the MUC and the origin id?

  77. MattJ

    or what?

  78. MattJ

    If Converse.js sends a 184 receipt for the id assigned by the MUC (@id), are clients going to know what it is acknowledging?

  79. jonas’

    MattJ, aioxmpp relies on #stable-id for tracking of its own messages. Without that, it’ll fallback to matching the body, which is stupid.

  80. MattJ

    Neither XEP says to use origin-id, so I can't argue it's a bug in Converse

  81. MattJ

    jonas’, why not origin-id?

  82. jonas’

    MattJ, because we don’t auto-generate origin-id

  83. jonas’

    I consider that to be a different layer

  84. MattJ

    Have fun with that :)

  85. jonas’

    works well ;P

  86. MattJ

    This is all a terrible mess

  87. jonas’

    agreed

  88. MattJ

    I'm just trying to get stuff done that will work with all clients

  89. MattJ

    But there is a gaping hole in the specs, so it's impossible

  90. jonas’

    MattJ, a MIX-style annotation in the reflection to myself would be ok too, though

  91. Zash

    Thou shallt not have nice things!

  92. MattJ

    So right now it looks like I'll have to just make it work with Converse.js and likely mess up other clients

  93. jonas’

    what problem does converse.js have?

  94. MattJ

    It doesn't have a problem

  95. jonas’

    if it doesn’t work with #stable-id, I consider that a roblem ;)

  96. larma

    MattJ, Dino stores for each message (when possible) two IDs: the "stanza_id" which is either origin-id or id attribute and the "server_id" which is stanza-id of MUC in MUCs or stanza-id of your bare jid (= your MAM id) in direct message. If origin-id and id attribute mismatch we have a problem 😀

  97. jonas’

    if it doesn’t work with #stable-id, I consider that a problem ;)

  98. MattJ

    jonas’, it does work with #stable-id

  99. jonas’

    then I can’t follow at all

  100. MattJ

    I'm working on the server side, and I want to figure out what clients are acking (I imagine this would also apply to a client that wanted to observe what messages other occupants had received/read)

  101. MattJ

    Currently it seems I need to store a map of a non-unique id (@id) to stanza-id

  102. MattJ

    The non-unique part obviously makes that impossible

  103. MattJ

    (or unreliable, if you prefer)

  104. Zash

    If you're in the camp with "You send a message to the MUC, which then sends its own message out", shouldn't the MUC answer receipts then?

  105. Zash

    MUC could even send receipt-requests on its messages and return a receipt to the original sender when it gets receipts from enough participants.

  106. MattJ

    And read markers?

  107. jubalh

    gosh

  108. Zash

    Ugh

  109. pep.

    Zash, how do you define "enough"

  110. Zash

    Implementation detail!

  111. MattJ

    Usually you can cope with the non-uniqueness of @id by scoping to a particular JID, but you can't do that in MUC (because acks get sent to the MUC JID)

  112. Link Mauve

    Guus, how up to date is your MIX server implementation?

  113. Link Mauve

    Could it be used to proxy joins and let clients access it?

  114. Guus

    Link Mauve I have none.

  115. Guus

    I think Surevine / Dave created one once, based on Openfire, but that never was merged.

  116. Guus

    dwd ?

  117. Guus

    https://github.com/surevine/Openfire filter branches for "mix" and you'll find a couple. I do not know what their state is.

  118. Guus

    Dave and me previously discussed working on getting this merged in Openfire, but never got around doing that.

  119. edhelas

    https://twitter.com/MovimNetwork/status/1243574534600626186

  120. jubalh

    how can I create account for the wiki https://wiki.xmpp.org ?

  121. Link Mauve

    jubalh, ask Guus, ↑

  122. jubalh asks Guus

  123. pep.

    Or Ge0rG

  124. pep.

    Or https://wiki.xmpp.org/web/Sysops

  125. Ge0rG

    It's well documented on https://wiki.xmpp.org/web/Sysops - please provide your desired wiki user name in CamelCase and an email address. real name is optional

  126. Ge0rG

    jubalh: It's well documented on https://wiki.xmpp.org/web/Sysops - please provide your desired wiki user name in CamelCase and an email address. real name is optional

  127. xcndmv

    holla

  128. daniel

    hola

  129. emus

    Hola compañiero../a?

  130. rion

    por que todos hablan español?