XSF Discussion - 2019-08-13


  1. Ge0rG

    pep.: what's the rationale for https://github.com/xsf/xeps/pull/805

  2. ralphm

    Ge0rG: the idea was as follows:

  3. ralphm

    The way you discover support for RSM now, you can't tell if it is the pubsub service that supports RSM or Disco Items requests.

  4. Ge0rG

    Yes.

  5. Ge0rG

    Ah, and `pubsub#rsm` is to tell that this is RSM on top of pubsub.

  6. jonasโ€™

    exactly

  7. Ge0rG

    so the other one will be `http://jabber.org/protocol/disco#items#rsm`

  8. Ge0rG

    and then `http://jabber.org/protocol/disco#items#rsm#order_by`?

  9. ralphm

    XEP-0059 explicitly writes: โ€œNote: Even if a responding entity understands the result set management protocol, its support for result set management in the context of any given "using protocol" is OPTIONAL (e.g., an implementation could support it in the context of the 'jabber:iq:search' namespace but not in the context of the 'http://jabber.org/protocol/disco#items' namespace). Currently the only way for a requesting entity to determine if a responding entity supports result set management in the context of a given "using protocol" is to include result set management extensions in its request. If the responding entity does not include result set management extensions in its response, then the requesting entity SHOULD NOT include such extensions in future requests wrapped by the "using protocol" namespace.โ€

  10. Ge0rG

    So that section should be rewritten in terms of adding a `${otherprotocol}#rsm` feature.

  11. ralphm

    So there was a bit of discussion on how to attempt to fix this, and providing an explicit disco feature for RSM-within-pubsub was the easiest I could come up with.

  12. ralphm

    Other suggestions included subfeatures.

  13. Ge0rG

    ralphm: Yes, I was aware of that one, at least ;)

  14. ralphm

    I think that'd be overengineering.

  15. ralphm

    I am also not sure if the current suboptimal way of discovering support by a "using protocol" is much of an issue in practice.

  16. Ge0rG

    Technically, the proposed syntax is also a kind of sub-feature, but without an explicit structure.

  17. Ge0rG

    I have no idea of that.

  18. ralphm

    Ge0rG: indeed, less invasive.

  19. Ge0rG

    There is probably a break-even point on the required bytes somewhere.

  20. Ge0rG

    But the overhead of introducing actual sub-features in the XML schema dwarfs it all

  21. ralphm

    Well, I'd be more concerned in complexity.

  22. Ge0rG

    complexity is part of that overhead.

  23. ralphm

    yes

  24. ralphm

    I meant compared to byte-count.

  25. ralphm

    The PR mentions MAM vs. PubSub. That might be a better contrast.

  26. Zash

    MAM requires RSM tho, so RSM support would be implied

  27. ralphm

    Especially for MIX. Although MAM requires RSM.

  28. Ge0rG

    with MIX you end up having disco#items again.

  29. ralphm

    Right, so having http://jabber.org/protocol/disco#rsm and http://jabber.org/protocol/pubsub#rsm might be good enough here.

  30. Ge0rG

    http://jabber.org/protocol/disco#items#rsm

  31. ralphm

    Well, I'd do my suggestion.

  32. ralphm

    It doesn't make any sense for info anyway.

  33. ralphm

    Also, having # show up twice is not great, IMO.

  34. Zash

    #items+rsm ? ๐Ÿ™‚

  35. ralphm

    In any case it is a bit of an optimization. I think collection nodes are rare in practice, so retrieving items from the root node is as well.

  36. ralphm

    And if you retrieve a node's info you could still see the rsm feature on it, maybe.

  37. ralphm

    Also, if you just try it, then you can cache that support.

  38. ralphm

    (hence my original question of it actually being needed)

  39. Zash

    Hmmmm, I think someone mentioned having the server send caps hash of known local services, components etc at some early point. Did something come of that?

  40. Ge0rG

    I'd also prefer a "+" over a "#"

  41. Ge0rG

    but if this isn't bikeshedding, then nothing is.

  42. Kev

    โž• maybe?

  43. Kev

    :p

  44. Ge0rG

    Kev: there are very very many Emoji where you are coming from.

  45. Zash

    It hints more at the combination than #, but yeah, the bike shed should be painted $(shuf -n 1 < colors.txt)

  46. Guus

    et tu brute

  47. Kev reacts to Ge0rG's message > Kev: there are very very many Emoji where you are coming from. with a ๐Ÿ˜ฎ

  48. Ge0rG

    Kev: I'm not sure why you think you are funny.

  49. Kev

    It's not meant to be funny.

  50. ralphm

    I'm sticking with my suggestions for consistency with existing features for the respective protocols.

  51. Kev

    I'm hoping over time it'll piss everyone off enough that they decide fallback is a bad idea.

  52. ralphm

    Kev: can you send another one?

  53. Ge0rG

    Kev: in that case you should use a realistic fallback

  54. Ge0rG

    Kev: but I suppose you aren't because then people, including you, might realize that it's useful after all.

  55. Zash

    Wait, fallback? What context did I miss?

  56. ralphm

    Fallback for reactions.

  57. Ge0rG

    Kev: I've also had a nice chat with the authors of Reactions last weekend, and they were very sad because of the unclear perspectives for "a way to reference messages". As they understood Sam, he disagrees with attach-to being usable for reactions, because reactions are combining multiple reactions from different people, which attach-to isn't meant to do. References obviously isn't fit for the use case and it will take an unknown time to make it fit, and even if they use attach-to now, having to migrate from attach-to to some other official message-referencing scheme in a timeframe of the next five years doesn't look very attractive compared to implementing the custom reactions reference scheme now and to migrate from it to whatever Council will make The Right Thing Some Day In The Future.

  58. Ge0rG

    I hope that this was an accurate summary.

  59. Kev

    Well, I did offer to write some prose, back when I had a few more cycles, but the offer was ignored AFAICR.

  60. Ge0rG

    Kev: this is a very generic statement. Are you speaking of your message in the Message Reactions thread on standards?

  61. ralphm

    I still have to read the whole thread (vacation), but had assumed it would be related to References.

  62. Ge0rG

    ralphm: it is.

  63. ralphm

    Ge0rG: but doesn't use the References protocol, right?

  64. Ge0rG

    I think that semantically, Reactions are very much attach-to, and Receipts are more-or-less attach-to, and LMC are not attach-to at all.

  65. Ge0rG

    ralphm: because there is no References protocol to... you know... reference messages.

  66. ralphm

    If you say that XEP-0372 needs work, then I agree.

  67. Ge0rG

    ralphm: I think that it's too ambitious to ever become useful.

  68. ralphm

    Other issues are handling these various things in archives and summary counts, as also discussed at the summit.

  69. ralphm

    Ge0rG: if we want to figure out how to do Slack-style reactions, people references, URL references (including retreive and display a card?), edits, as well as receipts, then it makes sense to compare all of them.

  70. Ge0rG

    it would be awesome if the XSF had some kind of "General Direction of the Protocol Development" whitepaper

  71. Ge0rG

    ralphm: but does it make sense to use the same mechanism for all of them?

  72. Ge0rG

    and if it does, who is going to define that mechanism, and when?

  73. Ge0rG

    and what do we do with proto-XEPs that need some kind of referencing mechanism until we got that sorted out?

  74. ralphm

    Well, I am offering to help make a consistent proposal. It would be good to have one or two people join me, similar to how, e.g., pubsub was hashed out eventually.

  75. Zash

    Ge0rG, like a vision statement?

  76. Ge0rG

    Zash: yes!

  77. ralphm

    Ge0rG: to me, you should accept proto XEPs in the usual sense of 'yeah, we need something like this'.

  78. Ge0rG

    Zash: a very high-level one, with things like "Thin clients, smart servers", and a low-level one, with things like "use 0372 if you want to reference one message from another"

  79. ralphm

    There's been some discussion on having an XSF Roadmap. Having this on it would make sense, but I think defining a Roadmap should be a concerted effort between Board and Council.

  80. Zash

    Ge0rG, a high level vision statement and a low level compliance suite?

  81. Ge0rG

    Zash: the compliance suite is for those who implement, not for those who write XEPs

  82. Ge0rG

    a low-level technical design vision for XEP authors

  83. Ge0rG

    ralphm: yes.

  84. ralphm

    Other approaches previously have been setting up SIGs, where the goal was something like "figure out Jingle".

  85. Zash

    https://xmpp.org/extensions/xep-0134.html and https://xmpp.org/extensions/xep-0143.html exist

  86. Ge0rG

    ralphm: I fully agree that we need a concerted effort from Board and Council.

  87. Ge0rG

    Zash: 0134 is kind of the high-level vision statement.

  88. ralphm

    I think those XEPs are great, but they don't give direction on what kind of features we'd like to see developed.

  89. ralphm

    Just when you are, how to go about it.

  90. ralphm

    And has been a bit of a rough spot forever. We've usually acted on stuff being submitted. Council generally doesn't *drive* protocol development.

  91. Zash

    Yeah, a coherent vision for the future would be nice

  92. Zash

    Tricky to do in a understaffed volonteer organization tho

  93. ralphm

    Indeed.

  94. ralphm

    And this is not unique to the XSF.

  95. Zash

    Maybe not quite the thing a standards org does

  96. ralphm

    This is why the IETF has WGs, W3C caused WHATWG, etc.

  97. ralphm

    I see many areas that would need benefit from a concerted effort, probably initially by a small set of people: richer messaging (as above), voice/video calling in dynamic multi-client situations (read mobile clients going to sleep), MIX.

  98. ralphm

    -need

  99. Kev

    re: references, there's two types of references, both of which were meant to be in the References XEP. There's where you make a message reference a thing, and where you reference a message to add additional data. It still kinda makes sense to me to have them together, but it is not a hill for me to die on at all to split the two things out.

  100. Kev

    Other than that the name is misleading, I don't see why 367 couldn't solve the second case generically - reactions, corrections, etc.

  101. Kev

    And one of the things that 367 might do is to attach a Reference, so e.g. a server could annotate a message to say "This message is about This Thing (e.g. a server prefetching image URLs for previewing)"

  102. ralphm

    Nod

  103. ralphm

    That also helps with the goal of composition

  104. Kev

    And archive cleverness.

  105. ralphm

    Yes

  106. ralphm

    Then we should also have mims depend on that instead of references, maybe.

  107. Kev

    mims?

  108. ralphm

    Sims

  109. ralphm

    XEP-0385

  110. Ge0rG

    Kev: one issue with 0367 is that conceptually, we'd have to stuff the payload inside of the attach-to element, not side by side with it. Otherwise, you can't distinguish which reference is which in a corrected reaction

  111. ralphm

    Huh?

  112. Kev

    Ge0rG: I would expect that the thing that's being attached/updated with would be inside the attach-to (although possibly updating 367 to not call it attach-to would make sense).

  113. Kev

    Although for un-reacting, I think pushing an unattach type thing makes much more sense than correcting.

  114. ralphm

    Slightly relatedly, I eventually want more broad edits, not just last message

  115. Kev

    ralphm: Indeed.

  116. Ge0rG

    Kev: if you unattach a message, it becomes stand alone? That doesn't make much sense

  117. Ge0rG

    At least not for reactions

  118. Kev

    No, it negates the reaction.

  119. ralphm

    I think you'd want some generic retraction indicator

  120. Ge0rG

    ralphm: I've always wondered who added that pointless restriction to the XEP ๐Ÿ˜‰

  121. Kev

    <attach-to id><reaction>๐Ÿ’ฏ</></> <unattach id><reaction>๐Ÿ’ฏ</></>

  122. ralphm

    So a message that has unattach is treated as no longer valid at all?

  123. Ge0rG

    Wait, that would be a delta protocol on a sub message base. Can we please avoid that?

  124. Kev

    Ge0rG: We'll have that anyway.

  125. Kev

    ralphm: The message containing <unnattach>'s only purpose would be to undo a previous attach.

  126. Ge0rG

    Kev: but you don't want to undo the attaching, you want to remove the payload.

  127. Kev

    s/unattach/remove-attachment/, then. The stanza name isn't particularly important to me.

  128. Ge0rG

    Which is much like replacing the old payload with a new, empty, one.

  129. Ge0rG

    You could technically use LMC to remove a message by updating it with an empty one.

  130. Kev

    Well, this is attaching things to a stanza, it's not updating the stanza per say. So I think unattaching makes sense, but I don't think arguing semantics of the English is particularly useful.

  131. Ge0rG

    Kev: stanza names end up defining the semantics of the protocol.

  132. Kev

    Ge0rG: Yes, that's what I'd like to avoid.

  133. Kev

    (Using LMC for references)

  134. Ge0rG

    For reactions?

  135. Ge0rG

    Kev [17:33]: > Ge0rG: Yes, that's what I'd like to avoid. The question is, why?

  136. Kev

    Because it requires tracking not just the data, but also the transport of the data, which is just another layer of indirection we're not going to want in the archive.

  137. Kev

    And similarly, it means that on the sender side we have to track how we sent out each datum, rather than just the data that were sent.

  138. Kev

    (And track that across clients)

  139. Ge0rG

    Kev: so you are saying, we should be able to change a reaction to a message without knowing the ID of the previous reaction, if any?

  140. Kev

    Yes.

  141. Ge0rG

    our archive and everything around our transport is designed around individual messages. I'm not sure we want to change _that_

  142. Ge0rG

    Kev: this is what the current reactions XEP already covers.

  143. Ge0rG

    proto-XEP, of course.

  144. Kev

    It's 367 (or whatever we use as the wrapper) that needs it.

  145. Ge0rG

    But how are you going to resolve that with non-attached messages?

  146. Ge0rG

    It's obvious for "This is a change of the reaction to message X" vs. "This is a correction of reaction Y (which was attached to X, but I don't need to say)"

  147. Ge0rG

    What if you want to attach multiple different things to X?

  148. Ge0rG

    How do I know which one you unattach. Are you saying that I need to compare all the payloads and remove the closest match?

  149. Kev

    Well, compare the exact match, yes.

  150. Ge0rG

    How is that a better design than comparing the UUID of the last attachment?

  151. Ge0rG

    What if your unattach removes a payload that I haven't yet seen being added, and the add comes later from MAM?

  152. Kev

    You'd be able to ignore the unattach for anything you're not rendering, and when you get the message from the archive you'd also get the attachment summary.

  153. Ge0rG

    so you are speaking about a forklift protocol upgrade

  154. Ge0rG

    (I'm just trying to understand the rationale here)

  155. Ge0rG

    I mean, our messages and their related things become more and more of an implicit DAG with different kinds of edges.

  156. Ge0rG

    But I can't see how referencing earlier content by its content is going to help.

  157. Ge0rG

    I'm all in for making the DAG relationships all explicit and based on the same foundation.

  158. Ge0rG

    And then we have message threads, which are also a DAG, which is maybe strictly orthogonal ;)

  159. Ge0rG

    Is there even such a thing like orthogonality between DAGs?

  160. Kev

    I'm not sure threads are orthogonal.

  161. Kev

    I was thinking about this yesterday(?), and maybe they're just references.

  162. Ge0rG

    Maybe.

  163. Kev

    Or attachments :)

  164. Ge0rG

    Ever used Microsoft Teams?

  165. Kev

    I think they're definitely not <thread/>, at least.

  166. Kev

    I haven't, similar to Slack/Discord?

  167. Ge0rG

    Kind of, but it's very slow, and it has explicit thread rendering, and the UX for threads isn't actually too bad, because there is an input box under _each_ message, and then what you type is rendered in that place of the thread

  168. Ge0rG

    no idea if threads are also reordered by recentness.

  169. Ge0rG

    Because the other parts of it were so unbearable that I dropped it almost immediately.

  170. Kev

    Different from Slack then, with Slack (last I tried), you kinda promote a message into a thread.

  171. Ge0rG

    The thread UX of Slack is just horrible.

  172. Ge0rG

    Nobody I've met was actually using it.

  173. Ge0rG

    Anyway, back to our DAGs.

  174. Kev

    It's still useful, but you have to suffer through it rather than it supporting you.

  175. MattJ

    Let me introduce you to places that not only use it, but enforce it

  176. MattJ

    (or try to)

  177. Kev

    Please don't.

  178. Ge0rG

    If a thread is a DAG, and all the non-text things that belong to a message (receipts, reactions, etc) are a DAG, does it really make sense to merge those DAGs?

  179. Ge0rG

    in other words: if you fetch a message from MAM, do you want the whole thread, with all reactions? only the parent branch? nothing?

  180. Kev

    I'm not sure that I necessarily buy that threads are necessarily a(n unspecialised) DAG.

  181. Kev

    But that aside, the fetching from MAM+ does make using the same mechanism for threads and other attachments potentially sticky.

  182. Ge0rG

    Kev: how would you model threads?

  183. Ge0rG

    (this whole discussion is probably moot anyway, because nobody wants threads)

  184. Ge0rG

    Kev: "potentially sticky"?

  185. Kev

    Probably a bad idea.

  186. ralphm

    One might want to do a MAM query on a specific thread. Otherwise I'd just threat it as just another attribute.

  187. Ge0rG

    so now we need a new edge attribute "should be included in MAM+ responses"

  188. Ge0rG

    or maybe two: "parent should be included in MAM+ responses" and "child should be included in MAM+ responses"

  189. Zash

    This hurts my brain.

  190. Ge0rG

    because an emoji reaction should obviously be returned when you query for the parent message.

  191. ralphm

    Zash: this stuff is not easy

  192. Ge0rG

    "sacrifice a child to proceed fetching MAM"

  193. Zash

    Infinite whiteboard required

  194. Ge0rG

    Zash: the infinite whiteboard is a DAG

  195. Ge0rG

    unless you draw circles.

  196. Kev

    The reactions aren't really a DAG, though.

  197. ralphm

    Ge0rG: well, at FOSDEM we discussed having summaries (counts) and having reactions as a dimension

  198. Zash

    11-dimentional whiteboard for drawing DAGs

  199. Kev

    As ralphm says.

  200. Zash

    Array of map of array of maps in seven dimentions?

  201. Ge0rG

    ralphm: I vaguely remember that, yeah.

  202. Ge0rG

    Kev: if you allow changing reactions, they become a DAG

  203. Ge0rG

    Kev: you might remember my fierce argumentation for allowing LMC to work on a DAG and not as a star.

  204. ralphm

    Why not have edits as a dimension, too?

  205. Kev

    Sadly, I need to concentrate on work for a bit.

  206. Ge0rG

    ralphm: ideally, edits should be a one-dimensional linked list.

  207. ralphm

    I think a MAM archive will eventually need a few dimensions: edits, reactions, other attachments. And then there are summaries. And something we haven't really touched upon yet today: read/received per group participant.

  208. ralphm

    I.e. if you want to have a feature set that is similar to Slack and Whatsapp.

  209. ralphm

    Kev: maybe we should schedule a time to pick this up?

  210. Kev

    Happy to, but I don't have cycles at this minute.

  211. Kev

    I spent more than I probably should have, already.

  212. ralphm

    Zash: dizzy yet?

  213. Zash wandered away to make food

  214. pep.

    > ralphm> In any case it is a bit of an optimization. I think collection nodes are rare in practice, so retrieving items from the root node is as well. Apparently you're not doing pubsub enough

  215. pep.

    Hah, I read "collecting"

  216. pep.

    > Ge0rG> a very high-level one, with things like "Thin clients, smart servers", and a low-level one, with things like "use 0372 if you want to reference one message from another" Careful about the e2ee triad

  217. ralphm

    pep.: so I can ignore your remark?

  218. pep.

    Kev: the thing with 367 is that what council is trying to turn it into is not what the author intended for it, as I understand it. It'd be great to have a statement from him + change in the XEP, or council saying "fk it, we're taking over" or sth

  219. pep.

    ralphm: depends, do you think you're doing enough pubsub already? :p

  220. ralphm

    Apart from being one of the authors of the spec and having things like ikDisplay? Probably not.

  221. ralphm

    pep.: And as for XEP-0367, I understand that issue, but this can go two ways: the consensus is to change the spec to address various concerns as raised today, or someone introduces another, similar spec that comes closer. The problem is that there are so many things coming together here that something has to give.

  222. ralphm

    Maybe I should write an email with the various topics we touched upon today.

  223. pep.

    Do we not already have 32 avatar xeps and 42 bookmark xeps?

  224. pep.

    With conversion xeps

  225. pep.

    I'm sure one more reference xep wouldn't harm

  226. ralphm

    We also had 3 or 4 pubsub specs, 3 service discovery specs, various session initiation approaches.

  227. pep.

    Sure, we can get rid of those that are no use later on

  228. ralphm

    Eventually rough consensus and running code prevails.

  229. ralphm

    And this particular problem domain is hard.

  230. ralphm

    The individual parts might look easy, and hopefully the protocols are going to be simple and composable.

  231. pep.

    In the meantime I think we should give some slack to the reaction protoXEP

  232. pep.

    That's something that they need and they're not gonna wait that we grow rainbows and references XEPs

  233. ralphm

    As I said, I need to read the entire thread still, but the concept of reactions was discussed at the Summit and if I was on council I'd vote for accepting.

  234. ralphm

    And then mold things properly.

  235. pep.

    Yeah

  236. ralphm

    I'm not sure who 'they' are and how their needs need to be addressed, but yeah, standards bodies are not necessarily fast.

  237. ralphm

    Most importantly because this is volunteer work and/or work priorities might not align.

  238. pep.

    It very much aligns when somebody has an agenda. We should just try to nerdsnipe the right people

  239. ralphm

    I haven't even heard of the authors and the domain of their collective contact addresses (which is a concern the editors should look into), doesn't yield a website.

  240. pep.

    Haven't heard of the authors?

  241. pep.

    Have you used dino?

  242. ralphm

    No

  243. pep.

    Here you go

  244. ralphm

    It is entirely possible I missed something.

  245. ralphm

    But how should I know that these people are associated with that project?

  246. ralphm

    What is larma.de, for example? I did try to find out, you know?

  247. pep.

    Dunno, I meet them on a regular basis (conferences)

  248. ralphm

    I should attend one, indeed, and meet them.

  249. larma

    Next years summit?

  250. ralphm

    At least. Did you sign up already?

  251. larma

    Not yet, but plan to (have to check with work stuff first)

  252. ralphm

    But maybe earlier. .nl isn't that far from .de.

  253. larma

    I still have CCCamp, Stockholm Sprint and C3 on my list of conferences for this year ๐Ÿ™‚

  254. ralphm

    Gotta sleep now, but will attempt to catch up tomorrow.

  255. Daniel

    i can imagine us doing another sprint in between sweden and ccc though

  256. Daniel

    maybe around november like last year

  257. ralphm

    Maybe Guus, intosi, and I should set something up in the Eindhoven region.