XSF Discussion - 2018-11-01


  1. ralphm

    Tobias: I was looking at XEP-0385 (Stateless Inline Media Sharing). Have you considered sending multiple media files at once? Would it be supported by adding additional <file/> elements?

  2. dwd

    WOuldn't that be multiple <media-sharing/> elements? Or maybe even references depending.

  3. Tobias

    Multiple messages, multiple media-sharing or multiple file

  4. Tobias

    That probably needs to be specified

  5. Tobias

    But inside a single message would probably be best. Multiple messages already works

  6. ralphm

    Sure, I'd prefer a single message in my use case

  7. Ge0rG

    I'd prefer a single message to carry multiple 0184 delivery receipts, but that's not what the XEP allows...

  8. ralphm

    I'm a bit surprised also by the use of XEP-0372 References here. In my thinking, References was meant to annotate a previous message. This seems to leave off the uri attribute to refer to the current one. I think that use case has not been properly defined.

  9. ralphm

    In fact, in my use case, there wouldn't necessarily be a part of the text to be reference.

  10. ralphm

    d

  11. ralphm

    More like the 'add attachment' button in many messengers.

  12. ralphm

    Ge0rG: maybe XEP-0333 is more appropriate for you?

  13. Ge0rG

    ralphm: I want per message receipts, but with a more efficient delivery

  14. ralphm

    I'm not sure if I can see the use case, but yeah, then that doesn't help

  15. ralphm

    Anyway, I was really looking at Tobias' spec only right now.

  16. Ge0rG

    The use case is after mam sync / fetching offline messages. You need to ack a bunch of incoming messages, and the respective payloads are just ids, wrapped into a bunch of boilerplate

  17. dwd

    ralphm, No, references were always meant to be capable of referring to the current message. For hyperlinky stuff.

  18. daniel

    > The use case is after mam sync / fetching offline messages. You need to ack a bunch of incoming messages, and the respective payloads are just ids, wrapped into a bunch of boilerplate Ge0rG: I think we either talked about this before or I independently had the thought of just bundling multiple receipts in a single message

  19. ralphm

    Ge0rG: but XEP-0333 just marks the last one, so that covers the use case

  20. jonas’

    ralphm, no it doesn’t, because you can’t be sure that all messages between two markers actually

  21. jonas’

    ralphm, no it doesn’t, because you can’t be sure that all messages between two markers actually arrived

  22. daniel

    However in reality at least the bandwidth overhead of multiple messages vs one would be negligible if we had proper compression

  23. daniel

    We should really revisit the compression xep

  24. daniel

    And make it secure ™

  25. ralphm

    dwd: ah, I guess the references XEP needs to point this out then. Nevertheless, it doesn't seem useful for when you don't have a particular part of the message to reference, when sending media.

  26. Zash

    Someone Should™

  27. ralphm

    jonas’: arrived at the user or at his server?

  28. Zash

    What happens if the receiving users archive acks messages when they are saved into the archive?

  29. jonas’

    ralphm, both

  30. ralphm

    Zash: right

  31. dedekin

    > would be negligible if we had proper compression You could start with https://github.com/mgp25/Chat-API/wiki/FunXMPP-Protocol :-)

  32. Seve

    And call it WhatshAPPening

  33. jonas’

    looks like they invented a stripped-down version of EXI

  34. Zash

    jonas’: almost

  35. jonas’

    I expect EXI to be more useful than generic compression in the general XMPP case actually

  36. pep.

    Without the negotiation bits? ("these are the namespaces I'll be using")

  37. Zash

    EXI is more involved tho

  38. pep.

    (Re almost exi)

  39. jonas’

    Zash, that’s true

  40. daniel

    > I expect EXI to be more useful than generic compression in the general XMPP case actually But arguably a lot harder to implement

  41. jonas’

    probably

  42. Zash

    "FunXMPP" is closer to a fixed compression dictionary IIRC

  43. daniel

    Especially since the xep is apparently garbage

  44. jonas’

    if there are no ready-to-use libs

  45. jonas’

    Zash, yes, which is also what EXI does

  46. fippo

    hah. This one is much better than exi for chat! http://cvs.schmorp.de/Net-Knuddels/Net/Knuddels/Dictionary.pm?revision=1.5&view=markup

  47. Zash

    jonas’: EXI generates those from schemas tho

  48. jonas’

    Zash, true

  49. fippo

    why compress protocol when you can compress the chat message content

  50. Zash

    fippo: wut

  51. jonas’

    I sense sarcasm

  52. daniel

    But fwiw I'd love to play with exi if I can get a server dev on board

  53. Zash

    jonas’: sure hope so, since that's the opposite of what we want here

  54. fippo

    zash: this module is not a joke even. i think the knuddels stuff came up in the late 90s, mostly in germany. they were alive until a recent databreach

  55. jonas’

    is there a lua-exi?

  56. Zash

    jonas’: nope

  57. jonas’

    pity

  58. Zash

    And EXI seems complex enough that I'd rather use a library than NIH it

  59. jonas’

    yes please

  60. jonas’

    is there even any floss implementation of EXI?

  61. pep.

    Deprecate it! It's too complex you'll never get it right! /s

  62. jonas’

    that libexi is "status: planning" on sourceforge, whatever that means

  63. Zash

    Thanks Firefox, I really did mean to go to http://EXIstentialcomics.com/

  64. daniel

    jonas’: a Java one

  65. daniel

    But that's literally the only one I believe

  66. Zash

    http://exip.sourceforge.net/ ?

  67. Kev

    daniel: I'm interested in EXI, actually, but no clue where we'd start to get something sensible (and no cycles to do anything immediately).

  68. daniel

    Compression - be it exi or an improved compression xep - would make for a good summit topic

  69. SamWhited

    That's a good idea

  70. Guus

    wasn't Arc Riley working on EXI stuff?

  71. daniel

    Guus: yes. He was the one who told us that the xep is garbage

  72. daniel

    (probably not his exact words)

  73. Guus

    Where's he off to anyways? Haven't seen him in ages.

  74. jonas’

    vanished after last year’s board elections essentially

  75. jonas’

    hope they’re alright…

  76. Zash

    You could define a zlib-safe that requires flushing between every stanza (or when to/from changes in some way)

  77. dwd

    Zash, Am I right in thinking Prosody has built-in support for JWT authentication for BOSH/WebSocket connections?

  78. Zash

    dwd: What makes you think that?

  79. Zash

    What does that even mean?

  80. dwd

    Zash, I was under the impression that Jitsi used something like that.

  81. dwd

    Zash, Of course, I could so easily be wrong.

  82. daniel

    Sounds like an reasonable approach to 'fixing' that xep

  83. Guus

    dwd: Jitsi might have added custom code (it did so for a number of things, iirc)

  84. dwd

    Seems to have, indeed.

  85. Guus

    dwd: https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/tokens.md

  86. Guus

    that's likely it

  87. dwd

    Yeah, I just found that myself.

  88. ralphm

    Isn't the issue with compression and encryption that a MiM can inject bits of information in messages going to an entity that are sure to be returned, to learn about the dictionary?

  89. Zash

    ralphm: Yes, like iq id attributes.

  90. dwd

    ralphm, Sorta. Compression oracles work by inserting known plaintext into a compression stream. So in our case, the compression stream is the entire session, so an attacker just sends messages to see if they can guess what's been sent before.

  91. Zash

    ralphm: If you flush between stanzas, that goes away

  92. dwd

    ralphm, But an attacker has to be able to see the compressed/encrypted stream, to count octets. I've generally considered this quite a hard attack.

  93. ralphm

    like on a mobile device?

  94. Zash

    You usually need a *lot* of requests to get actual secrets out

  95. ralphm

    ok, I had no idea how practicle an attack like this is

  96. jonas’

    https://blog.thijsalkema.de/blog/2014/08/07/https-attacks-and-xmpp-2-crime-and-breach/

  97. ralphm

    also, I'm particular curious about server-to-server connections in this regard

  98. Zash

    ralphm: https://blog.thijsalkema.de/blog/2014/08/07/https-attacks-and-xmpp-2-crime-and-breach/

  99. Zash

    jonas’: ha

  100. dwd

    ralphm, By which I mean, if an attacker has got to the point that they've got full access to your network traffic *and* is willing to expose themselves by sending traffic over tyour XMPP session as well, they're getting pretty desperate.

  101. jonas’

    ninja’d

  102. ralphm

    I know that document, but sure

  103. jonas’

    dwd, sending traffic to ones XMPP session is not that hard using a botnet. I get a lot of unsolicited traffic all day.

  104. jonas’

    that’s not *that* suspicious anymore

  105. dwd

    jonas’, Sure, but the attacker *also* has to have visibility over your TCP sessions.

  106. jonas’

    that’s true

  107. Zash

    But are the amounts of traffict required to do an actual attack small enough to evade admins being annoyed by the bandwidth usage?

  108. jonas’

    I wouldn’t count on admins thwarting an attack

  109. dwd

    Zash, Maybe. Depends what they're trying to discover. It'd be relatively simple to find out, for example, if you were in this MUC by sending you traffic including the room's jid. But then, it's far easier to just just the MUC and look...

  110. dwd

    Zash, Maybe. Depends what they're trying to discover. It'd be relatively simple to find out, for example, if you were in this MUC by sending you traffic including the room's jid. But then, it's far easier to just join the MUC and look...

  111. Zash

    Another way to fix this is to have a fixed dictionary

  112. dwd

    Zash, That's not how zlib works.

  113. Zash

    dwd: There are other compression libraries

  114. Zash

    dwd: And you can sorta fake it by feeding it a dictionary before every ... chunk .. somehow.

  115. dwd

    Zash, Sure. But then you're only able to compress, say, the XML. So you'd be into EXI territory.

  116. Zash

    dwd: Picking say zstandard and training a dictionary on some XMPP data ought to be a lot easier to do than implementing all of EXI

  117. dwd

    Zash, Better solution of course is to use a constant-bandwidth transmission medium. :-)

  118. SamWhited

    Not necessarily, the spec could say that the dictionary must contain "@yourserver.com" or similar (assuming we want to target large rosters and assume that most people will be using the same server as their friends)

  119. Kev

    dwd: So padding all stanzas to the 1GB mark?

  120. SamWhited

    But I doubt a fixed dictionary is actually practical; interesting to think about though.

  121. Zash

    Kev: 10MB and you have a deal

  122. dwd

    Kev, No, just transmitting at a constant rate, and including padding.

  123. dwd

    Kev, It works quite well on radios. :-)

  124. Zash

    Whitespace flood instead of ping?

  125. jonas’

    like ssh does for keystrokes? :)

  126. Zash

    jonas’: REAL TIME TEXT?

  127. jonas’

    !!

  128. Zash

    SamWhited: Could do something where the client downloads and caches a dictionary on connect. Then it can be tuned to the server and stuff. More complexity tho and closer to EXI

  129. Zash

    (Can you tell that I just found `zstd --train ...` ?)

  130. SamWhited

    ooh, yah, that's interesting. It would be fun to think more about what sort of policies the server could create that way

  131. jonas’

    Zash, interesting

  132. SamWhited

    I say "policies", but I guess you don't have to target anything if you do that. Just train it on lots of streams and see what the most common stuff is.

  133. Ge0rG

    And you'll end up leaking private data in your dictionaries.

  134. Zash

    Trade-offs

  135. SamWhited

    So exclude bits of the stream you don't want it to see

  136. SamWhited

    Start training after stream negotiation, drop IDs, messages probably won't matter because if a phrase is reused enough it's probably not private, etc.

  137. Zash

    If we knew which bits that was, we could do nice compression.

  138. Zash

    ... and that's basically what FunXMPP is

  139. SamWhited

    Fair

  140. Zash

    Pre-defined dictionary

  141. Zash

    With common things like "<message " and such

  142. jonas’

    Zash, except with zstd, there would be a standard-ish way to translate that dictionary

  143. jonas’

    and we wouldn’t be limited to keep XML metacharacters in place

  144. jonas’

    for example, 'from="' could be one token in the dict

  145. Zash

    all known xmlns="..." etc

  146. jonas’

    yupp

  147. ralphm

    Hate to interrupt, but…

  148. ralphm set the topic to

    XSF Board Meeting | Logs: http://logs.xmpp.org/xsf/ | Agenda https://trello.com/b/Dn6IQOu0/board-meetings

  149. ralphm bangs gavel

  150. jonas’

    '<a xmlns="urn:xmpp:sm:2" h="' :-)

  151. nyco

    here

  152. jonas’ shuts up now

  153. ralphm

    0. Welcome and Agenda

  154. nyco

    quorum?

  155. ralphm

    MattJ sent regrets

  156. ralphm

    Guus?

  157. Guus

    I"m here

  158. ralphm

    Yay

  159. Guus

    (no agenda items from me)

  160. ralphm

    I have Elections and FOSDEM

  161. nyco

    and ED?

  162. ralphm

    nyco?

  163. ralphm

    Ok

  164. ralphm

    1. FOSDEM

  165. nyco

    FOSDEM/Summit is for SCAM?

  166. ralphm

    We've requested a stand again.

  167. ralphm

    (just informative)

  168. nyco

    oh great

  169. nyco

    thx a lot

  170. Guus

    (what nyco said)

  171. ralphm

    Also, we've secured the location for the Summit

  172. Guus

    I intend to make reservations for the annual dinner later this week

  173. ralphm

    We now need to start really inviting people to come and look at hotel deals

  174. Guus

    also, I'm assuming that last years hotel arrangements were ok? I'll redo those too, then

  175. ralphm nods

  176. ralphm

    That's it for me on this.

  177. Guus

    one thing

  178. Guus

    now that you raised the topic

  179. Guus

    last year, we, as in the XSF, invited three people to summit and fosdem, sponsoring them. I dubbed them 'young potentials', I think.

  180. Guus

    do we want to do something like that again this year

  181. Guus

    and if so, who? Last year, we extended an invitation to gsoc students. We did not participate in gsoc this year.

  182. nyco

    what was the outcome of this?

  183. Guus

    We had two students attend, iirc

  184. nyco

    how much were we attractive?

  185. Guus

    both of them are still active in the ignite realtime community

  186. Guus

    at least one of them mentioned that he'll be going to FOSDEM again this year.

  187. nyco

    so we might wanna do it again, I'd go for it...

  188. Guus

    I kind of like the concept of doing such sponsoring, but I can't immediately identify candidates for this iteration.

  189. Guus

    Do you have suggestions for candidates?

  190. ralphm

    Let the records reflect that suggestions are welcome.

  191. ralphm

    Let's put it back on next weeks agenda

  192. Guus

    k

  193. ralphm

    2. Elections

  194. ralphm

    With 3 days left, the list is wanting

  195. Guus

    we're at 4 candidates for board, 3 for council. All sitting candidates, I think

  196. ralphm

    Indeed

  197. Kev

    Sorry, lagging here, but from the peanut gallery, did any of the young hopefuls remain active in the standards community, or just for a particular project?

  198. Kev

    We've moved on, nevermind. As you were.

  199. ralphm

    Kev: Guus can still answer that one.

  200. Guus

    Kev: one is still active, afaik.

  201. ralphm

    Should we be worried about Council specifically? Three people is really meager

  202. Guus

    Paul / Vanitas

  203. Kev

    It's only two, actually, with one intending to apply but hasn't yet.

  204. Kev

    I was going to take a year off, but I'll throw my hat into the ring again now.

  205. ralphm

    Kev: well, if you mean: there page isn't actually there yet, we then also only have 2 for Board. *shame*

  206. Guus

    I wonder if there are people that are inclined to run, but are hold back for some reason

  207. ralphm

    Shall I sent another reminder?

  208. nyco

    yes, please, I think

  209. ralphm

    Ok.

  210. Guus

    Well, Alex just did one?

  211. Guus shrugs

  212. ralphm

    Last Friday, yes.

  213. nyco

    today is good, because it's Thu, and still a week day

  214. ralphm

    Right

  215. ralphm

    3. Executive Director

  216. Kev

    Another Council application in.

  217. Guus

    I think the relevant people now know that we have an election. I don't think it's a matter of pointing that out. Maybe we can persuade them to actually run, in some way though.

  218. nyco

    reminder at -48h, -24h, 12h, 6h, 1h, 30 min... 😉

  219. ralphm

    We haven't had one since Peter resigned this post. There's been question on needing one, and to be honest, maybe we don't.

  220. Guus

    Thanks Kev

  221. Guus

    Ralph, we briefly discussed this last week. I offered to take over from Martin, in doing an inventory of tasks/responsibilities.

  222. Guus

    which I wanted to do after we actually meet with Peter, for this and financials, which is another 'todo' that's been outstanding for to long..

  223. ralphm

    Ok

  224. nyco

    if we don't have an ED, then do we need to modify the bylaws? or we just elect a ghost ED?

  225. Guus

    I think Peter stated that he intended to resign as soon as we had a replacement.

  226. Guus

    as he's not actually doing anything in the role currently, I prefer having this status-quo over undertaking the massive operation that is rewriting the bylaws.

  227. ralphm

    What I've also seen done is that the Chair of the Board is appointed in such role in the absense of a candidate.

  228. Guus

    but, we should move on this. We should have, ages ago.

  229. ralphm

    (like in the company I currently work at)

  230. nyco

    ah I like that the chair is ED as well

  231. nyco

    *the idea*

  232. Guus

    ralphm, if that works with our bylaws (I doubt it, for reasons), we might want to wait until next board picks a new chair then.

  233. ralphm

    Right, I'm not sure myself, it is just something that popped up.

  234. Guus

    worth considering, nonetheless.

  235. ralphm

    I think the ED is appointed by the Board, so I don't think it conflicts, but I'm happy to hear thoughts from the floor on this, before actually suggesting we do this.

  236. Kev

    ED being on Board would seem inappropriate to me, even if it's allowed.

  237. Kev

    Given the ED is used to break deadlocks in the Board.

  238. Guus

    "If the Board consists of an even number of Directors, the Executive Director of the Corporation shall be empowered to cast a tie-breaking vote (...)" complicates matters.

  239. Guus

    (what he said)

  240. ralphm

    Kev: indeed.

  241. ralphm

    The issue is that a) I haven't seen this been used in this corporation, b) I have no real other suggestions.

  242. ralphm

    But I'm happy to discuss with Guus and Peter.

  243. Guus

    Let's move on for now

  244. Guus

    *tap*tap* is this thing still on?

  245. Kev

    Everyone moved on.

  246. Guus

    ralphm usually swings his mighty hammer before he does. 🙂

  247. ralphm

    4. EOB?

  248. ralphm

    AOB?

  249. Guus

    ennie, how nice and Dutch of you 😛

  250. Guus

    now.

  251. Guus

    no*

  252. ralphm

    5. Date of Next

  253. ralphm

    +1W

  254. ralphm

    6. Close

  255. ralphm

    Thanks all!

  256. ralphm bangs gavel

  257. ralphm set the topic to

    XSF Discussion | Logs: http://logs.xmpp.org/xsf/ | Agenda https://trello.com/b/Dn6IQOu0/board-meetings

  258. Guus

    thanks!

  259. nyco

    thx everyone!

  260. ralphm unmutes jonas’

  261. j.r

    ralphm: what was wrong with him/her?

  262. Guus

    Nothing, but jonas’ applied self-mute-ation earlier.

  263. Guus

    (which might or might not have been a ploy to get out and play)

  264. ralphm

    j.r: there was a discussion going just when I interrupted to have our Board meeting, so he said he would go silent

  265. Seve

    Still missing an applicant for Board?

  266. guusdk

    Seve: we can always use more

  267. SamWhited

    Seve: https://wiki.xmpp.org/web/Board_and_Council_Elections_2018

  268. flow

    "Zash> jonas’: EXI generates those from schemas tho" not necessarily. i was told that it would perform also well without schemas, although I wonder if it would suffer from the same side channel based attacks as zlib compression

  269. flow

    "Kev> Sorry, lagging here, but from the peanut gallery, did any of the young hopefuls remain active in the standards community," I'd say vanitasvitae is active, he wrote a mail to standards@ not to long ago, but go no reply/response back, so I'd say the standards community is the entity being inactive here ;)

  270. jonas’

    some numbers on the stream compression ratio (numbers are "bytes saved" in percent from the perspective of the client; i.e. tx == from client to server, rx == from server to client): aioxmpp test suite, sync_flush only (XEP-0138 as written): 40% rx, 20% tx aioxmpp test suite, full_flush after each stanza: 25% rx, 20% tx JabberCat startup (lots of mucs, lots of avatars), full flush after each stanza: 25% rx, 12% tx sync vs. full is executed on both sides (client and server)

  271. jonas’

    some numbers on the stream compression ratio (numbers are "bytes saved" in percent from the perspective of the client; i.e. tx == from client to server, rx == from server to client): aioxmpp test suite, sync_flush only (XEP-0138 as written): 40% rx, 20% tx aioxmpp test suite, full_flush after each stanza: 25% rx, 20% tx JabberCat startup (lots of mucs, lots of avatars), full flush after each stanza: 25% rx, 12% tx JabberCat startup (lots of mucs, lots of avatars), sync flush: 36% rx, 12% tx sync vs. full is executed on both sides (client and server)

  272. jonas’

    these are to be taken with a grain of salt due to the rather narrow use-cases