XMPP Council - 2017-03-08


  1. moparisthebest has left

  2. moparisthebest has joined

  3. Lance has joined

  4. Lance has left

  5. Tobias has left

  6. Tobias has left

  7. daniel has left

  8. daniel has joined

  9. daniel has left

  10. daniel has joined

  11. jere has joined

  12. Zash has left

  13. jere has left

  14. Zash has left

  15. SamWhited has left

  16. ralphm has left

  17. moparisthebest has joined

  18. daniel has left

  19. daniel has joined

  20. daniel has left

  21. daniel has joined

  22. daniel has left

  23. daniel has joined

  24. Flow has joined

  25. ralphm has left

  26. daniel has left

  27. daniel has joined

  28. Kev has joined

  29. Tobias has left

  30. Tobias has left

  31. daniel has left

  32. daniel has joined

  33. Zash has joined

  34. daniel has left

  35. daniel has joined

  36. daniel has left

  37. daniel has joined

  38. daniel has left

  39. daniel has joined

  40. daniel has left

  41. daniel has joined

  42. jere has joined

  43. jere has left

  44. jere has joined

  45. daniel has left

  46. daniel has joined

  47. daniel has left

  48. daniel has joined

  49. daniel has left

  50. daniel has joined

  51. Tobias has left

  52. 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.

  53. jere has left

  54. jere has joined

  55. daniel has left

  56. Tobias

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

  57. SamWhited

    I'll do it

  58. SamWhited

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

  59. Tobias

    great, ta. Will read the logs tomorrow then.

  60. ralphm has left

  61. jere has left

  62. jere has joined

  63. daniel has left

  64. peter has joined

  65. Flow has joined

  66. Zash has left

  67. Tobias has joined

  68. Zash has joined

  69. Flow has joined

  70. peter has left

  71. Flow has joined

  72. SamWhited

    The time is come.

  73. SamWhited

    Who's here?

  74. daniel

    Me

  75. Link Mauve

    Me too.

  76. SamWhited

    I see no Dave

  77. SamWhited

    But we can muddle through

  78. SamWhited

    1. Minutes Taker?

  79. daniel

    since JC isn't here I can do it

  80. SamWhited

    perfect

  81. SamWhited

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

  82. SamWhited

    Any discussion before we vote?

  83. daniel

    +1

  84. SamWhited

    I'll be on list

  85. daniel

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

  86. daniel

    regarding just updating entity caps 1?

  87. SamWhited

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

  88. Link Mauve

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

  89. 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.

  90. SamWhited

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

  91. daniel

    ok

  92. 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.”

  93. Kev

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

  94. Kev

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

  95. Link Mauve

    It’s not.

  96. 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?

  97. Link Mauve

    Ok.

  98. SamWhited

    Thanks

  99. SamWhited

    3. LC for XEP-0333

  100. SamWhited

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

  101. daniel

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

  102. SamWhited

    Will do; moving to the editors column.

  103. daniel

    i guess we can formally vote -1 if necessary

  104. Link Mauve

    WFM.

  105. SamWhited

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

  106. SamWhited

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

  107. Holger has left

  108. SamWhited

    I'm +1

  109. daniel

    +1

  110. Link Mauve

    I’m +1 too.

  111. SamWhited

    Others to vote on list; excellent.

  112. SamWhited

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

  113. SamWhited

    https://trello.com/c/IR0c5nfq

  114. SamWhited

    I think the PRs listed on this card need our attention

  115. SamWhited

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

  116. SamWhited

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

  117. ralphm has left

  118. daniel

    i'm not sure that's a good idea

  119. SamWhited

    Which one? Maybe I should have broken this up

  120. daniel

    by adding that you are basically forcing the carbons ns bump

  121. daniel

    the one about 0198

  122. daniel

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

  123. SamWhited

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

  124. 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?

  125. daniel

    did this ever cause unexpected behaviour in real life?

  126. daniel

    or a dissagreement between server developers?

  127. Link Mauve

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

  128. 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)

  129. Kev

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

  130. Kev

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

  131. Kev

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

  132. Kev

    *Surely

  133. SamWhited

    That was always my assumption

  134. daniel

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

  135. daniel

    why would that be gone after a resume?

  136. 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?

  137. daniel

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

  138. daniel

    or what Kev that

  139. 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?

  140. daniel

    but it should be up to the carbons or csi xeps

  141. daniel

    SamWhited, we are talking about #429 right?

  142. daniel

    just to be sure

  143. SamWhited

    Yes, sorry

  144. Holger

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

  145. daniel

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

  146. Holger

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

  147. SamWhited

    ah right, that makes sense

  148. Holger

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

  149. Zash

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

  150. daniel

    Holger, but that's an orthogonal problem

  151. 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?

  152. 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"

  153. Link Mauve

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

  154. 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

  155. daniel

    that will basically force you to resent it every time

  156. moparisthebest

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

  157. 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

  158. SamWhited

    If there was a next message at all

  159. Holger

    moparisthebest: That's completely weirdo.

  160. Holger

    It must be reset.

  161. daniel

    SamWhited, yes i think it is wrong

  162. daniel

    imho

  163. Holger

    If you don't want that use stanzas instead.

  164. moparisthebest

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

  165. SamWhited

    So, action items thus far:

  166. moparisthebest

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

  167. 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)

  168. 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.

  169. SamWhited

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

  170. daniel

    SamWhited, on the #427 one?

  171. SamWhited

    daniel: yes

  172. daniel

    yes i can do that

  173. Link Mauve

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

  174. 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

  175. Link Mauve

    Yeah.

  176. SamWhited

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

  177. daniel

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

  178. SamWhited

    I'm also -1

  179. Link Mauve

    -1 too.

  180. SamWhited

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

  181. daniel

    i think we already did discuss this?

  182. SamWhited

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

  183. Link Mauve

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

  184. SamWhited

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

  185. SamWhited

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

  186. Link Mauve

    Didn’t we already vote on that last week?

  187. daniel

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

  188. SamWhited

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

  189. Link Mauve

    Let me check.

  190. SamWhited

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

  191. SamWhited

    I wasn't even looking at the right PR.

  192. Link Mauve

    SamWhited, section 2) of the previous minutes.

  193. daniel

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

  194. daniel

    (arguably minor one?)

  195. daniel

    i actually don't think MUC can be fixed

  196. SamWhited

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

  197. SamWhited

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

  198. SamWhited

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

  199. Link Mauve

    (I just fixed that on trello.)

  200. SamWhited

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

  201. daniel

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

  202. SamWhited

    Alrighty

  203. Zash has left

  204. SamWhited

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

  205. Zash has joined

  206. SamWhited

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

  207. 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)

  208. SamWhited

    (that's 6. I guess)

  209. SamWhited

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

  210. SamWhited

    I'm hearing crickets.

  211. SamWhited

    7. IEEE IoT email

  212. daniel

    no objections

  213. Link Mauve

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

  214. Link Mauve

    (Sorry, re 6.)

  215. SamWhited

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

  216. Zash

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

  217. Link Mauve

    SamWhited, what is this email about?

  218. Link Mauve

    Zash, right.

  219. 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

  220. SamWhited

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

  221. SamWhited

    Dave suggested we assign a council liason to the IEEE

  222. Link Mauve

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

  223. 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

  224. SamWhited

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

  225. 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?

  226. SamWhited

    Either way I'm happy to write that email

  227. SamWhited

    Any volunteers?

  228. SamWhited

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

  229. Link Mauve

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

  230. 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)

  231. 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.

  232. SamWhited

    8 (maybe). Date of Next

  233. Link Mauve

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

  234. SamWhited

    Same time next week?

  235. daniel

    wfm

  236. SamWhited

    2017-03-15 1600Z it is

  237. SamWhited

    9. AOB

  238. SamWhited

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

  239. daniel

    i don't have any

  240. Link Mauve

    Me neither.

  241. SamWhited

    Cool, mine is just pending vote reminders:

  242. SamWhited

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

  243. SamWhited

    *gavel*

  244. Link Mauve

    Thank you.

  245. SamWhited

    Thanks everybody

  246. daniel

    thank you

  247. moparisthebest

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

  248. moparisthebest

    I think XEP-0368 to draft times out today anyway

  249. SamWhited

    yah, I thihnk you're right

  250. SamWhited

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

  251. moparisthebest

    or times in, but that sounds odd

  252. Link Mauve

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

  253. 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?

  254. Holger

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

  255. 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.

  256. 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?

  257. 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.

  258. moparisthebest

    right

  259. 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 :-)

  260. Link Mauve

    SamWhited, ok.

  261. 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

  262. 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 :-)

  263. moparisthebest

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

  264. moparisthebest

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

  265. Holger

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

  266. moparisthebest

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

  267. moparisthebest

    I feel like I'm missing some context

  268. 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.

  269. SamWhited

    It matches the nonza use case perfectly, I think.

  270. moparisthebest

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

  271. 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.

  272. Zash

    Holger: What have you done!

  273. moparisthebest

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

  274. 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.

  275. 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).

  276. 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.

  277. 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.

  278. Holger

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

  279. 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).

  280. 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

  281. 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)

  282. SamWhited

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

  283. SamWhited

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

  284. 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.

  285. Kev

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

  286. 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

  287. SamWhited

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

  288. moparisthebest

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

  289. moparisthebest

    which doesn't get routed, but does get ACKd

  290. 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 :-)

  291. moparisthebest

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

  292. 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

  293. moparisthebest

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

  294. Kev

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

  295. Holger

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

  296. Lance has joined

  297. Kev

    I think that's fair.

  298. Kev

    It's Experimental though, right? :)

  299. Holger

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

  300. 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)

  301. Holger

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

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

  303. Holger has left

  304. 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.

  305. SamWhited

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

  306. 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.

  307. Kev

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

  308. 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)

  309. daniel

    SamWhited, +1

  310. Kev

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

  311. 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'.

  312. jere has left

  313. jere has joined

  314. 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.

  315. Kev

    Changing to something much less bikesheddish:

  316. Kev

    https://github.com/xsf/xeps/pull/436/commits/cde2abe151ac8ecaacf46ad5d0cc43caae5b9a62

  317. Kev

    Surely we can't merge that?

  318. Kev

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

  319. daniel

    you said *less* bikesheddish?

  320. SamWhited

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

  321. Kev

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

  322. Kev

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

  323. SamWhited

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

  324. Kev

    SamWhited: Then it should be MAY.

  325. daniel

    we could just bump the muc namespace :-)

  326. Kev

    SHOULD means you can rely on it.

  327. 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.

  328. Kev

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

  329. Kev

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

  330. SamWhited

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

  331. 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)

  332. SamWhited

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

  333. 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".

  334. Kev

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

  335. SamWhited

    yah, that seems sane

  336. daniel

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

  337. SamWhited

    or that

  338. Kev

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

  339. Kev

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

  340. daniel

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

  341. daniel

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

  342. SamWhited

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

  343. daniel

    :-)

  344. Kev

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

  345. daniel

    ok i'll do it

  346. Kev

    Thanks.

  347. 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.

  348. daniel has left

  349. daniel has left

  350. Holger has left

  351. daniel has left

  352. Kev has left

  353. daniel has left

  354. Lance has left

  355. daniel has left

  356. Lance has joined

  357. daniel has left

  358. daniel has left

  359. daniel has left

  360. Tobias has left

  361. daniel has left

  362. daniel has left

  363. daniel has left

  364. daniel has left

  365. daniel has left

  366. daniel has left

  367. Lance has left

  368. daniel has left

  369. daniel has left

  370. daniel has left

  371. daniel has left

  372. daniel has left

  373. daniel has left

  374. Lance has joined

  375. daniel has left

  376. daniel has left

  377. daniel has left

  378. moparisthebest has joined

  379. Tobias has left

  380. moparisthebest has left

  381. moparisthebest has joined

  382. moparisthebest has joined

  383. moparisthebest has joined

  384. SamWhited has left

  385. daniel has left

  386. jere has joined