XSF Discussion - 2018-11-17


  1. Ge0rG

    When doing multiple follow-up LMCs, do I reference the original message id or the follow-up message id?

  2. Ge0rG

    > A single message may be corrected multiple times by subsequent edits. The XEP doesn't quite tackle that explicitly

  3. jonas’

    Ge0rG, the original

  4. Ge0rG

    Aslo should a client allow both?

  5. jonas’

    IMO, no

  6. Ge0rG

    I think yaxim will overwrite the stanza ID with the correction's ID.

  7. Ge0rG

    I mean a _receiving_ client

  8. Link Mauve

    poezio does the same.

  9. Ge0rG

    so poezio will correct the last correction and not the original message?

  10. Ge0rG

    So it means I need to support both?

  11. Link Mauve

    The semantics are defined as replacing the message.

  12. Link Mauve

    This includes the id.

  13. Ge0rG

    Who promoted that shit to Draft?

  14. jonas’

    Link Mauve, only payloads though

  15. Link Mauve

    We have a linked list of older versions in the case the user wants to see a previous version, but we don’t recognise the old id as part of the discussion anymore.

  16. jonas’

    > It is expected that the receiver SHOULD then treat the new stanza as complete replacement for all the payloads received in the original stanza.

  17. jonas’

    > for all the payloads

  18. jonas’

    the @id is arguably not payload

  19. Link Mauve

    Ugh, I guess I missed that.

  20. pep.

    Would it be possible to get stuff, fliers/stickers/stuff to put on the table to say "Here is the XMPP assembly" (that I can maybe build with stickers myself)

  21. pep.

    for the CCC

  22. Ge0rG

    pep.: SCAM team?

  23. pep.

    scam@ ?

  24. pep.

    https://signup.c3assemblies.de/assembly/982f5ea6-fcea-4c1e-965d-8ef478149ac0 ! (wondering if others can see that)

  25. Ge0rG

    jonas’: how does JabberCat handle that correction-of-correction?

  26. jonas’

    it doesn’t implement LMC yet

  27. jonas’

    but in my mental model I was expecting to see the original ID

  28. Ge0rG

    lovetox: which message ID does Gajim referene on a correction of a correction?

  29. Ge0rG

    Conversations also corrects the last ID and not the original one

  30. jonas’

    meh

  31. jonas’

    then we’re doomed

  32. Zash

    Doooomed

  33. flow

    or we could make a list of the pros and cons of the different approaches and after careful evaluation aggree on exactly one

  34. jonas’

    flow, that sounds good

  35. jonas’

    Ge0rG, would you care to take it to the list?

  36. Ge0rG

    jonas’: you are lagging

  37. jonas’

    sorry :)

  38. Ge0rG

    I should keep a list somewhere of my questions to standards@ that never got answered

  39. jonas’

    Ge0rG, you got an answer!

  40. jonas’

    (but the list is probably still processing it)

  41. flow

    he said blockchain!

  42. jonas’

    :)

  43. MattJ

    I'm surprised it got through the spam filters

  44. jonas’

    hah

  45. Ge0rG

    > he said blockchain! ITYM Smart Contracts

  46. lovetox

    Gajim corrects the last message

  47. lovetox

    i always thought its pretty clear what that means

  48. lovetox

    protocol wise the last message that was sent out by the client

  49. lovetox

    not what the user may think was the last message or what the UI shows him as last message

  50. jonas’

    that’s also a nice rationale

  51. lovetox

    this all does not change though that the XEP allows to correct every message

  52. lovetox

    not only the last

  53. lovetox

    its just a recommendation

  54. jonas’

    requiring to correct the original @id and forgetting about the correction @id makes not-last message correction consistent though

  55. jonas’

    otherwise you can make a tree of corrections :)

  56. jonas’

    (well, you could also specify to forget the original @id and only keep the corrected one to fix that tree)

  57. lovetox

    i always thought this works good, you basically make a linked list of messages, every message references the one before with a correction

  58. daniel

    I forget the old one

  59. jonas’

    also, lovetox, daniel, to standards@ please

  60. jonas’

    otherwise Ge0rG is sad that he doesn’t get on-list replies ;-)

  61. daniel

    lovetox: so just to be clear about. When you correct for the second time you correct the id of the previous connection not the original one?

  62. lovetox

    yes

  63. daniel

    *Previous correction

  64. lovetox

    the last message protocol wise

  65. Ge0rG

    daniel: you are still listening, right?

  66. lovetox

    the last message i sent out

  67. daniel

    Then four clients independently made the same decision

  68. daniel

    That seems pretty clear to me

  69. daniel

    I mean we can clear up the xep

  70. jonas’

    yes please

  71. Ge0rG

    BLOCKCHAIN!

  72. jonas’

    I would’ve implemented it differently

  73. Ge0rG

    but jonas’ is right, this implies a tree and not a list

  74. daniel

    Not if you forget the old one

  75. daniel

    Which lovetox and I are doing

  76. Ge0rG

    but if we always reference the original, this is a star topology

  77. jonas’

    flattened by timestamps

  78. Ge0rG

    daniel: "forgetting" is an important point BTW, what if you only have the last N messages, and the original is N+1

  79. Ge0rG

    and are you keeping the timestamp?

  80. daniel

    Not sure about timestamps

  81. jonas’

    Ge0rG, then you already know which IDs you can ignore :)

  82. daniel

    I think I might use the new timestamp

  83. daniel

    But I can check later

  84. Ge0rG

    in yaxim, the correction timestamp overrides the original one, moving the LMC to the bottom of the chat

  85. lovetox

    Ge0rG, you cant know what message i want to correct

  86. lovetox

    i send you a message with a reference to an id

  87. lovetox

    and you correct that

  88. lovetox

    you have to pre prepared to get a message referencing the last message you received

  89. daniel

    Can I propose YMC again

  90. jonas’

    YMC?

  91. daniel

    Yolo message correction

  92. daniel

    Anyone can correct any message

  93. jonas’

    oh dear

  94. Ge0rG

    lovetox: I lost you.

  95. lovetox

    i dont know why you care what message i correct

  96. lovetox

    "the original" or some other message

  97. lovetox

    when implementing that i didnt spend one thought about what messge another clients wants to correct and if its a original or not

  98. jonas’

    lovetox, the question is then how you decide what is displayed, maybe?

  99. jonas’

    I don’t konw, I can’t follow

  100. lovetox

    message comes in -> has id ref -> look is that id the last message for that client -> yes -> overwrite that message in gui

  101. jonas’

    which would break if your interpretation of what constitutes the "last message" diverged from everyone elses (which it doesn’t)

  102. jonas’

    i.e. if everyone (except you) agreed that replacement does not create a new "last mesasge" and thus would be using @id of the original message, you wouldn’t be able to handle re-corrections at all (because your flow would discard it because it’s not hte "last message")

  103. jonas’

    and this is why it’s sensible to think about this

  104. lovetox

    correct

  105. jonas’

    you just got lucky that your intuition matched that of others :)

  106. jonas’

    (mine didn’t)

  107. lovetox

    in my opinion this is a easy to follow rule that every client can check

  108. lovetox

    the last message i received over the wire

  109. lovetox

    every other definition depends on what you do with your UI

  110. lovetox

    what you show the user

  111. lovetox

    what you do in your db

  112. jonas’

    not really

  113. jonas’

    also

  114. jonas’

    by that argument

  115. jonas’

    do you allow corrections after you have seen Chat STate Notifications from a client?

  116. jonas’

    or Chat Markers

  117. jonas’

    which are also messages

  118. lovetox

    thats not what i meant

  119. jonas’

    but it’s the same thing :)

  120. lovetox

    obviously we talking about stuff that has a body

  121. jonas’

    not that obvious

  122. lovetox

    my point is

  123. jonas’

    you could treat corrections as meta-message just like CSN or Markers, apply its effect (replace previous messages payload) and not include it in the "messages" array.

  124. jonas’

    it is not that obvious, is all I’m saying

  125. lovetox

    how should i know that if i reference a id that is 3 messages back, is till the last message for your client?

  126. jonas’

    dinner

  127. jonas’

    because you don’t include the corrections in your list of "messages"

  128. lovetox

    > A single message may be corrected multiple times by subsequent edits.

  129. lovetox

    for me this is just stating that this is possible

  130. Ge0rG

    lovetox: your ML message is as ambiguous as what you write in here. I can't follow you

  131. lovetox

    what is ambiguous?

  132. Ge0rG

    lovetox: in terms of the two examples you provided to Андрей, which one is Gajim sending out, and which one of those it understands when receiving?

  133. lovetox

    that post was a question to the list

  134. lovetox

    and not to answer your question

  135. lovetox

    see my other ML reply to answer your question

  136. Ge0rG

    lovetox: but your answer to my question also didn't answer my question

  137. lovetox

    whats not clear about it?

  138. lovetox

    how can the "last message that is sent over the wire" be ambiguous

  139. lovetox

    ?

  140. Ge0rG

    lovetox: so you reference the id of the last correction?

  141. Ge0rG

    or rather, previous correction

  142. lovetox

    yes

  143. lovetox

    i dont see the value in the other approach, instead of just checking the last message, you would have to check all messages between the original and the last correction

  144. lovetox

    you must check that all these messages are corrections of the original, otherwise you would have to deny the correction

  145. Ge0rG

    how will Gajim handle a received message correcting the original ID?

  146. lovetox

    it denys all messages that dont reference the last message that was received

  147. lovetox

    deny meaning its displayed not as correction

  148. Ge0rG

    thanks

  149. lovetox

    thats my idea of it, i never put it to a test in gajim though ^^

  150. lovetox

    my idea how the code should work, and what it actually does are sometimes not the same thing

  151. goffi

    Hello. In XEP-0198 what happen if client specify a prefered maximum resumption time ("max" attribute) and server specify an other one? I don't see the point of having 2 different values (except if the server has a default value and overwritte it by client prefered value, but nothing like that is specified).

  152. Holger

    goffi: The client can specify a desired value, but the server decides.

  153. goffi

    Holger: OK thanks, in this case the formulation in the XEP is bad, it states "he <enabled/> element MAY include a 'max' attribute to specify the server's preferred maximum resumption time.", it's not preferred value, it's authority value: the one which will be used.

  154. Holger

    goffi: Revision 0.7 had this: > the <sm/> element MUST include a 'max' attribute that specifies the longest allowable time period for session resumption (in seconds). https://xmpp.org/extensions/attic/xep-0198-0.7.html

  155. Holger

    I guess in the end it's not really interesting for clients. I guess they'll usually just try to resume as fast as possible, and they must be prepared to handle a <failed/> resumption no matter whether they're within the 'max' time period or not.

  156. lovetox

    yeah, i dont see how this is useful for the client

  157. goffi

    Holger: it's interesting for client to know when the session can be deleted.

  158. goffi

    I don't think it's really interesting to specify, as the server have authority anyway, but knowing when the session ends is useful, and it should be a "MUST" and not a "MAY" in my opinion (in <enabled/>).

  159. Holger

    goffi: At least with ejabberd, the timeout for a given session can change after <enabled/>, so I'm not sure ejabberd could adhere to such a MUST clause.

  160. goffi

    Holger: how does it changes ?

  161. Holger

    The server can be configured in a way that enabling of push notifications increases the timeout drastically. And then when an actual push notification is generated, the original timeout is restored. Stuff like that.