XSF Discussion - 2017-11-08


  1. SamWhited

    Wow, that looks cool

  2. vanitasvitae

    Right now there is a "math party" at my university

  3. vanitasvitae

    https://jabberhead.tk:5443/f0a454a3b03d017a262dfcfef56c2235742e325d/zCMPkHkA5MltD4QQtF25Lqlw4PglxRCG2zKXN5pn/ka4RoLEzQjWNyTtzwEF-VA.jpg

  4. SamWhited

    daniel: minor annoyance report: despite having looked at the rules in the past I am never sure why some links (like vanitasvitae 's) show up as downloadable but others (Arc's) are not.

  5. vanitasvitae

    SamWhited: maybe because mine is a httpupload link?

  6. vanitasvitae

    Ah, maybe thats not the reason...

  7. SamWhited

    yah, as far as my client is concerned its just a message with text in it that looks like a link (unless the MUC is also reflecting OOB metadata or something)

  8. SamWhited

    Not a big deal, it just "feels" inconsistent

  9. daniel

    SamWhited: if you use the attach button in Conversations it will add an oob tag. And Conversations will only show the button for messages which also have an oob tag

  10. daniel

    The muc does reflect that

  11. SamWhited

    That makes sense

  12. Arc

    well one's http vs https

  13. Arc

    is the mime being sent on each?

  14. Zash

    moparisthebest: FWIW I've had thoughts along the same lines as you wrt encrypting things separately so that only the entity that needs one piece of data can see it. But I don't think that's XMPP.

  15. Ge0rG

    How does the OOB tag interop with OMEMO? It's obviously leaking data, but what exactly? Is the password only contained in the body?

  16. Zash

    I am under the impression that it's just a special URL in the (encrypted) body, with the encryption key in the #this part.

  17. zinid

    leaking data my ass...

  18. zinid

    yet another round of bikeshedding

  19. Ge0rG

    Zash: yes, that's how it works. But what is contained in the oob tag?

  20. Ge0rG

    I would look up myself, but I don't have any OMEMOs

  21. Zash

    I don't believe there is one

  22. Ge0rG

    Zash: I was under the impression that Conversations needs the oob tag to display inline images

  23. jonasw

    Ge0rG: oob is safe enough for daniel, sims would not be: https://github.com/siacs/Conversations/issues/2637

  24. Ge0rG

    I'd probably consider the picture URL and file size to be private as well, but what do I know

  25. Zash

    Where's that blag that said that e2e crypto is basically just marketing fluff?

  26. Ge0rG

    Hm. of all people, I should know that.

  27. jonasw

    SamWhited, so you’re arguing my proposal is bad because it’ll lead to incompatibilities among clients, but you argue that incompatibilities among clients when you change bits in yours aren’t an issue? (around 22:19Z)

  28. jonasw

    daniel, no, you will only get real-world feedback on the input format. nobody cares about the wire format except the devs who are then forced to implement things because of your market share (sorry to be blunt here.) (re around 22:48Z)

  29. jonasw

    but hey, we already agree on the input format, I think that’s really nice, and it’s nice to have that standardised.

  30. Ge0rG

    I only wish for a way to skip formatting when typing formulas

  31. jonasw

    or any other content for that matter.

  32. jonasw

    or any other content which shouldn’t be formatted for that matter.

  33. jonasw

    but nobody listens to me

  34. Zash

    It seems weird to me to be XEPing what amounts to UI things

  35. Ge0rG

    Zash: because you are a server dev

  36. Ge0rG

    Zash: I care very much about UI things, and I want them consistent across implementations

  37. Flow

    I'm sure everybody already noticed that XHTML-IM/styling/markdown/bmh discussion related thing on HN: https://news.ycombinator.com/item?id=15646425

  38. Ge0rG

    This is the major weakness of XMPP. Every client works differently

  39. Zash

    But sometimes it is a strength.

  40. jonasw

    depends

  41. jonasw

    I think for each major workflow we’d need a set of clients covering each platform.

  42. Zash

    Altho according to some random Reddit thread I saw, none of the competition things work as they should in FOSS

  43. jonasw

    currently, conversations covers the "non-technical" workflow pretty well on mobile.

  44. Ge0rG

    Zash: yes, if you believe that you need the opportunity to differentiate on quality of implementation.

  45. Zash

    Well, optimally the differentiation would be on proirites, so you could find a thing that sucks in ways you don't care about.

  46. Flow

    jonasw, a while ago Dave suggested to have a generic extension to reference certain parts of bodytext ( https://mail.jabber.org/pipermail/standards/2016-February/030924.html ). That doesn't sound like a bad idea to me, as it could also be used in your Message Markup XEP. What do you think?

  47. jonasw

    Flow, I looked at References

  48. jonasw

    it would be a major (size) overhead to have a <reference xmlns="…"> element for each bit of markup though

  49. Flow

    jonasw, not reference

  50. Flow

    <bodytext/>

  51. Flow

    (see linked mail)

  52. Flow

    Uh wait, maybe I misunderstood Dave's mail, he was probably just talking about factoring the data into an extra element

  53. Flow

    not using that as generic element which can be re-used by other xeps

  54. jonasw

    I think so, too

  55. jonasw

    but now I get what you meant

  56. jonasw

    it also isn’t in the final XEP

  57. jonasw

    (<https://xmpp.org/extensions/xep-0372.html>)

  58. Flow

    true, but the idea is appealing. such an generic element could also specify how it's used with non-<body/> body text

  59. Flow

    like the text found in OMEMO messages

  60. jonasw

    I see your general point. we could reword so that it doesn’t refer to <body/> but to "text of the message". in which case OMEMO would provide the "actual" text of the message as opposed to the <body/>.

  61. jonasw

    but there are different issues with combining this with OMEMO which need to be discussed in the security considerations (OMEMO won’t encrypt the markup...)

  62. Flow

    jonasw, i fear it's a bit more complicated than that

  63. jonasw

    (nor will it authenticate the markup, which is bad too)

  64. jonasw

    Flow, is it?

  65. Flow

    1. there could be multiple unencrypted <body/> elements. 2. with OX there could be multiple encrypted <body/> elements. 3. with omemo it is just one body (and the markup information is not encrypted/authenticted)

  66. jonasw

    multiple unencrypted body elements must have xml:lang tags to distinguish them, as do <markup/> elements.

  67. jonasw

    I presume that this is the same for OX?

  68. Flow

    yep

  69. Zash

    What does happen if you have multiple bodies with e2e?

  70. Flow

    but I possibly place the xml:lang selector not in <markup/> but in the generic <bodytext/>

  71. Flow

    Zash, what happens if you have multiple bodies without e2e?

  72. jonasw

    Flow, that makes things more complex to parse and generate I think

  73. Zash

    I haven't a clue

  74. jonasw

    Flow, I think e2ee simply doesn’t allow that

  75. jonasw

    it’s also not a very common use-case in IM

  76. Flow

    OX does not forbit multiple <body/> elements

  77. Flow

    *forbid

  78. jonasw

    *currently deployed e2ee simply doesn’t allow that ;-)

  79. daniel

    Is there an OX implementation in smack Flow?

  80. Flow

    daniel, there is a branch a started a while ago

  81. Flow

    but nothing even prototypical

  82. Flow

    yet

  83. pep.

    jonasw: maybe you should cover the case in markups. How does it work when there are multiple bodies ATM? (Different xml:lang)

  84. Flow

    first ISR, then OX. that is the current order of my priorities ;)

  85. jonasw

    pep., it’s in the Business rules and the Internationalisation considerations.

  86. pep.

    jonasw: also, unrelated, I'm not really fan of leaving the list/quotation characters etc., in the rendered version

  87. jonasw

    pep., I agree

  88. jonasw

    it’s tricky to avoid though

  89. jonasw

    I’m writing a response to standards@ about this

  90. pep.

    K

  91. jonasw

    (Goffi brought it up there)

  92. pep.

    Will read

  93. pep.

    And I need to reply as well

  94. jonasw

    pep., there you go

  95. daniel

    jonasw: aren't the > and * you use in your example kinda like markup information in the body?

  96. daniel

    Which the xep says you are trying to avoid?

  97. pep.

    That's why I don't like them

  98. dwd

    daniel, It's only bad if someone else does it.

  99. jonasw

    daniel, it’s not required for them to be there at all.

  100. jonasw

    they don’t carry any meaning.

  101. jonasw

    however, if combined with Message Styling, I can totally see letting them in there for compatibility.

  102. pep.

    What's the point if you already have the meaning of your markup translated

  103. dwd

    pep., Fallback.

  104. jonasw

    you can’t stop people from typing them (I do too!), and I’m totally in favour of specifying the input format Message Styling defines

  105. Ge0rG

    And then we end up with a message containing a <body> with this-is-really-not-markdown-although-it-walks-like-markdown-and-quacks-like-markdown, a <body-markup-hint/>, a <markup> tree and an XHTML-IM payload.

  106. jonasw

    but in contrast to the Message Styling wire format, we could adapt to changing behaviours and trends in the meta-characters used by humans

  107. jonasw

    which is nice

  108. jonasw

    (I mean, adapt without breaking old archives and interop for the transition period)

  109. pep.

    jonasw: leaving it there defeats the point of not putting markup on the body

  110. jonasw

    pep., tend to agree.

  111. jonasw

    but some kind of fallback is needed.

  112. pep.

    Why?

  113. jonasw

    especially for quotations

  114. jonasw

    (not so much for lists)

  115. Kev

    My thoughts on this, /still/ not having had time to look at the spec. Is that we're not trying to define a new format here that adds a new feature, we're trying to render correctly what the user's intent was when they typed something. I think that changes things *significantly*.

  116. jonasw

    if a client doesn’t understand <markup/>, it would render the quotations as normal paragraphs.

  117. pep.

    Do we have a failback for every single xep out there? In case the first one isn't supported

  118. jonasw

    pep., I think most XEPs either specify a fallback or fail gracefully.

  119. Kev

    And so just documenting roughly what people are already typing in messages is both pragmatic and sensible.

  120. Kev

    (And people *are* already typing ascii markup in messages, and the world is definitely not falling apart, even though not all clients support rendering it)

  121. jonasw

    Kev, my main problem with Message Styling isn’t that it does that, but that it doesn’t have an opt-in.

  122. Ge0rG

    Kev: actually, all clients support rendering it... as ASCII

  123. pep.

    Ge0rG: agreed

  124. Kev

    Ge0rG: Potato potato :)

  125. jonasw

    if we’re going to change the rendering with possibly removing charatcers (e.g. for quotations!), then it must be opt-in.

  126. Kev

    We should not be removing characters.

  127. jonasw

    and I think that it should still be opt-in even if those characters are preserved.

  128. daniel

    jonasw, isn't opt-in something your client should support?

  129. jonasw

    daniel, no, because the client can’t know if the sender intended it.

  130. Kev

    We should be rendering the existing characters with additional styling, or should have a local toggle.

  131. Ge0rG

    Kev: but it's up to the sender to decide whether they want markup for a given ASCII sequence.

  132. Kev

    (Which is what Swift does with emoticons - it renders by default, removing the source, but you can flip it off to go back to the as-sent. Useful if someone's pasting code sometimes)

  133. daniel

    i'm not really sure what you mean by opt-in then

  134. jonasw

    daniel, an additional element to <message/> which indicates that the body can be interpreted according to the Message Styling rules.

  135. Ge0rG

    I think that when copy&pasting things from the IM client, the original body should be copied with all "markup" characters present as-is

  136. Ge0rG

    jonasw: that would be body-markup-hints?

  137. daniel

    jonasw, i can get on board with that

  138. jonasw

    Ge0rG, exactly.

  139. jonasw

    daniel, I said so on the list, nobody cared :(

  140. Ge0rG

    the sending client could pre-render markup in the input field and offer a button to strip markup

  141. Ge0rG

    so you can paste code.

  142. Ge0rG

    but then interop.

  143. Ge0rG

    You can't fix Gajim overnight

  144. jonasw

    Ge0rG, lovetox can :)

  145. Ge0rG

    So we need two hints. One for "this is markup" and another for "this is definitively not markup"

  146. daniel

    i'm not really sure I want Flows xep for that though. because then styling would depend on Flows xep getting accepted

  147. jonasw

    daniel, I think flows xep was rejected anyways?

  148. Kev

    Ge0rG: Isn't this similar to the "I meant what I sent" that I was talking about with not doing emoticon rendering?

  149. dwd

    daniel, It needs something like Flow's BMH. Not *exactly* it.

  150. jonasw

    dwd, I think in fact it pretty much needs that.

  151. Kev

    (Although not quite the same)

  152. Ge0rG

    Kev: I thought you were talking about the receiving side

  153. Ge0rG

    I'm still annoyed by some IM clients replacing (b) and (y) with random emoji.

  154. jonasw

    daniel, in fact, my arguments for opt-in were dismissed with something along the lines of "edge cases nobody should care about".

  155. jonasw

    Ge0rG, kill trillian with fire

  156. Ge0rG

    jonasw: also, Gajim.

  157. daniel

    jonasw, i'm trying to find your email in that huge bike shadding thread to give a thumbs up

  158. jonasw

    Date: Yesterday 19:29

  159. jonasw

    (CET)

  160. jonasw

    if that helps

  161. Zash

    destroyallsoftware?

  162. daniel

    it does

  163. Ge0rG

    Kev: "I meant what I sent" could be a BMH of "text/plain"

  164. dwd

    Ge0rG, I don't think we need the complexity of media typing here, actually.

  165. Ge0rG

    dwd: right, let's just invent a new name for it.

  166. dwd

    Ge0rG, Would you want text/html there?

  167. jonasw

    I get shivers.

  168. jonasw

    also, note that BMH is not Content types

  169. dwd

    Ge0rG, If anything, we want a media type of: `text/plain; format=XYZ`, with ZYX given by a BMH-a-like.

  170. Ge0rG

    Okay, BMH only relates to body, so "text/" is implicitly pre-set.

  171. jonasw

    https://xmpp.org/extensions/inbox/bmh.html#languages

  172. jonasw

    there’s no media type here.

  173. Ge0rG

    I don't like the use of the term "Language" in there.

  174. Ge0rG

    </bikeshed>

  175. dwd

    Ge0rG, Yes, excellent point, this is veyr much a bikeshed.

  176. jonasw

    BMH essentially foresaw Styling.

  177. jonasw

    > TODO: Shall we define your own subset of e.g. CommonMark, XMPPMark? :)

  178. jonasw

    (or shall I say, inspired?)

  179. dwd

    I think the writing was on the wall.

  180. Ge0rG

    dwd: as opposed to the exact BMH identifier string to be used for "this is not markup"?

  181. dwd

    Only we couldn't parse it properly because it turned out nobody knew what *this* meant.

  182. Ge0rG

    I still want code syntax highlighting.

  183. dwd

    Ge0rG, I'm not worried about clients heuristically doing that in ```these sections```.

  184. Zash

    What about `if(what){then()}`{.c}

  185. Ge0rG

    like heuristically rendering /italics/ and *bold*?

  186. Ge0rG

    Zash: I think it's sensible to keep syntax coloring to ``` blocks, not to `spans`

  187. Ge0rG

    So what about the following proposal: - messages with a BMH(*) of "Styling" get styled and the markup characters removed on display (but not on copy&paste) - messages without a BMH get rendered as markup with the markup charachters in place - messages with a BMH of "plain" get rendered verbatim with no styling applied (*) BMH or an improved version that provides the same semantical meaning

  188. dwd

    Ge0rG, I think that's sensible. I'm not entirely sure about the middle case, but I don't care enough to object.

  189. daniel

    gajims current rendering is pretty annoying btw

  190. jonasw

    daniel, didit boldface everything between (*) and (*)?

  191. daniel

    yes

  192. jonasw

    kill it with fire

  193. dwd

    jonasw, Yup. Not a huge fan of that, nor leaving the *asterisks* in place.

  194. dwd

    jonasw, But as a heuristic solution it's OK, and 99% of the time gets things right.

  195. jonasw

    Ge0rG, you can’t really remove the markup characters on display in any case, because then clients would have to be sure that the sender intended it to be that way.

  196. Ge0rG

    x * y - z * 3

  197. zinid

    easy to writer a parser they said

  198. jonasw

    Ge0rG, and I don’t think that’s an assumption an client operated by a human can reasonably have

  199. dwd

    jonasw, Ge0rG literally just outlined a way to communicate exactly that.

  200. Ge0rG

    jonasw: the sender needs to pre-render the markup in the input line of course.

  201. daniel

    zinid, the styling xep has a very straight forward parser

  202. jonasw

    dwd, sender as in the human operating the client, not as in the program

  203. daniel

    it's just about defining the rules properly

  204. jonasw

    Ge0rG, that’s a very complex thing not many clients will do.

  205. Ge0rG

    jonasw: an easier thing would be to have a button on the sent message to "remove markup", which would send an LMC with a BMH.

  206. zinid

    daniel: can I use LALR(1) parser? if not, it's not simple

  207. jonasw

    Ge0rG, sounds like a plan!

  208. jonasw

    didn’t think of LMC in this context, kudos

  209. jonasw

    zinid, I think LALR(1) should do

  210. zinid

    jonasw: can I have grammar.y then? or should I write it manually because it's funny?

  211. jonasw

    zinid, I suggest that the XEP authors provide a formal definition of the grammer once it is accepted :)

  212. zinid

    jonasw: ok

  213. Ge0rG

    BNF FTW!

  214. zinid

    ABNF would be awesome, I could use ragel

  215. jonasw

    ABNF seems very reasonable considering that it’s the IETFs go-to representation for grammars.

  216. daniel

    Ge0rG, if we want to annotate i'd prefer the simpler 'opt-in' proposal jonasw had

  217. Zash

    Not EBNF?

  218. jonasw

    Zash, I always forget the exact acronym

  219. daniel

    you could still to 'send lmc to remove style'

  220. Ge0rG

    daniel: the simpler opt-in mechanism requires all clients to update

  221. Ge0rG

    daniel: ah, LMC-based markup removal. Yeah.

  222. Zash

    jonasw: Looks like both ABNF and EBNF exist

  223. jonasw

    daniel, re-visiting BMH in the light of Styling I think BMH would be a great way to convey this and allow for richer use-cases at the same time.

  224. daniel

    Ge0rG, most clients need to update anyway. because gajim doesn't support styling for example

  225. jonasw

    BMH still can’t cover everything XHTML-IM could, but it provides nice plain-text fallbacks. a client with strong a11y considerations would want to interpret most of those markups anyways.

  226. jonasw

    Ge0rG, re code blocks, by the way, a common convention is "```language\n<code here>\n```"

  227. jonasw

    that’s how gitlab markup does it

  228. Ge0rG

    jonasw: yeah, I could live with that.

  229. Zash

    That's how pandoc does it.

  230. Ge0rG

    re "text/plain", Tobias wrote re BMH: "I wonder whether it makes sense to reuse IANA Media Types instead of starting a new registry."

  231. jonasw

    Ge0rG, at which point it would’ve been Content Types (<https://xmpp.org/extensions/inbox/content-types.html>) which was rejected over a year ago

  232. Ge0rG

    History is repeating.

  233. Ge0rG

    Can't we just change the message type? (I mean the 'type' attribute of the <message> stanza)

  234. jonasw

    Ge0rG, go away.

  235. jonasw

    ;-)

  236. Tobias

    Ge0rG, i think the RFC doesn't allow additional parameters on that

  237. Tobias

    or additional attributes on body

  238. jonasw

    namespaced attributes! (Sam is gonna shoot me)

  239. Ge0rG

    Tobias: we can override the RFC with an XEP. I'm sure nobody will notice.

  240. Zash

    jonasw: y u do this

  241. jonasw

    Zash, what?

  242. Zash

    jonasw: mention namespaced attributes :)

  243. jonasw

    I think they’re great.

  244. Ge0rG

    do they need namespace versioning as well?

  245. jonasw

    sure

  246. jonasw

    I think by now that much of this war is rooted in the confusion between "plain-text fallback" and "markup language" and that again is rooted in the fact that many modern markup languages look like plaintext fallbacks.

  247. jonasw

    or rather have useful plaintext fallbacks right from the beginning

  248. Kev

    Well, also whether you want what people already type to be correctly handled everywhere.

  249. jonasw

    Kev, no, that’s input conventions and should not matter for wire formats.

  250. Kev

    Assuming universal adoption.

  251. Kev

    But this 'just render what's sent with styling enhancement' has been in use for a very long time without issue.

  252. jonasw

    if we still had the IRC conventions with some control-characters for formatting around, you’d not argue that "what people already type" should be in wire formats.

  253. jonasw

    (mostly because XML can’t carry those, but also because it’s not a useful plaintext fallback)

  254. Zash

    I like arguments like "everyone is already doing it" and "has worked forever without issue"

  255. jonasw

    Kev, I doubt you can say "without issue" just 50 lines after somebody complained about how broken gajim handles that.

  256. Zash

    Especially when people are pointing out the times it's messy and doesn't work

  257. mathieui

    jonasw, which is why I’ll wirte a protoxep in order to send the poezio internal format over the wire, escaped

  258. mathieui

    jonasw, which is why I’ll write a protoxep in order to send the poezio internal format over the wire, escaped

  259. Kev

    jonasw: Gajim may do something stupid, but Psi doesn't.

  260. Kev

    I'm not saying that doing other things than what I'm suggesting works without issue :)

  261. jonasw

    Kev, but it kind-of moots the "everyone is doing it and it works great" point

  262. mathieui

    "psi is doing it, and for some cases it works great" already doesn’t sound that good

  263. Kev

    It would certainly bring into question that point that I'm not making, yes.

  264. Kev

    A lot of people are sending this stuff on the wire, irrespective of rendering. Some clients (at least Psi) also add styling successfully to it.

  265. jonasw

    Kev, "without issue" is certainly wrong, but I’m not going to nitpick here (and I probably misread some statement)

  266. Kev

    What's the issue with what Psi's doing?

  267. jonasw

    I don’t know psi, but what gajim does is certanily an issue.

  268. jonasw

    so it’s not without issue at all.

  269. Kev

    It basically just turns *thing* into <b>*thing*</b>

  270. mathieui

    jonasw, Kev’s point is that it has been in use for a long time without issue, in psi

  271. mathieui

    which is not contradicted by "gajim handles things wrong"

  272. Kev

    I don't buy the argument that "What Kev suggests doesn't work, because someone does something different to what Kev suggests, and that doesn't work".

  273. jonasw

    Kev, maybe I missed what you indeed suggest :)

  274. mathieui

    (I haven’t used psi in a very long time so I can’t argue with that)

  275. Kev

    Just adding styling to ** // __.

  276. jonasw

    Kev, well gajim does exactly that

  277. Kev

    (Without removing the characters)

  278. Kev

    If Gajim does exactly that, what's the issue?

  279. jonasw

    it also does that across newlines

  280. mathieui

    jonasw, gajim has somewhat looser boundaries

  281. mathieui

    I think psi only does it for words

  282. jonasw

    mathieui, Kev didn’t say anything about boundaries :-)

  283. mathieui

    e.g. the formating chars are stuck to the words

  284. goffi

    Kev: even by keeping the formatting characteres, I would not like to have ls `date +%Y-%m-%d`-*.xml rendered half in monospace, partly in bold. How does Psi handle that?

  285. Kev

    I forget, I wrote this a decade and a half ago or so.

  286. mathieui

    jonasw, I mean, if Kev says it works fine, it has to be slightly more precise than what gajim does, even if I believe we can always find cases where it doesn’t do what's intended

  287. Kev

    I'm sure it's possible to have it do not-what-you-intend, but I don't believe ever in a way that damages the ability to understand it.

  288. Kev

    But none of that example should be bold, because there's only one *, and in that particular case half of it being monospace is exactly what one would usually expect.

  289. Kev

    But ISTR I made Psi not do word partials.

  290. jonasw

    FTR, I think the rules laid out by Styling are a good start, once we get rid of the escaping (which I think Sam said he would do)

  291. Kev

    There *is* a definite advantage to having this out of band, BTW, which is that you can not annotate things that are pastes.

  292. Kev

    But I think you can achieve the same thing just by having <paste/> as a child.

  293. Kev

    AFK a while.

  294. moparisthebest

    I can see it now, 20 years from now: "daddy what caused the great XMPP fork of 2017 when half the community split off into Zimpy?" "well honey, they couldn't agree on the optimal way to bold a word in a text message"

  295. Zash

    /thread

  296. jonasw

    itym </thread>?

  297. zinid

    *thread*

  298. Ge0rG

    *italics*

  299. mathieui

    i*italics*

  300. intosi

    ["The last word should be ", {"style": "bold", "contents": "bold"}]

  301. Zash

    Let me tell you about `pandoc -t json`

  302. intosi

    Can I still say no?

  303. intosi

    Or rather, [{"unMeta":{}},[{"t":"Para","c":[{"t":"Str","c":"No!"}]}]]

  304. dwd

    I'm concerned that "No" is not semantically transmitted, and therefore may be interpreted differently in multiple clients.

  305. Guus

    dwd: I see that you're married.

  306. dwd

    We should have a markup that encapsulates the entirety of human speech, so that all clients directly interpret the semantics intended, and therefore can respond suitably without relying on humans having to guess what the sender might mean.

  307. Zash

    <statement><negative exclamation='true'>no</negative></statement>

  308. Ge0rG

    dwd: machine to machine communications?

  309. dwd

    Guus, <amusement/><agreement/>

  310. dwd

    Ge0rG, And from there, but a short step to eliding the communication entirely, making XMPP so much more bandwidth efficient.

  311. intosi

    I would propose BER, but I'm too lazy to do so.

  312. Zash

    B2B communication

  313. dwd

    intosi, PER, surely, or does David no longer get excited by that one?

  314. Zash

    intosi: have you considered beer instead

  315. Ge0rG

    dwd: that's absolutely the wrong direction. We can finally increase XMPP's popularity by populating the network with m2m semantics-capable clients

  316. intosi

    Zash: +1

  317. intosi

    dwd: I am not presently in the same room as David, he cannot complain.

  318. dwd

    <ironic-statement/>

  319. Ge0rG

    <sarcastic-retort/>

  320. dwd

    <assertion-of-fascism/>

  321. jonasw

    <godwins-law/>

  322. Zash

    <statement:nonsensical rel='plankton'/>

  323. moparisthebest

    I'm super sorry to turn the topic of conversation here, but, Zash about layers of encryption so each server only knew bare minimum

  324. moparisthebest

    seems like it could still be XMPP but we'd just have to wrap things in new nonzas ?

  325. jonasw

    moparisthebest, broadcast

  326. zinid

    "We can finally increase XMPP's popularity" - this will never happen

  327. moparisthebest

    <deliver to="otherserver.com"> (this part is encrypted blob #1)<deliver to="jid@otherserver.com">(this part is encrypted blob #2)<message from="bob@bob.com" to="jid@otherserver.com">etc</message>(/end encrypted blob #2)</deliver>(/end encrypted blob #1)</deliver>

  328. jonasw

    moparisthebest, what about presence broadcast, MUC?

  329. moparisthebest

    jonasw, not sure, maybe it only works for messaging

  330. jonasw

    MUC and MIX broadcasts?

  331. Ge0rG

    jonasw: encrypted to the MUC service

  332. Ge0rG

    jonasw: or multi-key-encrypted to all participants

  333. moparisthebest

    it might only be feasible for bare-minimum metadata for direct chats

  334. moparisthebest

    yea that'd work I guess, let the MUC service broadcast, idk

  335. moparisthebest

    just trying to throw crazy ideas out there that solve the metadata problem as much as possible

  336. jonasw

    I don’t think that there is a real metadata problem.

  337. moparisthebest

    we are OK with specs that require changes on all clients and servers to be useable already, see MIX

  338. jonasw

    or maybe there is, but I don’t think it’s reasonable to solve that within XMPP.

  339. moparisthebest

    might as well solve the metadata problem the same way

  340. Ge0rG

    moparisthebest: the best solution to the metadata problem is to run your own server for you and all of your important contacts

  341. SamWhited

    jonasw: no, I'm arguing that it's not a problem because we won't change it later. The formatting is good enough and doesn't need to be extensible after we settle on a few basic things (but I don't remember what I said about your thing with relation to compatibility)

  342. moparisthebest

    doesn't *solve* it, you still have 1 central service that knows everything

  343. zinid

    moparisthebest: solve what?

  344. Ge0rG

    moparisthebest: federated systems will always have metadata leakage. What you want instead is a P2P DHT chat system.

  345. jonasw

    SamWhited, okay

  346. moparisthebest

    metadata problem

  347. Ge0rG

    moparisthebest: or maybe you want to connect to XMPP via TOR.

  348. moparisthebest

    if I wanted that I'd just use tox, and have to change my phone battery every 20 minutes

  349. moparisthebest

    I'm just talking about leaking bare minimum metadata to XMPP servers, the bare minimum for federated chat

  350. Ge0rG

    moparisthebest: so what you want instead is a tox agent running on a trusted server that you connect to.

  351. moparisthebest

    then you are back to 1 central server with all info

  352. Ge0rG

    moparisthebest: yes.

  353. moparisthebest

    so you've got A (client) -> B (server) -> C (server) -> D (client)

  354. Ge0rG

    moparisthebest: with XMPP, you could hide the usernames of the people you talk to from your server. But not presence.

  355. moparisthebest

    an ideal scenario has each only knowing about the next hop

  356. Ge0rG

    moparisthebest: and then still, the receiving server would know your full JID.

  357. moparisthebest

    no they'd only know the server it came from, and who it's going to, not sending JID though

  358. jonasw

    moparisthebest, that doesn’t buy you a lot, you’d need to go full Tor essentially

  359. moparisthebest

    I think it does buy you a lot

  360. moparisthebest

    no server knows who sent it or who it's intended for

  361. moparisthebest

    and that's the win you are looking for

  362. moparisthebest

    worded that wrong, let me try again...

  363. jonasw

    it needs to know who sent it to be able to reply with an error

  364. Zash

    moparisthebest: howaboutno

  365. moparisthebest

    no single server knows who sent it or who it is intended for

  366. moparisthebest

    damnit

  367. moparisthebest

    no single server knows BOTH who sent it AND who it is intended for

  368. moparisthebest

    finally, need more coffee

  369. jonasw

    moparisthebest, the destination server needs to know both

  370. Ge0rG

    moparisthebest: then you have to filter spam at the client.

  371. jonasw

    it needs to be able to deliver it to the client locally

  372. jonasw

    and it needs to be able to reply with an erro

  373. jonasw

    to the original sender

  374. moparisthebest

    jonasw, right, to the original sender's SERVER

  375. moparisthebest

    who then handles it from there

  376. jonasw

    and how would that know where to send it?

  377. moparisthebest

    that's encrypted so only the senders server can decrypt it

  378. jonasw

    I see

  379. moparisthebest

    Ge0rG, yep you always have to with e2e meh

  380. jonasw

    moparisthebest, incorrect

  381. jonasw

    whatsapp and others filter spam solely based on metadata

  382. moparisthebest

    and here you have even less metadata

  383. jonasw

    email spam is also filtered based on metadata to a large extent (DNSBLs for example)

  384. moparisthebest

    which is in fact the entire point

  385. jonasw

    yes, but that’s not a property of e2ee

  386. moparisthebest

    you can still filter the DNSBL way, ie, blocking the whole server

  387. moparisthebest

    but that's it

  388. moparisthebest

    Zash, you don't want to implement it as a server dev or you think it won't work or you think it's a terrible idea, or all 3? :P

  389. Zash

    Insufficient context

  390. Guus

    I know I'm late to the party, but: <response thread="ban-opposing-sides"/>

  391. Guus

    threat!

  392. jonasw

    Zash, I guess it’s 14:16:46 Zash> moparisthebest: howaboutno

  393. moparisthebest

    yep

  394. Zash

    On phone, it scrolled out of view.

  395. Zash

    Anyone wanna add a in-reply-to equivalent thing to XMPP ?

  396. jonasw

    Zash, there are three of that

  397. Kev

    Zash: References. You're welcome.

  398. jonasw

    (1) Threads, (2) https://xmpp.org/extensions/xep-0372.html, (3) https://xmpp.org/extensions/xep-0131.html

  399. jonasw

    possibly more

  400. moparisthebest

    so the client would have to negotiate this with their server who would negotiate it with the remote server, then the client would triple encrypt everything before sending

  401. Zash

    Step two, bother client devs

  402. jonasw

    Zash, no, step 2 is to find a proper UI for that

  403. Zash

    jonasw: I'd show you my irc client

  404. jonasw

    Zash, how does that do In-Reply-To?

  405. Zash

    https://www.zash.se/upload/MdiT9Ke5RKyC07wpWTErEw.jpg

  406. Zash

    Long press on message

  407. Zash

    All it does afaik is to add the nick as a prefix

  408. jonasw

    Zash, that only seems like a reasonable workflow on mobile :/

  409. jonasw

    hm

  410. jonasw

    desktop could have a button

  411. Zash

    What, isn't mobile first the thing anymore?

  412. jonasw

    I don’t care about mobile :)

  413. jonasw

    (a lotr

  414. Zash

    And desktop never

  415. jonasw

    (a lot)

  416. SamWhited

    >> I'm concerned that "No" is not semantically transmitted, and therefore may be interpreted differently in multiple clients. > dwd: I see that you're married. I need to stop reading Guus' comments on the bus, people look at you funny when you laugh loudly in public.

  417. Zash

    Maybe you can infer from nickname prefix

  418. moparisthebest

    sorry what's this > business in front of your messages SamWhited ? I don't understand /sarcasm /no-need-to-respond :)

  419. jonasw

    SamWhited, I learnt that the hard way while reading The Hitchhikers Guide to the Galaxy for the first time.

  420. Guus tips hat.

  421. SamWhited

    jonasw: ooh yah, I wouldn't mind reading that again, but maybe not on the bus.

  422. Link Mauve

    “13:17:24 zinid> we don't have avatars working goddamit”, do you have any issue with XEP-0153 in a specific deployment?

  423. jonasw

    I have an issue with XEP-0153 :/

  424. jonasw

    it’s the whole damn thing :P

  425. lovetox

    yeah i dont get that, xep-0153 covers all use cases in my opinion, i dont know why we every would need more

  426. lovetox

    the only thing that can be said thats not so nice is, that you can request the avatar alone

  427. jonasw

    lovetox, notification on change?

  428. Link Mauve

    jonasw, it’s a thing which works, today, in every case.

  429. lovetox

    and also have to request whole vcard

  430. Link Mauve

    jonasw, presence update.

  431. lovetox

    jonasw, presence?

  432. jonasw

    oh

  433. lovetox

    but avatar data will always way more then vcard data

  434. lovetox

    so not that big of a problem

  435. jonasw

    I didn’t know that

  436. lovetox

    then you never read 0153

  437. jonasw

    I admit that

  438. jonasw

    I read the title and that it was historical and assumed it’d be polling the vcard

  439. Link Mauve

    Long ago I wanted to add a vCard value for 0084 too, but I never followed on that.

  440. zinid

    Link Mauve: I have no problems with 0153, I have problems with 0153 and 0084 being implemented by different clients

  441. zinid

    Link Mauve: also 0084 doesn't work in mucs

  442. zinid

    and now we're doing the same weird shit with vcard-4

  443. jonasw

    I heard nobody uses vcard-4?

  444. zinid

    jonasw: MIX suggests it for example

  445. lovetox

    no though i plan to use it

  446. edhelas

    jonasw I do, over PEP

  447. edhelas

    works great

  448. zinid

    ok, we probably need to say good bye to vcards as well

  449. zinid

    so no avatars, no vcards, no private storage, no file sharing

  450. zinid

    that's where we are in 2017

  451. zinid

    and you are discussing how to transfer bold

  452. zinid

    amusing

  453. mathieui

    zinid, I want to transfer italics, not bold!

  454. edhelas

    yup

  455. edhelas

    zinid I do agree, and bookmark is still broken and non-atomic :p

  456. zinid

    yes, bookmarks are broken as well because of incompatible implementations

  457. jonasw

    hopefully we can settle all of this if multi-item PEP lands

  458. jonasw

    hopefully we can settle all of this when multi-item PEP lands

  459. jonasw

    hopefully we can settle all of this when multi-item private PEP lands

  460. Holger

    We'll still have 2-3 XEPs for transmitting bold then :-)

  461. edhelas

    jonasw PEP could be just Pubsub on JID <3

  462. Link Mauve

    zinid, clients implementing 0084 instead of 0153, latest 0048 instead of previous 0048 which used to use 0049, because of some perceived superiority of PEP, are the stupid ones imo.

  463. edhelas

    🦄

  464. Link Mauve

    vCard 4 is also something which should be replaced with vCard.

  465. Holger

    Link Mauve: I think we are the stupid ones in failing to agree on a solution for a given problem.

  466. Holger

    First step would be acknowledging this as a problem, but I'm being told that's all just the usual XEP standardization process and there's nothing fundamentally wrong with it.

  467. zinid

    Link Mauve: should be replaced? like in https://xkcd.com/927 ?

  468. Link Mauve

    I didn’t want to propose to deprecate 0084 or vCard 4 or 0223, mostly because in the future they could be better, but it seems best to ignore them currently.

  469. edhelas

    Link Mauve what's the issue of using PEP for everything related to JID informations ? then we have one way of getting and setting those info

  470. SamWhited

    Holger ++

  471. Link Mauve

    Holger, yes, I agree.

  472. edhelas

    also with Prosody having persistance and Pubsub now we will be able to use PEP for mostly everything

  473. Link Mauve

    edhelas, not really, no.

  474. jonasw

    Link Mauve, excuse me, if I am faced with a choice between a Draft and a Historical XEP, I’m going to implement Draft.

  475. Ge0rG

    edhelas: prosody isn't even there yet

  476. Link Mauve

    0084 is still fundamentally broken, despite persistency in one specific implementation.

  477. jonasw

    I learnt the hard way that XEP-0084 isn’t deployed widely, and I’m super-annoyed that I had to find out the hard way.

  478. Link Mauve

    jonasw, yes, the state of these XEPs is sad.

  479. edhelas

    Link Mauve why 0084 is broken ?

  480. zinid

    edhelas: it doesn't work in mucs

  481. jonasw

    if it’s not supposed to be implemented, council should make sure that it doesn’t look like one should

  482. edhelas

    ah yes MUC…

  483. edhelas

    let's talk about vcards and avatars for Pubsub nodes as well

  484. jonasw

    but I firmly reject to be the "stupid one" here.

  485. Link Mauve

    edhelas, it’s only usable by your contacts, in your roster; if you’re in a MUC you can’t use it, if you’re just chatting with someone who isn’t in your roster you can’t use it.

  486. edhelas

    basically what we are trying to do with MIX

  487. Link Mauve

    jonasw, as Holger pointed it, it’s not users or developers who are the stupid ones, but the XSF and our current standardisation process.

  488. jonasw

    XEP-0048 is even worse because you can’t easily discover that the whole way to store it was changed

  489. edhelas

    allowing PEP for any nodes and JID would be nice

  490. Link Mauve

    jonasw, yes.

  491. jonasw

    Link Mauve, oh, I missed that :(

  492. zinid

    edhelas: but how? by obligating a user's server to keep MIX metadata?

  493. edhelas

    for example a MUC admin can set a vcard node to his MUC

  494. Link Mauve

    edhelas, you can already do that though.

  495. jonasw

    I think that the XEP-0048 should be rolled back and a new XEP should be made at some point, because this was a massive change which shouldn’t happen in draft.

  496. edhelas

    jonasw roled back to private-xml ?

  497. jonasw

    edhelas, yes

  498. edhelas

    hell no

  499. jonasw

    not becaiuse of technical superiority, because it was incredibly wrong procses-wise

  500. edhelas

    jonasw I'd like to manage bookmarks this way https://xmpp.org/extensions/xep-0330.html

  501. jonasw

    I don’t think that private-xml is a good way to store things (but PEP isn’t there yet either, due to lack of deployment), but I don’t think that we can exchange a whole XEP in a minor revision in Draft state!

  502. edhelas

    as I said, if PEP will be correctly implemented it would unlock many possibilities

  503. edhelas

    even if avatars for mucs will not be solved…

  504. edhelas

    Link Mauve what is missing in Prosody to have proper PEP support (persistance and pubsub stuff related) ?

  505. edhelas

    last time I've checked it was getting there

  506. pep.

    edhelas, isn't it in trunk already? just the flag that's not turned on

  507. edhelas

    well yeah

  508. edhelas

    I have some minor issues with configure on create but it was fine overall (thanks again for the work btw)

  509. edhelas

    I have to check again though

  510. pep.

    Maybe I can make that patch, I have never really looked into prosody's sources seriously. Turning on a flag shouldn't be that hard? (not right now though)

  511. Holger

    Different topic: The current MAM revision says the "server add an <stanza-id/> element" to live messages, and "SHOULD include the element as a child of the forwarded message when using Message Carbons". Why only SHOULD? Now the client can't rely on carbons being tagged. Wasn't the whole point of bumping the MAM namespace to make this guarantee?

  512. edhelas

    what about having PEP for muc resources ? when I join a MUC I still advertise to the MUC service my caps, if I have avatar+notify the service can push me the avatars of the resources of the MUC (or vcards, or even tunes, geolocation…)

  513. lovetox

    lol Holger, i definitly depend on that

  514. Holger

    So change this to a MUST and bump the namespace again? :-) mam:3 will be the one you can depend on, this time for real? :-)

  515. lovetox

    madness

  516. edhelas

    and naturally the messages containes <x> muc tags then I can differenciates vcards that are coming from resources

  517. edhelas

    could work no ?

  518. arc

    Morning

  519. arc

    Its meeting time apparently , anyone else here?

  520. dwd

    arc, You're aware of TZ changes? I don't know what Board agreed WRT handling those.

  521. arc

    1600utc this is the time

  522. Guus

    Indeed it is: https://calendar.google.com/calendar/embed?src=64v3vs15qlalgqv0j7r99ikm1c%40group.calendar.google.com

  523. Guus

    (I remember to have meticulously marked that in the calendar when the scheduling timezone thingy was discussed)

  524. arc

    Iirc I copied guus's calendar entry to my own

  525. dwd

    OK. It *is* Council at this time too. Also Martin is off sick, so he shouldn't be attending.

  526. arc

    What tz is council meeting at?

  527. Guus

    dwd: see calendar: you guys then agreed to do that in UTC too

  528. Guus

    Completely not up to me to change that, but please update the calendar if you do :)

  529. moparisthebest

    are nonzas used in other places than CSI or defined someplace?

  530. jonasw

    moparisthebest, there are quite a few nonzas in RFC 6120

  531. jonasw

    (sasl, starttls, stream features, are there more?)

  532. moparisthebest

    doesn't actually mention the term 'nonza' though, but yea

  533. Kev

    I still believe nonza isn't a helpful term :)

  534. MattJ

    moparisthebest, https://xmpp.org/extensions/xep-0360.html

  535. moparisthebest

    ha I like how that comes *after* CSI

  536. jonasw

    moparisthebest, careful, the term nonza is another thing where the community can be split in two halves.

  537. Flow

    With most things you will find someone raising a voice against…

  538. Flow

    And of course having a well defined term for something we didn't have an unambiguously (short-)term before is very helpful

  539. moparisthebest

    1. Nonzas MUST NOT be routed, i.e. they are only exchanged between the two endpoints of an XMPP stream. 2. Nonzas SHOULD NOT have a 'from' or 'to' attribute.

  540. moparisthebest

    hmm, so what if one wanted to introduce a new nonza-like thing but that did get routed with specific routing rules?

  541. jonasw

    that’s a something-za then

  542. moparisthebest

    what would you call that, a rononza ?

  543. jonasw

    ronza?

  544. jonasw

    ;-)

  545. Flow

    moparisthebest, I'm not sure if you could introduce such a thing even if the nonza xep didn't exist

  546. jonasw

    frankly, with what you’re going for, I’d suggest inventing a new term, because neither nonza nor stanza is applicable

  547. jonasw

    (while stanza being strictly defined in RFC 6120 IIRC)

  548. SamWhited

    moparisthebest: that would be against 6120, if I'm not mistaken

  549. jonasw

    SamWhited, does RFC 6120 forbid routed elements wihch are not <iq/>, <message/> or <presence/>?

  550. Flow

    jonasw, not explicitly, but how is that supposed to work with federation?

  551. jonasw

    Flow, moparisthebest plans some negotiation

  552. SamWhited

    Oh, I thought it did explicitly, but maybe not

  553. Kev

    Flow: Same as everything else, with negotiation.

  554. moparisthebest

    yea it'd be opt-in

  555. Flow

    moparisthebest, what if the recipient is offline?

  556. Flow

    (it possibly would help if I knew what excactly you trying to achieve ;))

  557. moparisthebest

    onion xmpp, minimum-metadata xmpp, not sure, naming is one of the hard problems

  558. Flow

    but even then, if you do negotiation anyway you could just use an IQ or an extension element, which you probably should do anyway because those things get SM ack'd

  559. moparisthebest

    don't those have to have a from and to ?

  560. moparisthebest

    I guess maybe you could still hack it in

  561. Flow

    no

  562. moparisthebest

    <deliver to="otherserver.com">(this part is encrypted blob #1)<deliver to="jid@otherserver.com">(this part is encrypted blob #2)<message from="bob@bob.com" to="jid@otherserver.com">etc</message>(/end encrypted blob #2)</deliver>(/end encrypted blob #1)</deliver>

  563. moparisthebest

    that's something like what I'm thinking

  564. moparisthebest

    each server only knows the hops next to it, no single server knows which 2 clients are talking

  565. Flow

    Nice idea

  566. moparisthebest

    hopefully in that way things like carbons/mam/offline/sm etc etc all work the same

  567. dwd

    moparisthebest, That's how Tor works, indeed. More or less.

  568. jonasw

    moparisthebest, wrapping everything in <message/> addressed to the next hop would probably work

  569. moparisthebest

    yea and from the one it can know probably

  570. Flow

    and would give you SM greatness

  571. jonasw

    ack

  572. jonasw

    (pun not intended)

  573. moparisthebest

    <message to="otherserver.com">(this part is encrypted blob #1)<message to="jid@otherserver.com">(this part is encrypted blob #2)<message from="bob@bob.com" to="jid@otherserver.com">etc</message>(/end encrypted blob #2)</message>(/end encrypted blob #1)</message>

  574. dwd

    Where do you put the security label?

  575. moparisthebest

    well you'd have to put those in a new tag inside message of course

  576. moparisthebest

    but that's the general idea

  577. jonasw

    that’ll be some nice overhead right there, base64 on every iteration :)

  578. Flow

    moparisthebest, I think the destination server should see the sender address

  579. moparisthebest

    and I think you get the key for otherserver.com from DNS

  580. moparisthebest

    well that's what you are trying to avoid Flow

  581. Flow

    you can possibly safely disguise the recipient from the senders server, but if the destination server doesn't know the sender address then it becomes easy to drain your mobiles battery

  582. moparisthebest

    would also have an odd side-effect, today you run 1 server for you and all contacts to minimize servers with full metadata

  583. moparisthebest

    this would only give you extra security with different servers

  584. Flow

    But that's a discussion from when the first wild ProtoXEP appears

  585. Flow

    *for

  586. moparisthebest

    Flow, yea and probably the only solution is 'would you like to recieve onion messages from someone at otherserver.com'

  587. Flow

    mayben even not that, because that would also cause your mobile radio to power up

  588. moparisthebest

    your server would only ask you once

  589. moparisthebest

    or, once every X when it already had an active connection or whatever

  590. Flow

    that could work

  591. jonasw

    hm, right, you can’t even filter by roster on the server side

  592. nyco

    board meeting?

  593. jonasw

    except if you put some keys into the roster, too

  594. moparisthebest

    nope no roster or precense or anything here

  595. moparisthebest

    and you'd never want to send other stanzas to each other

  596. jonasw

    moparisthebest, right

  597. jonasw

    I don’t like that

  598. jonasw

    I don’t see how you can have this in a sane manner.

  599. moparisthebest

    it would involve a super extra level of opt-in :)

  600. jonasw

    which doesn’t push all the validation load on the client

  601. moparisthebest

    but also, precense isn't important anymore remember? :)

  602. moparisthebest

    conversations doesn't display it normally, for instance, and with offline/mam etc all working, no one cares

  603. jonasw

    moparisthebest, presence isn’t, but being able to filter messages by sender server-side is.

  604. jonasw

    spam filtering essentially

  605. moparisthebest

    yep you can only do by whole server this way

  606. jonasw

    yes, which is bad

  607. moparisthebest

    not really if it's opt-in

  608. jonasw

    I frankly don’t see this finding a serious user base

  609. Flow

    nyco, doesn't look like board meeting :(

  610. nyco

    indeed

  611. Guus

    Arc was here an hour ago

  612. nyco

    yep

  613. moparisthebest

    jonasw, when has that ever stopped a xep or code :)

  614. arc

    Nyco we're on UTC

  615. nyco

    this changes the hour of availability

  616. dwd

    While daylight savings time is indeed daft, I don't think ignoring it is the solution - Council basically had to move because a UTC-pinned meeting ends up clashing for me (at least, every other week).

  617. nyco

    for me too

  618. nyco

    let's remove timezones already, one planet, one time

  619. SamWhited

    In the interest of making small, incremental changes let's remove DST first, then we can consider timezones.

  620. dwd

    Swatch Internet Time in Beats?

  621. nyco

    meanwhile we still have no board meeting...

  622. nyco

    ok, gotta go ;-)

  623. dwd

    nyco, As noted earlier, Martin's off sick so cannot (or rather should not) attend.

  624. jonasw

    you’re not his mom!kk

  625. dwd

    jonasw, True, but I can get Laura to say the same.

  626. dwd

    (For the avoidance of doubt, Laura is not Martin's mum either)