XMPP Council - 2017-03-08

  1. Tobias

    I won't be able to make it to todays council meeting. Would be great if someone else could chair the meeting this time.

  2. Tobias

    or we postpone it to next week if there's nobody else to chair

  3. SamWhited

    I'll do it

  4. SamWhited

    Unless someone else wants too; but happy to so that we can have a meeting

  5. Tobias

    great, ta. Will read the logs tomorrow then.

  6. SamWhited

    The time is come.

  7. SamWhited

    Who's here?

  8. daniel


  9. Link Mauve

    Me too.

  10. SamWhited

    I see no Dave

  11. SamWhited

    But we can muddle through

  12. SamWhited

    1. Minutes Taker?

  13. daniel

    since JC isn't here I can do it

  14. SamWhited


  15. SamWhited

    2. Entity Caps 2 ProtoXEP https://xmpp.org/extensions/inbox/ecaps2.html

  16. SamWhited

    Any discussion before we vote?

  17. daniel


  18. SamWhited

    I'll be on list

  19. daniel

    SamWhited, do you think there is something that should be discussed?

  20. daniel

    regarding just updating entity caps 1?

  21. SamWhited

    daniel: Not in particular; I still need to read it again, I only briefly scanned it

  22. Link Mauve

    daniel, whether we accept it as a new XEP or as an update to 0115, mostly.

  23. SamWhited

    Since 0115 is already in draft and this is radically different in some ways (I think?) I'm inclined to think this needs to be a new XEP personally.

  24. SamWhited

    But since it's only the three of us, maybe we should save that for list discussion along with the outstanding votes?

  25. daniel


  26. Link Mauve

    I am of the same opinion, other XEPs currently “depending” on 0115 should be updated to say something like “use 0030, or any caching mechanism like ecaps2.”

  27. Kev

    I maintain that I think a new XEP here is more trouble than it's worth :)

  28. Kev

    I don't think it's conceptually any different to 115, is it?

  29. Link Mauve

    It’s not.

  30. SamWhited

    Let's discuss on list since so many people aren't here. Link Mauve: will you create a thread for this in response to the minutes being sent out?

  31. Link Mauve


  32. SamWhited


  33. SamWhited

    3. LC for XEP-0333

  34. SamWhited

    The LC has ended, but I think Daniel wants to submit changes before we vote?

  35. daniel

    SamWhited, just let it fall out of LC back to experimental again. i need more time than a week or so

  36. SamWhited

    Will do; moving to the editors column.

  37. daniel

    i guess we can formally vote -1 if necessary

  38. Link Mauve


  39. SamWhited

    If the author (or steward) says it's not ready that sounds like enough to me personally :)

  40. SamWhited

    4. Vote on advancing XEP-0233 version 0.5.1 to Draft

  41. SamWhited

    I'm +1

  42. daniel


  43. Link Mauve

    I’m +1 too.

  44. SamWhited

    Others to vote on list; excellent.

  45. SamWhited

    5. Several PRs relating to CSI/Carbons state after SM resumption

  46. SamWhited


  47. SamWhited

    I think the PRs listed on this card need our attention

  48. SamWhited

    I'm not sure that there's anything to do but mention that they exist

  49. SamWhited

    Only the 0198 one needs council, if I understand this correctly

  50. daniel

    i'm not sure that's a good idea

  51. SamWhited

    Which one? Maybe I should have broken this up

  52. daniel

    by adding that you are basically forcing the carbons ns bump

  53. daniel

    the one about 0198

  54. daniel

    by delegating the responsibilty to the individual XEPs you requrie namespace bumps on those xeps

  55. SamWhited

    I'm unsure if I think it helps or hurts, but I sort of think the 0198 change is unnecessary either way.

  56. daniel

    i'm not even sure where the idea that a carbon state or a csi state is undefined after a resumption comes from. is it really?

  57. daniel

    did this ever cause unexpected behaviour in real life?

  58. daniel

    or a dissagreement between server developers?

  59. Link Mauve

    This sounds more of a design problem of nonza than something that needs to be specified that way, actually.

  60. SamWhited

    I'm not sure if it's ever actually caused problems, but I do think it's undefined (and we should probably not leave behavior undefined)

  61. Kev

    I'm not entirely sure I understand why this is an issue at all.

  62. Kev

    Sure you're resuming everything in the same state it was in before?

  63. Kev

    The point of 198 resumption is to pick up where you left off.

  64. Kev


  65. SamWhited

    That was always my assumption

  66. daniel

    but you enable feature X (csi, carbons what ever) for a *stream*. and then you resume a s*stream*

  67. daniel

    why would that be gone after a resume?

  68. Kev

    Surely this is a one-line editorial fix in 198 to make this clearer, if it's possible to misread it if you squint hard?

  69. daniel

    so i don't agree with the notion that this is undefined behaviour

  70. daniel

    or what Kev that

  71. SamWhited

    I think I agree with Kev; do we want to vote on the 198 changes in their current form today (even if we're all on list) and then consider an alternative if necessary later?

  72. daniel

    but it should be up to the carbons or csi xeps

  73. daniel

    SamWhited, we are talking about #429 right?

  74. daniel

    just to be sure

  75. SamWhited

    Yes, sorry

  76. Holger

    The CSI state has to be reset because the CSI nonzas cannot be acknowledged.

  77. daniel

    *but it should NOT be up to the (in case that wasn't clear from the context)

  78. Holger

    So if a CSI nonza was sent before resumption, the client wouldn't know whether the server processed it.

  79. SamWhited

    ah right, that makes sense

  80. Holger

    This was the reasoning for resetting the CSI state on resumption.

  81. Zash

    Is the CSI state attached to the TCP-bound stream or the resource/long lived session?

  82. daniel

    Holger, but that's an orthogonal problem

  83. moparisthebest

    how can you *ever* be sure the server got the nonza and enabled CSI though? if you go down that rabbit hole do you just have to continually send it every minute or something?

  84. SamWhited

    That still sounds like a 1 line change to CSI saying "after resumption, update the state since we're not sure if it stuck"

  85. Link Mauve

    moparisthebest, the next stanza you send will be acked, and then you know the csi one got sent.

  86. daniel

    Zash, i think in general CSI applies to the stream. the fact that you can't be sure if the server got the active/inactive is a different problem

  87. daniel

    that will basically force you to resent it every time

  88. moparisthebest

    Link Mauve, so then only re-set it after stream resumption if you didn't get an ack for your next message?

  89. SamWhited

    I thihnk that makes #427 wrong, even though the behavior is correct. It explicitly says that the CSI state is *not* restored: https://github.com/xsf/xeps/pull/427/files

  90. SamWhited

    If there was a next message at all

  91. Holger

    moparisthebest: That's completely weirdo.

  92. Holger

    It must be reset.

  93. daniel

    SamWhited, yes i think it is wrong

  94. daniel


  95. Holger

    If you don't want that use stanzas instead.

  96. moparisthebest

    sounds like nonza's in general are completely wierdo Holger :)

  97. SamWhited

    So, action items thus far:

  98. moparisthebest

    kinda like using UDP when you want TCP guarantees... anyway

  99. SamWhited

    1. Comment on the CSI PR (#427) and say we think it needs work (although it's actually between the author and whomever made the PR)

  100. Holger

    moparisthebest: They might be the wrong choice for CSI (some argue this way), yes. But as long as we stick to them the CSI state must be reset.

  101. SamWhited

    Daniel: Can you comment there and mention this, or maybe bring it up for discussion if there's disagreement?

  102. daniel

    SamWhited, on the #427 one?

  103. SamWhited

    daniel: yes

  104. daniel

    yes i can do that

  105. Link Mauve

    SamWhited, 2. review the CSI discussion for nonza vs. stanza, and potentially switch to stanza?

  106. SamWhited

    Link Mauve: Yah, that might be where that discussion goes, but for now we can get the quick fix of just tweaking that PR and merging it

  107. Link Mauve


  108. SamWhited

    2.1: Vote on #429 (even if we're all just on-list)

  109. daniel

    i'm fine with voting right now. i'm going -1 on that

  110. SamWhited

    I'm also -1

  111. Link Mauve

    -1 too.

  112. SamWhited

    cool, that only leaves #428 from that discussion. Do we actually want (or need) to discuss it?

  113. daniel

    i think we already did discuss this?

  114. SamWhited

    Did we? Oops, in that case, we can probably move on.

  115. Link Mauve

    428 is basically “this is a stanza, no problem here”.

  116. SamWhited

    5 (I think). Add <x/> tag to MUC-PMs: https://github.com/xsf/xeps/pull/436

  117. SamWhited

    I do not fully understand this yet, but it appears to bump the carbons version in expectation of that carbons PR being merged

  118. Link Mauve

    Didn’t we already vote on that last week?

  119. daniel

    i honestly have no hard feelings either way. I've personally given up on MUC

  120. SamWhited

    Link Mauve: Did we? I really can't keep track of this stuff, it was just listed in the Trello…

  121. Link Mauve

    Let me check.

  122. SamWhited

    oh no, I'm sorry, this does not change the carbons namespace, ignore me.

  123. SamWhited

    I wasn't even looking at the right PR.

  124. Link Mauve

    SamWhited, section 2) of the previous minutes.

  125. daniel

    the thing is that #436 removes one side effect and introduces another

  126. daniel

    (arguably minor one?)

  127. daniel

    i actually don't think MUC can be fixed

  128. SamWhited

    cool, so it's apparently still just missing a few votes. I'll vote on list, apologies for the confusion.

  129. SamWhited

    Does anyone else want to vote (looks like we didn't vote, just said we'd vote next week)

  130. SamWhited

    Except for Link Mauve, he's ahead of the game :)

  131. Link Mauve

    (I just fixed that on trello.)

  132. SamWhited

    Perfect; official vote. I'm on list. daniel?

  133. daniel

    i don't know. i'm really torn. i think i should maybe block this... i'll vote on list

  134. SamWhited


  135. SamWhited

    This was put on the agenda, but I'm not sure why: https://mail.jabber.org/pipermail/standards/2017-February/032328.html

  136. SamWhited

    Since we just voted on ecaps2, I guess moving on?

  137. SamWhited

    Or maybe we are supposed to come up with a migration plan for SHA-1 in general (although it's worth noting that it doesn't really affect anything yet, or XMPP possibly at all)

  138. SamWhited

    (that's 6. I guess)

  139. SamWhited

    Let's call it mentioned and move on unless anyone objects

  140. SamWhited

    I'm hearing crickets.

  141. SamWhited

    7. IEEE IoT email

  142. daniel

    no objections

  143. Link Mauve

    I have on my TODO list to start reviewing every usage of SHA-1 we have, but haven’t done anything yet.

  144. Link Mauve

    (Sorry, re 6.)

  145. SamWhited

    Link Mauve: Perfect, let's call that an action item for you then: SHA-1 review and migration plan. Thanks!

  146. Zash

    Link Mauve: Like https://xmpp.org/extensions/xep-0300.html#existing ?

  147. Link Mauve

    SamWhited, what is this email about?

  148. Link Mauve

    Zash, right.

  149. SamWhited

    RE 7: A motly crew of random people got CCed on an email from the IEEE IoT working group (or something) asking us to fast track the IoT XEPs which are currently deferred. Arc apparently had coffee with the person who sent the email, and it was decided that we should probably interact with their WG

  150. SamWhited

    since they're using XMPP for all IoT things, but don't actually have any XSF members

  151. SamWhited

    Dave suggested we assign a council liason to the IEEE

  152. Link Mauve

    Wasn’t that the purpose of the IoT SIG already?

  153. SamWhited

    and the board requested that we work with Rikard and the IoT SIG to come up with a strategy for the current IoT work

  154. SamWhited

    yes, I think the idea was just to get council involved.

  155. SamWhited

    I think since no one's here, we should just send out an email about this and discuss on list, unless anyone wants to suggest a specific plan or volunteer to work with the IoT SIG?

  156. SamWhited

    Either way I'm happy to write that email

  157. SamWhited

    Any volunteers?

  158. SamWhited

    (I'm happy to write the email, I am not volunteering to be the IoT liason)

  159. Link Mauve

    Didn’t we already elect stpeter as the representative of the council to the SIG?

  160. SamWhited

    I think we did, but since then Peter has gotten busy and not really involved right now, I don't think we can actually burden him with more work (and he's not on the council)

  161. SamWhited

    I'll send out an email to council@ and we can discuss specific plans (or we can discuss again next time we're all here). I'm not 100% sure what Dave et al. had in mind, so we can wait for their feedback before addressing this.

  162. SamWhited

    8 (maybe). Date of Next

  163. Link Mauve

    I won’t be here at all next week, fyi.

  164. SamWhited

    Same time next week?

  165. daniel


  166. SamWhited

    2017-03-15 1600Z it is

  167. SamWhited

    9. AOB

  168. SamWhited

    I have some, but it's brief and can be last

  169. daniel

    i don't have any

  170. Link Mauve

    Me neither.

  171. SamWhited

    Cool, mine is just pending vote reminders:

  172. SamWhited

    XEP-0368 to draft: Link Mauve, SASL2: Link Mauve, IBR2: Link Mauve, Daniel. Please vote; thanks!

  173. SamWhited


  174. Link Mauve

    Thank you.

  175. SamWhited

    Thanks everybody

  176. daniel

    thank you

  177. moparisthebest

    I think XEP-0368 to draft times out to day anyway

  178. moparisthebest

    I think XEP-0368 to draft times out today anyway

  179. SamWhited

    yah, I thihnk you're right

  180. SamWhited

    Link Mauve: You have until EOB central time when I'm going to put my editor hat on and call it :)

  181. moparisthebest

    or times in, but that sounds odd

  182. Link Mauve

    Alright, I’ll take a few more minutes off work to handle that then!

  183. moparisthebest

    now that meeting is over, so Holger what I'm asking is with a nonza how can I be sure the server *ever* got it, even not counting stream resumption now?

  184. Holger

    moparisthebest: You have this guarantee (as Link Mauve or someone mentioned): https://xmpp.org/extensions/xep-0352.html#in-order-processing

  185. Holger

    moparisthebest: You no longer have that if the stream is resumed after sending a CSI element and before a following stanza was acknowledged by the server.

  186. moparisthebest

    so then as horrible as it sounds, why not mark csi as 'acked' in the client when you recieve the next 'ack' for your next stanza?

  187. SamWhited

    Link Mauve: Thanks! Don't forget the 0115/ecaps2 email too (not that that has to happen right away). Also reminder to me: I'm going to go draft one about the IEEE IoT stuff.

  188. moparisthebest


  189. Holger

    moparisthebest: The server would have to know whether the client has marked this as 'acked' in order to decide whether to reset the CSI state :-)

  190. Link Mauve

    SamWhited, ok.

  191. moparisthebest

    but yea in general, nonzas sound like they are useful for here is this but I don't care whether you get it or not, and not in any way appropriate for modifying state on either side, or keeping state in sync

  192. Holger

    moparisthebest: Just reset it or use stanzas. I agree that resetting the state doesn't feel elegant, but I think that's a purely academic issue, I don't see the problem in practice. If protocol elegance is what you're after, you should not be doing XMPP :-)

  193. moparisthebest

    so what your saying is we should all re-invent the wheel with our own json over http protocols?

  194. moparisthebest

    so what you're saying is we should all re-invent the wheel with our own json over http protocols?

  195. Holger

    If you want elegance, yes. I find compatibility way more important, which is why I'm doing XMPP rather than Matrix.

  196. moparisthebest

    what is the history for using a nonza there in the first place?

  197. moparisthebest

    I feel like I'm missing some context

  198. SamWhited

    I think it just makes sense; it's a thing you only ever need to send to the server, so it doesn't need to be routable, and it's not mission critical, so fire-and-forget is fine.

  199. SamWhited

    It matches the nonza use case perfectly, I think.

  200. moparisthebest

    it modifies state though? and is mission critical if your mission is please don't murder my phone battery

  201. Holger

    moparisthebest: Find a room where both Ge0rg and Flow are joined, prepare yourself with some popcorn, mention the topic, and you'll have the context.

  202. Zash

    Holger: What have you done!

  203. moparisthebest

    I'll wait for flow to join prosody and have at it haha

  204. Kev

    SamWhited: Actually, I think it's telling the server to do something on your behalf, so an iq to your bare JID (no to=) is probably pretty sensible too.

  205. Kev

    Stanzas are the building blocks of XMPP. Investing new top level elements is possible, of course, but there are implications (see the current discussion on interactions with 198).

  206. SamWhited

    Kev: Yah, that makes sense too, I just don't see the need for an ack, and I like it when things aren't routable.

  207. Kev

    I don't know what my opinion was in the past, but right now I think my opinion is largely that this should have been an iq.

  208. Holger

    I agree, but I'm not sure switching to stanzas now is worth the trouble.

  209. Kev

    I think 'not routable' isn't really much of an argument. If it's an iq to your bare JID, your server already understands how to deal with it. If it's a new element type, that means new code paths (probably, maybe, potentially, depending on server design).

  210. SamWhited

    If it is routable, but not intended for anyone else but the server, that's a chance for an XMPP library to break in unexpected ways

  211. SamWhited

    (to break in unexpected ways when I try to send them a CSI IQ even though technically they shouldn't ever get one as a client, for instance)

  212. SamWhited

    I generally just like keeping the scope of things as limited as possible

  213. SamWhited

    But I agree, it's not likely to be an issue in this case

  214. Holger

    CSI elements don't need to be routed but I do see need for an ACK, so we don't have a perfect fit for this.

  215. Kev

    SamWhited: I don't buy that, really. Receiving stuff you don't expect is kinda a core part of extensibility.

  216. SamWhited

    Yah, but that doesn't mean we can't limit that possibility on the server as much as possible if it doesn't cause any other problems

  217. SamWhited

    Which I think it doesn't in this case, but obviously others disagree

  218. moparisthebest

    good call Holger , that's a perfect fit for a nostanza

  219. moparisthebest

    which doesn't get routed, but does get ACKd

  220. Holger

    Given limited manpower, I think we should try to distinguish between real problems and cosmetic issues and concentrate on the former as long as we have those :-)

  221. moparisthebest

    nonstanza maybe, I'm not married to the name, everyone wants a new top level element right? :P

  222. moparisthebest

    but yea about the issue at hand it seems fairly clear CSI needs to be a stanza, or re-sent on session resumption if something didn't get acked after it was sent before, or something, yuck

  223. moparisthebest

    or you just re-send it on every session resumption and call it a day

  224. Kev

    FWIW, I don't think there'd be significant pain in migrating to iqs instead of non-stanza elements.

  225. Holger

    I'd rather avoid spamming the code of implementations with both solutions for no good reason.

  226. Kev

    I think that's fair.

  227. Kev

    It's Experimental though, right? :)

  228. Holger

    I'm in the Council room so I was expecting this response :-)

  229. SamWhited

    Yah, but it's one of those experimental XEPs that we left until everyone was using it; at that point it's practically defacto draft and we should be careful with changes, I think (I'm not saying we should treat it exactly like draft, but we should be careful not to leave stuff in experimental this long until it's so widely used)

  230. Holger

    Yes looking at such issues from a practical perspective rather than blindly applying formal rules sounds like a great idea to me :-)

  231. Holger goes AFK and therefore stops trolling, have a nice evening everyone.

  232. Kev

    I think a line saying "Look, this should have been a stanza (take note future authors), but it's not, so we need to reset it on a new stream just in case" is probably not daft.

  233. SamWhited

    Yah, I don't think that would be a problem

  234. SamWhited

    Although I also disagree that it should have been a stanza; but mentioning that you may need to send it again on stream restart seems fine.

  235. Kev

    I think that this discussion shows that in practical terms pretty much everything needs to be a stanza, so that 198 works.

  236. SamWhited

    198 does work; if the server got the CSI thing, then the stream state will remain the same and no reset is necessary. If it didn't, then it's exactly the same as if it didn't get it and the stream wasn't resumed: the state just never got changed (which I think is fine in this case)

  237. daniel

    SamWhited, +1

  238. Kev

    Yes, it works in the sense of it will not be broken.

  239. Kev

    But in terms of you needing to resend it after a restart because you don't know whether it was received isn't exactly 'working'.

  240. SamWhited

    I just don't think that's a problem; however, if it is, the fix is easy: just always send it after a restart. I don't think it's necessary, but I also don't think it's a problem. It's an easy fix.

  241. Kev

    Changing to something much less bikesheddish:

  242. Kev


  243. Kev

    Surely we can't merge that?

  244. Kev

    It renders existing implementations non-compliant, and poses a potential interop problem.

  245. daniel

    you said *less* bikesheddish?

  246. SamWhited

    It is a SHOULD, not a MUST (but I'm leaning that way too)

  247. Kev

    Yes, this is a real issue, rather than cosmetic.

  248. Kev

    SamWhited: A SHOULD means you can rely on it, pretty much, because anyone not doing it made a deliberate decision.

  249. SamWhited

    Kev: What I heard there is "you can't rely on it" :)

  250. Kev

    SamWhited: Then it should be MAY.

  251. daniel

    we could just bump the muc namespace :-)

  252. Kev

    SHOULD means you can rely on it.

  253. Kev

    At the least it needs text saying that while a service/client SHOULD attach it, receiving entities can't assume that it'll be present, because $REASONS.

  254. Kev

    If we really do want to make it either SHOULD or MUST without further explanation, then yes, you're needing a namespace bump.

  255. Kev

    I suggest a namespace bump would be ludicrously stupid, and instead we need wording that doesn't introduce interop concerns.

  256. SamWhited

    yah, I agree; if it requires a namespace bump I'm absolutely -1

  257. SamWhited

    But I'm also fairly convinced that we should take MUC out behind the chemical shed and shoot it (and by that I meant that MUC is always going to be a bad experience, and there is nothing we can do about it, so we shouldn't bother)

  258. SamWhited

    But we definitely shouldn't make it *worse* (which a namespace bump would do)

  259. Kev

    I think that an additional sentence saying something approximately "Note that this requirement was added late in MUC's life, when implementations were already stable, and thus clients MUST NOT rely on receiving this element".

  260. Kev

    would probably be sufficient to get this text in there, while not breaking anything.

  261. SamWhited

    yah, that seems sane

  262. daniel

    i think everyone (including the author of the PR) will probably be fine with MAY

  263. SamWhited

    or that

  264. Kev

    MAY would not introduce an interop concern, so I'm far less opposed to it.

  265. Kev

    But I think better would be to make it clear that it's a good idea to do it.

  266. daniel

    can someone create a comment on the PR basically pasting the last couple of lines

  267. daniel

    because i really agree with SamWhited that MUC needs to die already and we shouldn't spend hours discussing these things

  268. SamWhited

    (I can't copy/paste easily from mcabber or I would)

  269. daniel


  270. Kev

    I suggest someone Council does it, but I'll do it if not.

  271. daniel

    ok i'll do it

  272. Kev


  273. Kev

    I think my suggested text is the best option, but I'm far fewer Fs about that than about not merging the PR as-is.