XMPP Council - 2024-08-06


  1. daniel

    Reminder that we will have a council meeting in a little over an hour

  2. moparisthebest

    \o/

  3. daniel

    I sent out an agenda just now. I realize that most of you won't be ready to vote when I sent out the agenda 40 mins before the meeting. But with a lot on our plate I think it's important to get the voting period started

  4. singpolyma

    looks great

  5. moparisthebest

    Thanks for that, I think h) https://github.com/xsf/xeps/pull/1365 actually makes a normative change that we technically shouldn't make without a version bump no?

  6. moparisthebest

    If that MUST was a SHOULD I think it'd be ok...

  7. dwd

    moparisthebest, I'm not entirely sure it *is* a normative change, but in any case it doesn't require a version bump since the wire protocol remains unchanged, surely? Other parts of the spec, such as 10.1.3's final paragraph, imply that the destroy element was always intended to be present. MUST vs SHOULD is your call; I don't think it affects whether a version bump is needed though.

  8. singpolyma

    I probably agree if the change is happening because that's not being done in practise then maybe SHOULD is appropriate

  9. Zash

    Can a thing following the previous version talk to a thing following the new version?

  10. singpolyma

    I don't see why not

  11. moparisthebest

    But a new thing can't be written expecting a MUST if it might not happen

  12. singpolyma

    right. I think I agree SHOULD is more appropriate

  13. moparisthebest

    At least old openfire didn't do this because Guus' PR links to that change πŸ™ƒ

  14. moparisthebest

    And we all know how long old openfire's stay online and not updated... πŸ’€

  15. Kev

    If you implement new 45, you're entitled to misbehave against a server implementing the old version. That seems bad.

  16. dwd

    Well, you could say MUST include <destroy/> and include a note saying this wasn't always the case. But interestingly, this does appear to be the only casse previously where a MUC could remove you from a room without telling you why, as far as I can tell. Anyway, from a technical standpoitn a MUST is possible, I think. Politically, though, it might be undesirable.

  17. dwd

    Either way, if you introduce a version bump that would be... counterproductive, I feel.

  18. moparisthebest

    oh yea there is no way we should introduce a version bump for this... or ever for MUC if it's remotely possible to avoid :D I was just saying that *technically* we should unless it's changed to SHOULD, so I vote to do that instead

  19. daniel

    It’s time

  20. daniel

    1) roll call

  21. Kev

    I think that version bump would be bad. I'm inclined to say 'SHOULD' with a note is the safest.

    πŸ‘ 1
  22. moparisthebest

    hello!

  23. singpolyma

    🌊

  24. daniel

    larma, dan.caseley you around?

  25. larma

    πŸ‘‹

  26. dan.caseley

    πŸ‘‹

  27. dan.caseley

    Sorry, was reading back

  28. daniel

    2) Agenda bashing

  29. daniel

    nothing to bash I assume

  30. daniel

    3) Editors update

  31. daniel

    - UPDATED: XEP-0054 (vcard-temp) https://xmpp.org/extensions/xep-0054.html - UPDATED: XEP-0386 (Bind 2) https://xmpp.org/extensions/xep-0386.html - UPDATED: XEP-0478 (Stream Limits Advertisement) https://xmpp.org/extensions/xep-0478.html - Proposed XMPP Extension: Jingle Audio/Video Conferences https://xmpp.org/extensions/inbox/av_conferences.html

  32. daniel

    4) Items for voting

  33. daniel

    a) Proposed XMPP Extension: Jingle Audio/Video Conferences https://xmpp.org/extensions/inbox/av_conferences.html

  34. daniel

    on list

  35. singpolyma

    -1

  36. larma

    +1, but there will be feedback on list

  37. daniel

    singpolyma, why?

  38. singpolyma

    it is incompatible with what's needed for most SFUs, adds unnecessary overhead, and really the whole XEP seems mostly un-needed anyway

  39. moparisthebest

    I'm on-list, naively I don't see why it needs to MITM anything and can't just pass bytes like TURN

  40. singpolyma

    my main objection is the doing one call per stream instead of a multi-stream call

  41. singpolyma

    we already have protocol for multi-stream calls and this is what other applications and SFUs use

  42. singpolyma

    there is an SFU (livekit) which does two calls, one for in and one for out, but I've never seen one with one call per stream

  43. daniel

    I assume you dan.caseley are on list too?

  44. dan.caseley

    +0. I don't hate it, but don't have the depth on SFUs and conferences to raise real insights.

  45. singpolyma

    moparisthebest: it can't naively forward like TURN because every endpoint will get a different set of streams with different keys. it needs special handling to do e2ee with an SFU

  46. larma

    moparisthebest, most SFU implementations are actually passing bytes as is after SRTP-decrypting and e2ee is possible via them. DTLS-SRTP (which we typically use for encryption) is not suitable for multi-party, so it needs to be terminated somewhere if we want to send the same stream to multiple parties

  47. singpolyma

    larma said it better

  48. daniel

    b) XEP-0045: Additional Ban List specifications https://github.com/xsf/xeps/pull/1359

  49. dwd

    singpolyma, Is the multi-call nature needed to identify the participant, as per XEP-0298?

  50. singpolyma

    +1

  51. larma

    singpolyma, I have used at least one SFU with the same structure as proposed in the XEP

  52. daniel

    +1

  53. moparisthebest

    +1

  54. larma

    +1 on b)

  55. dan.caseley

    +1

  56. singpolyma

    larma: interesting. which one?

  57. larma

    singpolyma, probably the same one goffi used in his prototype that formed the basis for this XEP

  58. daniel

    c) XEP-0045: Remove references to using resourceparts when banning users https://github.com/xsf/xeps/pull/1360

  59. singpolyma

    +1

  60. dan.caseley

    +1

  61. moparisthebest

    +1

  62. daniel

    +1

  63. larma

    +1

  64. daniel

    d) XEP-0045: Improved wording of status code purpose https://github.com/xsf/xeps/pull/1361

  65. larma

    +1

  66. moparisthebest

    +1

  67. singpolyma

    +1

  68. dan.caseley

    +1

  69. daniel

    +1

  70. daniel

    e) XEP-0045: Improve 'Service Removes Non-Member' example https://github.com/xsf/xeps/pull/1362

  71. larma

    +1

  72. singpolyma

    +1

  73. dan.caseley

    +1

  74. daniel

    +1

  75. moparisthebest

    +1

  76. daniel

    f) XEP-0045: Clarify usage of presence stanzas when removing a non-member from a members-only room https://github.com/xsf/xeps/pull/1363

  77. larma

    +1

  78. singpolyma

    +1

  79. moparisthebest

    +1

  80. daniel

    +1

  81. dan.caseley

    +1. Not a fan of "must be in the room" wording, but I can PR that myself if it bothers me enough

  82. daniel

    g) XEP-0045: Replace inappropriate RFC 2119 key word usage in Β§9.7 https://github.com/xsf/xeps/pull/1364

  83. singpolyma

    +1

  84. dan.caseley

    +1

  85. larma

    +1

  86. daniel

    +1

  87. moparisthebest

    +1

  88. daniel

    h) XEP-0045: Presence sent to occupants of a destroyed room includes a <destroy/> https://github.com/xsf/xeps/pull/1365

  89. moparisthebest

    tentative -1, I think the MUST MUST be SHOULD

  90. daniel

    i agree with moparisthebest

  91. dan.caseley

    Is this a breaking change?

  92. singpolyma

    -0 agree with moparisthebest

  93. larma

    same as moparisthebest

  94. daniel

    it's a bit on the safer side

  95. moparisthebest

    to be crystal clear I'd vote +1 if that MUST was a SHOULD :D

  96. daniel

    same

  97. dan.caseley

    I'm not against the change as is. I'd prefer more MUSTs over SHOULDs. Predictable behaviour. My problem would be down to versioning

  98. singpolyma

    yes

  99. singpolyma

    I prefer SHOULD to MUST where sensible, but here it's about compatibility expectations yes

  100. dan.caseley

    I guess that makes me +1

  101. dan.caseley

    Or at least a +0

  102. daniel

    dan.caseley, but you would also +1 a SHOULD?

  103. dan.caseley

    I would

  104. daniel

    5) Pending votes

  105. daniel

    none

  106. daniel

    6) Date of Next

  107. daniel

    +1w wfm

  108. larma

    +1w wfm

  109. moparisthebest

    +1w wfm

  110. singpolyma

    +1w wfm

  111. daniel

    7) AOB

  112. dan.caseley

    I might miss next week due to kid things. Will catch up.

  113. moparisthebest

    noaob here

  114. daniel

    dan.caseley, noted

  115. daniel

    assuming no aob then

  116. daniel

    8) Close

  117. daniel

    thank you all. see you next week

  118. moparisthebest

    thanks all !

  119. dwd

    moparisthebest, I think the MUST could remain a MUST. The question is what happens if a new client which expects a <destroy/> doesn't see one from an old server, and I think the answer is that it still knows it's not in the room, but doesn't know why, which is exactly the state it's in now. In all other cases (old server vs old client, new server vs old client, new server vs new client) it's all fine. Also, I don't think a SHOULD means "maybe", it means the same as MUST, just with a cop-out for people who know what they're doing. There's no good reason not to do this - even people who know what they're doing ought to include the element - so the SHOULD isn't useful.

  120. Kev

    I think whether you go SHOULD or MUST, the necessary thing is the explanation that follows saying that it was not always this way, so implementations MUST cope if this is missing.

  121. Kev

    Because as the PR stands, it is illegal to send without the destroy, and therefore an entity receiving such a stanza could legitimately reject it. Including a server doing validation of protocol, if it chose.

  122. Kev

    You say "MUST (or SHOULD), but you must be prepared to accept without" and it's clear what you require a sender to do, but don't introduce potential breakage.

  123. dan.caseley

    It wouldn't discard because it'd still be valid, no?

  124. Kev

    If the spec says "MUST have a destroy" and an entity receives without a destroy, it's entitled to reject it as invalid.

  125. dan.caseley

    If it's a destroy, you MUST add the destroy element. If it's not a destroy though...

  126. Kev

    I see your point.

  127. Kev

    But wasn't this the only case where you didn't have a reason before?

  128. Kev

    If not, then yes, it becomes a more academic argument.

  129. Kev

    Although I think the point stands that an update to 45 shouldn't make an existing compliant implementation non-compliant without versioning/negotiation.

  130. Kev

    But you would be right that the impact would be much more limited.

  131. Guus

    wasn't the `destroy` element non-optional anyway? Two paragraphs before the text that is changed, this is written: > In order to destroy a room, the room owner MUST send an IQ set to the address of the room to be destroyed. The <iq/> stanza shall contain a <query/> element qualified by the 'http://jabber.org/protocol/muc#owner' namespace, which in turn shall contain a <destroy/> element. I introduces a MUST in the paragraph below, to avoid confusion when reading only that sentence. I don't think not using a `destroy` is valid, even prior to this change.

  132. Kev

    Isn't that IQ versus presence?

  133. Guus

    (I'm banking on the child element sent by the owner being broadcast as-is to the occupants)

  134. Guus

    (great moment for my wifi to crap out)

  135. Guus

    yeah, it is - and it's also in a different namespace - so maybe my rationale wasn't as valid.

  136. Guus

    I've got no real problem with making it a SHOULD, although it seems to me that the original intent of this always was to include at least that `destroy` child element. In my mind, I was fixing bad wording.

  137. Guus

    as an aside: shouldn't the presence ideally contain status code(s)? The unavailables that are sent in response to a service shutdown (section 11.2) do.