XMPP Council - 2013-02-20

  1. Tobias

    when should one use a stream-feature and what are the alternatives?

  2. Zash

    Features related to the stream itself?

  3. Tobias

    the delayed delivery case Lance mentioned yesterday...i.e. having 200 users on your roster, and receiving 200 offline presences with delayed delivery, so you know when they went offline could be quite a bit of traffic

  4. Tobias


  5. Kev

    That doesn't happen until you send your initial presence.

  6. Tobias


  7. Kev

    So it doesn't seem that it needs a stream feature to stop it.

  8. Tobias

    so it could be in caps?

  9. Tobias


  10. Kev

    Could be in caps, even, yes.

  11. Tobias


  12. Kev

    Although you'd get the presence if they were online, so ... :)

  13. Tobias


  14. Tobias

    or could stanza filtering filter that out

  15. Tobias

    didn't we have a XEP for that?

  16. Zash


  17. Tobias

    could it filter delayed delivery out of presence stanzas?

  18. m&m

    SIFT didn't get that specific, but it is extensible

  19. m&m

    meaning, you can add new conditions

  20. Zash

    Tobias: Some servers already send unavailable presence

  21. Zash

    So that traffic already exists.

  22. Kev


  23. Tobias

    so nothing we can do about it?

  24. ralphm


  25. m&m

    from a server to the client, SIFT (possibly with a special extension) should be able to do what you want

  26. ralphm

    but what m&m says

  27. m&m

    the trick is to get servers to implement it (-:

  28. Zash

    Someone argued that it made sense to drop such unavailable presence

  29. m&m

    I bet MattJ will have it done in prosody by lunch tomorrow if you asked nicely

  30. Zash

    m&m: Wait, for what?

  31. m&m


  32. ralphm

    is MattJ up and running again?

  33. m&m

    for the "SIFT-unavailable-with-delay"

  34. Zash


  35. Zash

    I wrote a plugin yesterday to filter out unavailable in response to probes if it had no childs

  36. Kev

    And ding ding ding.

  37. ralphm

    Zash: what is the exact issue with the offline presences

  38. Kev

    1) Roll call

  39. Kev

    I'm here!

  40. ralphm

    Zash: after the meeting

  41. m&m


  42. ralphm

    I'm here

  43. Tobias

    same here

  44. Kev

    And I'm assuming we have continued apologies from MattJ until we hear otherwise.

  45. Zash

    He said he was going to be here

  46. ralphm

    anyone know how is these days?

  47. Kev

    Zash: Ah, OK. Maybe he will.

  48. Kev

    ralphm: I've not spoken to him at all.

  49. Kev

    I'd worry, but he got word through to Peter that he'd be offline, so I just hope he gets fixed soon.

  50. Kev


  51. m&m notes stpeter just walked into the office

  52. Kev

    2) Peter'd like to issue an LC on 152 (Reachability Addresses)

  53. Kev

    MattJ: Welcome back.

  54. m&m

    normally I'd be +1 on LC

  55. MattJ

    Hey :)

  56. Kev

    m&m: There's a "but"

  57. MattJ

    Never gladder to attend a meeting before

  58. m&m

    IETF is kicking my butt

  59. ralphm

    MattJ: WB!

  60. m&m

    and the meeting hasn't even happened yet!

  61. m&m

    I and stpeter might be the only ones in this predicament

  62. ralphm

    IETF doesn't want to be reachable/

  63. ralphm


  64. m&m

    ralphm: opposite problem, it's too reachable

  65. Kev

    m&m:So you'd like to delay the LC on 152 until after the IETF meeting?

  66. m&m

    anyway, I've no objections to LC, but I would like to extend the deadline by a couple of weeks

  67. ralphm

    sure thing

  68. m&m

    Kev: or that

  69. Kev

    A one-month LC, then?

  70. ralphm

    Long Call

  71. ralphm

    I am up for that

  72. Kev


  73. Kev

    Or LC^2.

  74. m&m

    either works for me, although delaying would probably work out better for my inbox (-:

  75. Zash


  76. m&m


  77. m&m

    Zash wins

  78. Kev


  79. Zash


  80. Kev

    MattJ: Opinion?

  81. MattJ

    I have some catching up to do

  82. Tobias

    later or longer last call are either fine with me

  83. MattJ

    Longer LCs are fine by me in general

  84. m&m

    as long as we remember the deadline

  85. stpeter

    oops :-)

  86. MattJ

    We've had to extend LCs multiple times in the past

  87. m&m

    which reminds me, I have some BOSH patches to submit

  88. Kev

    I trust Peter to remember the deadline :D

  89. stpeter


  90. ralphm


  91. Tobias

    that's what we have a calendar for, not?

  92. MattJ


  93. stpeter

    ralphm: :-)

  94. m&m


  95. stpeter checks http://logs.xmpp.org/council/130220/

  96. Kanchil

    stpeter: http://logs.xmpp.org/council/130220/: Chatroom logs for council@muc.xmpp.org (Wednesday, February 20, 2013)

  97. Kev

    MattJ: Are you OK with an LC on this one?

  98. MattJ


  99. Kev


  100. Kev

    3) Date of next meeting?

  101. Kev


  102. Tobias


  103. m&m

    yes, as long as we keep extending the deadlines (-:

  104. ralphm


  105. Kev

    ralphm: I'm going to assume that's the special unicode glyph pair for "works for me" :)

  106. stpeter

    y'know, XEP-0152 has been sitting around for a long time, so there's no big hurry about a Last Call, although it would be nice to advance it before draft-ivov-xmpp-cusax becomes an RFC

  107. ralphm


  108. m&m

    oh, unicode

  109. Kev

    Was it? o_O

  110. Kev

    Oh, yes, that's very different.

  111. Kev

    In the font Swift uses it looked like a left sleeve and a right sleeve.

  112. Kev


  113. Kev

    4) Any other business

  114. Kev

    I think Peter'd like to ask us to go look at WG stuff.

  115. Kev


  116. stpeter

    right :-)

  117. m&m

    Yes. When can we advance āˆ’308 to draft?

  118. Kev

    Yeah, Gunnar was chasing me about that the other day (in a mail that went straight to spam, bad dog Gmail).

  119. m&m


  120. Tobias

    here....everybody roughly okay with the direction my XEP-0012 deprecation work is heading in? new experimental XEP for idle, new informational XEP for presence+delayed delivery for last presence change time.

  121. ralphm

    Kev: it is not a glyph pair?

  122. m&m

    Tobias: tentatively

  123. Kev

    I'll try desperately to address LC feedback as soon as I've got a spare cycle.

  124. m&m


  125. m&m


  126. stpeter

    Tobias: yes, that seems fine, but I need to look at it in detail still (next week)

  127. m&m


  128. ralphm

    what stpeter says

  129. m&m

    I've got internal teams asking about the status

  130. m&m

    of 308

  131. stpeter


  132. Kev

    Tobias: It needs something for uptime, too. That one's widely deployed, and is even used. Although I'd rather something better :)

  133. Tobias

    Kev, yeah...directed presence probes to hosts with delayed delivery response :)

  134. Zash

    available presence + delayed?

  135. Tobias

    i'll mention it in the informational XEP

  136. Kev

    m&m: Words fail to describe how many balls I'm trying to juggle at the moment, but I will try to add that one as well. And watch it all come crashing down.

  137. m&m

    Kev: I feel your pain

  138. Kev

    Any other any other business?

  139. stpeter

    Kev: need co-authors?

  140. Kev

    stpeter: I think I just need a few hours.

  141. Kev

    stpeter: Or a time machine.

  142. stpeter

    Kev: which you don't have!

  143. Kev

    I'll get to it. Maybe I'll have some minutes watching films with Cath at the weekend or something.

  144. stpeter


  145. stpeter


  146. stpeter

    for Kev's sake, I think we're done

  147. m&m


  148. Tobias


  149. Kev

    i have nothing else, at least.

  150. Kev


  151. Kev

    Thanks all.

  152. Kev bangs the gavel.

  153. m&m goes to talk to stpeter about DNA

  154. stpeter

    yay :-)

  155. Zash


  156. Kev

    Deoxyribonucleic acid? :)

  157. Zash

    ralphm: Offline presence in response to probes are redundant, unless they carry some kind of extended data, like delayed delivery.

  158. m&m

    Kev: very close. Domain Name Associations (or Assertions)

  159. stpeter


  160. Kev

    Yes, I knew.

  161. Kev


  162. m&m


  163. ralphm

    Zash: arguably they also tell you that you still have a presence subscription and that the remote host is reachable.

  164. Zash

    ralphm: Right. Otoh it's traffic you may or may not want. The person who wanted this filter works on a mobile client

  165. ralphm

    so, for a mobile client, I can think of two considerations

  166. ralphm

    1) battery, 2) bandwidth

  167. ralphm

    For case 1) I'd argue that it is very likely that your antenna is in fully up mode when you receive it.

  168. ralphm

    For case 2) I'm pretty sure it compresses quite well

  169. Kev

    And for (1) you want something like google:queue.

  170. Zash

    If the remote host isn't reachable then you will get an error. If you no longer have a subscription you would get a unsubscibe(d) reply, no?

  171. ralphm

    (playing devil's advocate)

  172. ralphm

    Zash: *maybe*

  173. Kev

    Zash: Yes.

  174. Kev

    Well, you needn't get an error.

  175. Kev

    You will get unsubscribed for no longer having a sub.

  176. ralphm

    Not for 3921 implementations

  177. Kev

    That's true.

  178. Zash


  179. ralphm

    So, as I said, arguably they do carry information.

  180. ralphm

    Which doesn't invalidate your case

  181. ralphm

    but we should do google-queue/SIFT

  182. Zash

    google-queue was the thing where it queued up "less important" stanzas, like presence until something more important like a chat message or iq came in?

  183. Lance

    ralphm a 3) issue is the effect on startup time for the app, which IIRC was the issue raised by the mobile developer

  184. Kev

    Zash: Yes.

  185. Kev

    Lance: It shouldn't affect startup time for the app. It's all async.

  186. Kev

    Not other than is covered by (2) anyway.

  187. Zash

    If s2s setup for sending probes takes a long time, it might even lower the radio state before it gets replies

  188. ralphm

    Zash: hence google-queue

  189. Zash


  190. ralphm

    you wouldn't get those until you'd send something or receive a normal message

  191. ralphm

    I don't really believe in 3) for properly designed applications

  192. Kev

    Saying that.

  193. Kev

    This really does hurt clients.

  194. Kev

    That's why the stpeter roster test is nasty.

  195. ralphm

    Kev: so is that because of badly written clients or the shear amount of data that has to be sifted through?

  196. ralphm

    (genuinly curious)

  197. Kev

    ralphm: I spent a very long time profiling and tuning Swift for this - it's the roster updates.

  198. Kev

    The roster's sorted and every time you get a new presence that may potentially update the roster order.

  199. ralphm

    oh, hmm

  200. ralphm

    how did you resolve that? delayed updating the roster order?

  201. Kev

    So you've got the pain of doing a lookup across the entire roster for the right JID to update, in all the right groups, then the pain of calculating the new presence to render (actually insignificant usually) and then the pain of reordering the widget.

  202. Kev

    No, just fiddling with data structures.

  203. Kev

    Maps instead of vectors for finding the JID in the roster makes a hell of a difference.

  204. Kev

    I got the stpeter test down below 10 seconds for Swift - I think the next best client at the time was Psi with about a minute.

  205. Kev

    Modern hardware will obviously improve this dramatically.

  206. ralphm

    so but in this case, we are talking about unavailable presence

  207. ralphm

    that wouldn't affect anything in the roster

  208. Kev

    It does, somewhat.

  209. Kev

    It doesn't cause a redraw (unless you have a status as well).

  210. Kev

    But it does need you to do all of the data structure walking to find that it doesn't cause an update.

  211. Lance

    kind of. because its FIFO, if you have a large roster and lots of unavailable, the app appears to be much laggier than it really is on startup

  212. ralphm

    But did you really do a redraw for every presence? One of the first things I'd try is delaying it by, maybe, a second?

  213. Kev

    I just update the model, and let Qt manage when the redraws happen.

  214. ralphm

    Kev: sure, but I assume you can batch that, too

  215. Kev

    It wasn't paint calls themselves that were appearing in the profiling, at the point that I stopped work on it.

  216. Kev

    I'm sure one could squeeze yet more out of it - being around an order of magnitude faster than anyone else was enough for me at the time :)

  217. ralphm


  218. Lance

    and here's the one behind the issue. hey Ge0rG

  219. Ge0rG

    hi! I'm Georg from yaxim.org

  220. ralphm

    but, still, if you also control the server side (the one the client is connecting too), don't we have something like quickstart for non-BOSH connections?

  221. ralphm

    hah, that's funny. I was just thinking about how yaxim also doesn't seem to like large rosters :-)

  222. Zash

    ralphm: This is the guy

  223. Ge0rG

    there is roster versioning, which reduces the overhead; but it only eliminates half of the traffic when connecting

  224. ralphm

    Zash: awesome. We are full circle.

  225. Ge0rG

    delaying UI/storage updates on incoming presences is only a mitigation measure... the incoming traffic still remains

  226. ralphm

    Ge0rG: I was just trying out yaxim the other day. It does indeed seem to have issues with my roster. xabber seems to have less problems with it (no offence, also, it has other problems)

  227. Kev

    ralphm: What's your largest roster group, and how many do you have?

  228. Ge0rG

    ralphm: yaxim is storing roster+presences in sqlite, with ca. 100ms of writing time for every. single. item.

  229. Kev

    That sounds like a good thing to not do, then :)

  230. ralphm

    27 roster groups totalling 343 contacts. The largest one is 45

  231. Kev

    ralphm: That sounds sufficiently small that it shouldn't cause too many issues.

  232. ralphm

    Kev: right

  233. Ge0rG

    yes, I am currently preparing a huge rework of the backend; but it will take time

  234. Kev

    Same order of magnitude as my roster (although larger).

  235. ralphm

    Kev: so I assume Ge0rG has some work cut out for him

  236. Ge0rG

    and I do not really see a reason in delivering bare-jid unavailable presences (as unavialable is probably the default state anyway)

  237. ralphm

    nevertheless, something like XEP-0305 might also be useful for our TCP binding

  238. ralphm

    Ge0rG: http://logs.xmpp.org/council/130220/

  239. Kanchil

    ralphm: http://logs.xmpp.org/council/130220/: Chatroom logs for council@muc.xmpp.org (Wednesday, February 20, 2013)

  240. ralphm

    Ge0rG: we did some talking about it before you joined

  241. Kev

    ralphm: I think 305 doesn't help at all here, actually.

  242. Ge0rG

    198 would help...

  243. Ge0rG

    provided you had a session before

  244. Kev


  245. ralphm

    Kev: I'm sorry, I meant 198 of course

  246. Kev

    Right, 198's fine as long as you have an existing session.

  247. Kev

    But for initial login you don't.

  248. Ge0rG

    but not for initial connection, or if you have been offline for a longer time (5 or 30mins in prosody?)

  249. Zash

    Ge0rG: Configurable, defaults to something like 5min

  250. ralphm

    but you can throw away the unavailables right after having parsed them

  251. Zash

    It would be nice to have some way to suspend a session so it wouldn't timeout

  252. Kev

    ralphm: No, you can't.

  253. ralphm

    Kev: if he thinks they are useless you can

  254. Kev

    ralphm: Right, but you can't know they're useless until after you've checked against the roster.

  255. Ge0rG

    ralphm: for that you need to check the previous state of the JID

  256. Kev

    Although if sqlite is the bottleneck here, you can certainly easily bin them before that.

  257. ralphm

    Kev: that was my point

  258. Ge0rG

    also, not everybody can use tls/stream compression, and data traffic is not free everywhere in the world

  259. ralphm

    well, ehm

  260. Kev

    Ah, that's interesting.

  261. Kev

    Why would you not be able to use stream compression?

  262. Ge0rG

    so what is the additional information carried by presence-unavailable from bare JIDs in 3921 implementations?

  263. Kev

    Ge0rG: Nothing, but 3921's obsoleted now.

  264. ralphm

    it is actually likely they wouldn't send them

  265. Kev

    Or, well, sometimes nothing, depending whether there was a <status/> there

  266. Ge0rG

    ralphm mentioned 3921 as part of the pro-transmitting argument

  267. ralphm

    Ge0rG: I did

  268. ralphm

    Ge0rG: the point is that you can't know

  269. Ge0rG

    which I am trying to understand now

  270. Ge0rG

    Kev: stream compression is buggy in certain client-server combinations (I blame openfire, but not enough datapoints yet)

  271. Kev


  272. ralphm

    Ge0rG: some implementations will not send them, some will send unsubscribe (and some not) and some will send an error (or not)

  273. Ge0rG

    Kev: https://github.com/pfleidi/yaxim/issues/85

  274. Kev

    Yes, indeed, I remember something about OpenFire's compression stuff being broken.

  275. ralphm

    do blame openfire

  276. ralphm


  277. Ge0rG

    but blaming openfire will not fix the real-world problem for my users

  278. Kev

    Ge0rG: No, indeed.

  279. Ge0rG

    and they will blame yaxim instead

  280. ralphm

    and if they get around fixing stuff, also let them fix the thing where you have to send presence to receive iq's and messages to a full resource

  281. Ge0rG

    ralphm: if old implementations are not guaranteed to send anything, why would we demand new implementations to send a presence-unavailable?

  282. Zash

    There is no demand

  283. Kev

    We don't, do we?

  284. ralphm

    We don't

  285. Zash

    It's a SHOULD

  286. ralphm

    we allow it

  287. Kev

    Zash: Ah, is it?

  288. Kev

    That's domanding it, then.

  289. Ge0rG

    thats why I am asking

  290. ralphm

    Unfortunately I have to go for dinner

  291. Zash

    Kev: It is?

  292. Ge0rG

    so my suggestion would be to change it into a SHOULD NOT :P

  293. ralphm

    this will not help your case

  294. ralphm

    at least not very soon

  295. Kev

    It's not true, though, that an unavailable contains no extra information. It does - it tells you that you know the state of the remote user.

  296. Ge0rG

    ok, actually it needs some more context explanation

  297. Kev

    Until you receive your first presence from them you've no idea if they're online or offline.

  298. Ge0rG

    Kev: but you should assume the remote user is unavailable by default...

  299. Ge0rG

    or there should be yet another presence state "unknown"

  300. Zash

    The behaviour where the server tries to keep a consistent view of the availability of contacts at all times would help this

  301. Zash

    was it Dave who wrote about that?

  302. Ge0rG

    [offtopic] is there an (http) API to look up the XEP name given the number?

  303. Zash

    Ge0rG: Sorta

  304. Zash

    There's an XML file

  305. Kev

    !xep 198

  306. Kanchil

    Kev: XEP-0198(sm): http://xmpp.org/extensions/xep-0198.html Stream Management - Standards Track/Draft - Updated: 2011-06-29

  307. Zash

    Ge0rG: Or, if you know the number, just stick it into that url

  308. Ge0rG

    Zash: I want name and number, for a jekyll plugin

  309. Ge0rG

    you know, if you are doing something, do it right the first time :)

  310. Zash

    Ge0rG: http://xmpp.org/extensions/xeps.xml

  311. Ge0rG

    cool, thanks

  312. Zash


  313. Kanchil

    Zash: http://web.archive.org/web/20120208104426/http://blog.dave.cridland.net/?p=144: Advice to Santa on fast presence delivery &#8211; text/plain

  314. Kev

    FWIW, when talking about 'doing it right first time', having played with both jekyll and nanoc, I prefer nanoc.

  315. Ge0rG

    I'm not going to jump trains again ;)

  316. Kev

    Fair enough.

  317. Kev

    I did, FWIW.

  318. Kev


  319. Ge0rG

    I's been only two weeks since I set up http://yaxim.org/

  320. Kanchil

    Ge0rG: http://yaxim.org/: yaxim - yaxim

  321. Ge0rG

    and it is good enough

  322. Kev


  323. Kev

    Ah, maybe octopress makes things less bad.

  324. ralphm

    bye, again, jabber.org

  325. ralphm


  326. Kev

    That one was my fault.

  327. Kev

    I did a stupid.

  328. ralphm

    Kev: don't do stupids

  329. Kev

    Excellent advice.

  330. Kev

    I cannot fault it.

  331. ralphm

    I am also not sure it is all right now

  332. ralphm

    I cannot join a MUC at conference.ik.nu from jabber.org