XSF Discussion - 2019-09-25


  1. pep.

    jcbrand: looking at the updates. I'm on the phone though so I'll do github things later on.

  2. jcbrand

    pep. Thanks no rush!

  3. jcbrand

    The moderation XEP is still WIP

  4. jcbrand

    So don't look at that 😛

  5. pep.

    A message with* full certainty

  6. jcbrand

    Thanks

  7. pep.

    Do XEPs using 422 also have to talk about 359 btw?

  8. jcbrand

    I guess sub-dependencies don't need to be explicitly mentioned

  9. pep.

    Say tomorrow we say "no more 359, let's use 765"

  10. pep.

    We'd only have to change 422. I'm not sure that's practical but..

  11. pep.

    jcbrand: do you think we can loosen the restriction on the fulljid?

  12. pep.

    For retractions

  13. pep.

    Just like we did for LMC

  14. Zash

    `muc ? full_jid : bare_jid`

  15. pep.

    For retractions, yeah I guess

  16. Zash

    Maybe it would be good to have a XEP discussing JID based access / authorization like this

  17. Zash

    Could have the matching rule from privacy lists / blocking command there too

  18. jcbrand

    pep. Where do you see a restriction concerning full JID? Is it implicit in one of the examples?

  19. pep.

    > MUST only be processed when both the original message and retraction request are received from the same full-JID.

  20. pep.

    > A retraction MUST only be processed when both the original message and retraction request are received from the same full-JID.

  21. pep.

    I guess that's an artifact of the protoXEP not being new

  22. Martin

    At https://xmpp.org/software/clients.html profanity links to profanity.im but the new website is https://profanity-im.github.io/. Right now profanity.im should forward but they were already considering ditching the domain, so you should better change that to prevent linking to a domain squatter in the future.

  23. Zash

    But ... why

  24. Martin

    I don't know.

  25. Zash

    Martin: It's a matter of updating a JSON file via Github PR

  26. jcbrand

    pep. Thanks, will update.

  27. Martin

    Zash, if you point me to that repo I will create an MR. :)

  28. Martin

    s/M/P

  29. jonas’

    fear not for I have returned

  30. Zash

    Martin https://github.com/xsf/xmpp.org/tree/master/data

  31. Ge0rG

    jonas’! Are you okay!?

  32. Zash

    You were gone?

  33. Martin

    3 days in a cave?

  34. Martin

    Sorry for not realizing, but the girls sobbing in front of that cave were not heared in munich.

  35. Zash

    Emerges as 🤖 ?

  36. jonas’

    Ge0rG, I was just on vacation :D

  37. jonas’

    and I wasn’t able to use XMPP for reasons I don’t understand

  38. jonas’

    and I had nothing there to debug

  39. jonas’

    quite frustrating

  40. Ge0rG

    jonas’: no VPN? no mobile?

  41. jonas’

    Ge0rG, mobile data coverage was too bad to use

  42. Ge0rG

    even for XMPP? eww!

  43. jonas’

    except with the congstar thing which doesn’t have my credentials and just 32kbit/s

  44. jonas’

    Ge0rG, yeah, once I started to use the link it broke down :)

  45. Martin

    Really? I was able to use xmpp on a train ride where I was not able to open any website.

  46. jonas’

    Martin, "broke down" as in "No coverage"

  47. jonas’

    like, not even for calls

  48. jonas’

    and the wifi there probably filtered DNS heavily

  49. jonas’

    or maybe ports

  50. jonas’

    but Conversations said "Server not found", so I guess they filtered DNS

  51. pep.

    jcbrand: hmm, maybe use wording similar to https://xmpp.org/extensions/xep-0308.html#nt-idm46554800195296 ? Not just "JID"

  52. pep.

    I guess you can also mention relying on occupant id optionally

  53. jonas’

    Ge0rG, regarding that self-ping failure: the issue is twofold. first, the pinger interprets remote-server-not-found as "client was removed from the room" as per XEP-0410. second, it does not auto-rejoin after being removed (or maybe the rejoin fails because remote-server-not-found and it doesn’t re-try)

  54. jonas’

    I don’t think that remote-server-not-found should be interpreted as "client has been removed from the room"

  55. Ge0rG

    jonas’: that's an interesting point.

  56. Ge0rG

    jonas’: it might be a network outage or a server outage.

  57. jonas’

    exactly

  58. jonas’

    I think it should be treated like a timeout

  59. jonas’

    (especially since a re-join is not likely to succeed anyways)

  60. jcbrand

    pep. Done. I already mentioned that the occupant id should be checked in MUCs, clarified that further.

  61. pep.

    No SHOULD right? I know some people are not particularly happy with occupant-id, (because de-pseudonimisation, which is the goal), even though they haven't expressed that clearly yet.

  62. flow

    jonas’, it looks like I can't find the context of "that self-ping failure". Would you be so kind and point me to it?

  63. jonas’

    flow, https://github.com/horazont/aioxmpp/issues/312

  64. jonas’

    Ge0rG, and even on server outages, the room state may still be persistent on the server an the client might not have actually been removed.

  65. jonas’

    so I’m very confident that assuming that r-s-n-f means "you got removed" is wrong.

  66. Ge0rG

    jonas’: good point. Wanna send a PR to the XEP? ;)

  67. jonas’

    after auditing RFC 6120 for more error conditions of that type, yes

  68. jonas’

    remote-server-timeout is another one

  69. Ge0rG

    if only we had a practically useful error scheme.

  70. jonas’

    I think we do, we just don’t use it well

  71. pep.

    jcbrand: I guess that's fine like that for the protoXEP. I'd probably relax the dependency on occupant-id though

  72. jcbrand

    Why? It's necessary IMO

  73. pep.

    It's useful for better UX yeah

  74. pep.

    Not especially necessary

  75. jcbrand

    It's necessary to prevent impersonation

  76. pep.

    A client not implementing occupant-id (or a future equivalent?) would probably just ignore retractions when they can't validate the identity of the sender

  77. larma

    pep., I'd say it's SHOULD (without retractions won't work in many cases) but not a MUST 😉

  78. pep.

    larma: yeah, SHOULD would be fine

  79. jcbrand

    pep. that's why it's a requirement, a client that doesn't support occupant-id can't support retractions

  80. pep.

    jcbrand: why not?

  81. jcbrand

    because it can't validate the identity of the sender

  82. pep.

    For all other cases it works

  83. Ge0rG

    jcbrand: you can validate the sender without occupant-id, just in a more limited manner

  84. jcbrand

    Ge0rG: How? AFAIK you can determine whether don't know it's the same sender, but you can't always determine that you DO know it's the same sender.

  85. jcbrand

    Ge0rG: How? AFAIK you can determine whether you don't know it's the same sender, but you can't always determine that you DO know it's the same sender.

  86. Ge0rG

    jcbrand: as long as both you and the sender are joined to the MUC, you can know it's the same sender

  87. jcbrand

    yes but that's not always the case, hence the requirement

  88. Ge0rG

    jcbrand: it was good enough for LMC

  89. jcbrand

    It's a huge issue and not good enough IMO

  90. Ge0rG

    jcbrand: it's a minor issue, because it only affects public semi-anon MUCs and you can't rely on user identity in those anyway.

  91. Ge0rG

    jcbrand: I might be Ge0rG, a Council member, or Ge0rG, a russian troll bot.

  92. jcbrand

    At least I would know that a retracted message was by the same entity

  93. Ge0rG

    so there is not much difference between the authenticity of the things I say now vs. the things I say after a leave & rejoin

  94. jcbrand

    There is, because I know it's the same entity

  95. Ge0rG

    only if you require occupant-id

  96. jcbrand

    which I do

  97. larma

    jcbrand, I know you didn't touch that from the previous protoXEP, but I really don't like the tombstones thing: It changes the meaning of a messages UID in a non-backwards compatible fashion. This will most likely lead to different or even perceivably random behavior within clients that implement MAM but don't implement retractions...

  98. jcbrand

    at least in this XEP

  99. jonas’

    Ge0rG, https://github.com/xsf/xeps/pull/834#issue-321176452

  100. Ge0rG

    jonas’: 👍

  101. jcbrand

    Ge0rG: You and I both are of the opinion that it makes sense to try and "fix" MUCs as much as possible instead of putting our hopes on some future migration/rewrite. Requiring occupant id is a very good step in that direction.

  102. Ge0rG

    jcbrand: I'm not sure I agree.

  103. Ge0rG

    jcbrand: I'm not sure I disagree, either.

  104. Ge0rG

    jcbrand: my point is: occupant-id is a significant change of user identity exposition in semi-anon MUCs, and this step shouldn't be taken lightly.

  105. Ge0rG

    jcbrand: there is no _technical_ requirement on occupant-id in either LMC or Retractions.

  106. jcbrand

    It's security related

  107. larma

    jcbrand, (also regarding tombstones) shouldn't the logic of how to apply fastenings in MAM be part of fastening and not part of every individual XEP? I expected that to be the main reason why we'd want a generic fastening XEP, no?

  108. jonas’

    oh look at how awake I am

  109. jonas’

    I didn’t even realise that Ge0rG is in Council.

  110. Ge0rG

    jonas’: it will be a very interesting discussion on whether that change mandates a namespace bump.

  111. Ge0rG

    jonas’: therefore I explicitly only approved the XEP with my author hat on.

  112. Ge0rG puts on his robe and author hat

  113. jonas’

    "yes, but..."

  114. jcbrand

    larma: I think we should have a way to actually remove the message from the archive and not just append a hint that it shouldn't be shown. Most fastenings will be append only I presume.

  115. Ge0rG

    jcbrand: you can't actually remove a message from MAM, merely remove its payload.

  116. jcbrand

    Ge0rG: "removal" means tombstoning

  117. Ge0rG

    Ah, okay

  118. jcbrand

    This is another security issue IMO. It's better to not send certain messages to clients, even if a retraction will be sent afterwards

  119. larma

    > However a server that wishes to remove messages from the middle of an archive, e.g. to remove accidentally transmitted sensitive information may omit the <message> stanza from inside the <forwarded> element

  120. jcbrand

    The retraction is only for currently connected clients who already received the offending message

  121. Ge0rG

    Can't we already just implement a distributed chat history database synchronization protocol, instead of adding one quirk on top of another over unreliable message transport stream semantics?

  122. jcbrand

    larma: I'm not sure what you're point with that quote is. The point of tombstoning is to not remove the original message

  123. jcbrand

    larma: I'm not sure what you're point with that quote is. The point of tombstoning is to remove the original message

  124. jcbrand

    Sorry... there was a "not" in there

  125. Kev

    Ge0rG: I don't know, can we?

  126. Ge0rG

    Kev: you tell me

  127. larma

    jcbrand, the MAM XEP suggests that you probably want to remove the <message> from the <forwarded> (and optionally replace it with a <retracted>) instead of adding <retracted> inside <message>

  128. larma

    at least that's how I read it

  129. jcbrand

    larma: Look at the example, the <retracted> element is inside the <message> element.

  130. Ge0rG

    Kev: I've recently thought a bit about one of the aspects of that: https://gist.github.com/ge0rg/5ae3365196a0c046fc596bbf707fdc15

  131. jcbrand

    larma: Are you looking at my PR? Or where are you reading this?

  132. larma

    jcbrand, yes your PR has <retracted> inside <message> inside <forwarded> but 313§2.1 suggests that you shouldn't do that and instead remove <message> from <forwarded> and optionally replace it with an appropriate placeholder (like <retracted> directly inside <forwarded>)

  133. Kev

    Ge0rG: that's what bind2's trying to help with, I think? (The (4) part at least).

  134. Ge0rG

    Kev: yes, but bind2 will only do a very small subset of #4

  135. Kev

    Probably.

  136. jcbrand

    larma: Then you don't know who the retracted message was from

  137. Kev

    Ge0rG: Or, rather, probably needs to be extended to cover them.

  138. larma

    jcbrand, then you have to add that to <retracted>?

  139. jcbrand

    What's the difference? Why is this an issue?

  140. Ge0rG

    Kev: I'm not saying that bind2 isn't the right syntactic vehicle to perform MAM-Sub. It just lacks momentum.

  141. jcbrand

    larma: IMO it looks more correct semantically the way it is now

  142. Kev

    Ge0rG: Right.

  143. larma

    jcbrand: It is an issue because with your way it is undecidable if the message was send this way from the original sender or if it was done by MAM

  144. jcbrand

    Ok you have a point

  145. larma

    Also IMO the retracted message from MAM should probably also tell who retracted it and when?

  146. jcbrand

    yes, "when" is a good addition

  147. Ge0rG

    so store an original tombstone plus the retraction message?

  148. Ge0rG

    so store an "original" tombstone plus the retraction message?

  149. larma

    Ge0rG, we are approaching what a proper fastening XEP would add to a MAM message for every fastening 😉

  150. larma

    <forwarded xmlns='urn:xmpp:forward:0'> <delay xmlns='urn:xmpp:delay' stamp='2019-09-20T23:08:25Z'/> <retracted xmlns='urn:xmpp:message-retract:0' from='romeo@montague.example' by='lord@capulet.example' stamp='2019-09-20T23:09:15Z' /> </forwarded>

  151. larma

    (by being optional and defaulting to same as from)

  152. larma

    jcbrand, > Clients MUST set the XEP-0359 'origin id' attribute on sent messages to make them suitable for message retraction. Shouldn't be needed in MUCs as we use MUCs stanza-id instead (and it would be stupid if you can't moderate messages that don't have an origin-id :D)

  153. larma

    jcbrand, https://github.com/xsf/xeps/pull/833/files#diff-30e15b71462f098e1b7b4cb6931c64bbR84 is type=normal intended here?

  154. Ge0rG

    larma: you tell us it will break MAM and Carbons?

  155. larma

    Ge0rG, huh?

  156. Ge0rG

    larma: type=normal is the code word to enter the black magic underground of xmpp message routing.

  157. Ge0rG

    I really need to update my "What's wrong" presentation

  158. Zash

    Shall we issue a blanket statement that examples without @type means "any type"

  159. jcbrand

    Is a type attribute mandatory?

  160. Zash

    No, but it defaults to 'normal'

  161. Zash

    so `<message/>` == `<message type="normal"/>`

  162. larma

    jcbrand, https://github.com/xsf/xeps/pull/833/files#diff-30e15b71462f098e1b7b4cb6931c64bbR62 if you leave out type=groupchat here, the message won't be delivered to room occupants. Technically type=normal works in the other case because it is the MUC sending it, but type=groupchat is better IMO because it implies that every room occupant receives it and also if this was a self-retraction message, it would be type=groupchat as well.

  163. jcbrand

    larma: Thanks, I'll fix

  164. larma

    (We can also go with type=headline for the retraction message, but I bet this would just f**k up things)

  165. Ge0rG

    larma: yeah, it would

  166. Ge0rG

    I think we should be using headline for MAM retrieval and such

  167. Ge0rG

    just to annoy pidgin users.

  168. Zash

    What is the deal with https://xmpp.org/extensions/xep-0182.html ?

  169. Zash

    It registers the namespace urn:xmpp:errors but I'm not aware of anything that uses it

  170. Zash

    https://xmpp.org/registrar/errors.html hm

  171. Ge0rG

    <too-many-stanzas/> is one for the firewall

  172. flow

    jonas’> I think we do, we just don’t use it well [re error scheme] I think it could be improved here and there: https://github.com/igniterealtime/Smack/blob/93aaf6d8d7df1071a224ef406738ff322c20724b/smack-extensions/src/main/java/org/jivesoftware/smackx/ping/PingManager.java#L156

  173. edhelas

    I reopened https://github.com/xsf/xeps/pull/824 a few days ago because it was merged by mistake, should I do something else to make it reviewed by the Council ?

  174. Ge0rG

    edhelas: tell Council about it. Ideally through the means of an agenda submission to dwd, but shouting about it in here at the right time might work

  175. jonas’

    edhelas, posting it somewhere around 15:00Z on a wednesday in an XSF room is a good start :)

  176. Guus

    moments ago, in the council room:

  177. Guus

    https://igniterealtime.org:443/httpfileupload/20d808ee-fbdf-4ab5-857d-95891aefbcd7/image.png

  178. jonas’

    MattJ, can we make a time window (2h or 3h in duration) where we try to figure out how the XSF Registrar is supposed to work technically?

  179. MattJ

    Sure

  180. MattJ

    How about this time +1w - 2h?

  181. Ge0rG

    MattJ: that would overlap with Council Meeting

  182. MattJ

    -1h?

  183. MattJ

    or just... after the council meeting next week