XSF Discussion - 2021-11-10


  1. emus

    ah ok. when I want to organise I shouls subscriba aswell?

  2. Kev

    emus: No, Mentors/Admins get added automatically.

  3. emus

    ah ok

  4. goffi

    hi jonas’ I see that https://github.com/xsf/xeps/pull/1124 is not in the council agenda, but I think it should be discussed there, shouldn't it?

  5. jonas’

    goffi, the mailing list thread is rather new and we have the policy (or try to...) to first let the list discussion settle

  6. jonas’

    hence I added ~"Needs List Discussion"

  7. jonas’

    I also replied to your thread on list while I was at it :)

  8. goffi

    jonas’: I've replied already to your email ;)

  9. jonas’

    ok, I didn't see that yet :)

  10. goffi

    jonas’: OK make sense, so I guess I'll have to wait, thanks!

  11. mathieui

    goffi: I have not received your message on list duo

  12. goffi

    I haven't received the second one either, maybe there is some greylisting? It's on the archive though: https://mail.jabber.org/pipermail/standards/2021-November/038640.html

  13. mathieui

    Got it now

  14. goffi

    me too

  15. jonas’

    great, it's not just me who gets delayed by the list server for some reason ;)

  16. Zash

    I too received it just now

  17. jonas’

    goffi, I think the issue clearly points at why we cannot retrofit that requirement into XEP-0060 and should instead quite explicitly state that no ordering can be assumed and that '413 should be used when ordering is required.

  18. jonas’

    if '413 currently mandates keeping modification times and stuff, I suggest that it should be modified to make those optional and negotiated, to cover the minimum use case of having items in most-recent-first / least-recent-first order.

  19. jonas’

    but I'll put that into an email, later, too

  20. goffi

    jonas’: yes please, put into an email. I'm very unconfortable with unordered pubsub items, but if we have a consensus on that, I'll update 0413. Let see how the discussion evolves

  21. goffi

    jonas’: also I'm worrying to see little adoption of 0413 before long, resulting in issues in Movim and Libervia use cases (and I'm pretty sure that most if not all pubsub implementation are already ordered, just not all at the same order). I'll put that in an email too.

  22. jonas’

    goffi, yup, let's move this to the list

  23. Holger

    goffi: Is there value in supporting this things for retrieving PubSub items both with and without RSM?

  24. Holger

    I.e. can't we just say "if you want sane behavior, use RSM" (and thereby kinda discourage the PubSub-specific mechanism, and kick it should we ever come up with a PubSub 2.0)?

  25. jonas’

    Holger, RSM is orthogonal to that

  26. jonas’

    RSM would only order relatively to the internal order of the pubsub storage, which is undefinde as per '60

  27. jonas’

    nothing says that it needs to be chronological or whatever

  28. Holger

    jonas’: I'm talking about '413. It currently extends both the' 60 mechanism and RSM.

  29. jonas’

    oh, sorry :)

  30. jonas’

    nvm me then, hopefully

  31. Holger

    I'm unhappy with having a generic mechanism plus specific mechanisms in at least '60 and now also '313.

  32. Holger

    For no good reason, AFAICS (and '313 is even Stable now).

  33. jonas’

    why do 90% of people not understand how RSM works? :(

  34. jonas’

    I'm tired of explaining this.

  35. jonas’

    (and why whatever RSM does (except maybe reversal of ordering) is completely orthogonal to any selection features the underlying protocol may offer)

  36. MattJ sends hugs to jonas’

  37. MattJ

    It's okay

  38. Holger

    Flipping pages is "selecting"?

  39. Zash

    Hack!

  40. Holger

    How's it different from the ordering thing in 0413, which is supposed to be an RSM extension, no?

  41. Holger

    Ah "except reversal of ordering".

  42. MattJ

    Flipping pages is 1) not in RSM 2) not likely to be added to RSM 3) one of the most requested things "missing" from 313 (despite my disagreement)

  43. Holger

    MattJ, I'd never deny any of those 🙂

  44. Holger

    MattJ, the thing I don't get is how that's specific to MAM.

  45. MattJ

    MAM is (was?) the only thing that delivers results the way it does

  46. MattJ

    RSM was designed with things like disco in mind where results are a simple list embedded into a single stanza, and flipping makes zero sense

  47. MattJ

    The problem with MAM is that developers wanted to render/store results as they are received, instead of after the last result set is fully received

  48. Holger

    '413 seems to manage to extend RSM despite those original use cases, no?

  49. MattJ

    and then they additionally wanted the last one first

  50. MattJ

    I can't comment on 413, I've neither fully reviewed it or implemented it

  51. MattJ

    It didn't exist at the time, and nobody proposed it at the time, and those are the root facts :)

  52. Holger

    Whatever, it's too late for MAM. But maybe not too late for '413 🙂

  53. Kev

    To be fair, RSM explicitly has text in it saying that people don't need to request the entire result set and may just want some pages of it based on UI actions.

  54. Kev

    So I don't think the assertion that people doing that was only imagined for MAM is true.

  55. MattJ

    Maybe I missed it, but I didn't see anyone make such assertions

  56. Kev

    Was that not what you meant by "The problem with MAM is that developers wanted to render/store results as they are received, instead of after the last result set is fully received"?

  57. MattJ

    I mean simply that MAM breaks the results (of a single page) into multiple stanzas

  58. MattJ

    and this leads to the apparent desire to control the order of results within a single page

  59. Kev

    Oh, you mean people want to renderer as they're received *within* a result page?

  60. MattJ

    (instead of within the full result set)

  61. Kev

    Oh, you mean people want to render as they're received *within* a result page?

  62. MattJ

    Yes

  63. Kev

    It does simplify the client logic quite a lot if you only have to append/prepend to your chat log, rather than needing to inject in the middle.

  64. Holger

    I dunno maybe jonas’ is right and I'm just too stupid to understand the great picture. But in my book, (1) '313 extends RSM, but makes that extension specific to MAM for no reason obvious to me. And that (2) '413 extends RSM in the same way, just as a generic, reusable solution (yay). And that (3) '413 _also_ extends the PubSub-specific way for no reason obvious to me.

  65. jonas’

    I didn't look at '413 beyond its title recently, so maybe (2) and (3) are right ;)

  66. Holger

    So we end up with at least three different solutions to the exact same problem, which doesn't seem like optimal protocol design to me.

  67. Holger

    (And apart from redundant code, you also end up having to think about how to handle conflicting requests and whatnot.)

  68. Holger

    I understand it's too late to avoid the duplication in '313, so my question simply was whether (2) vs. (3) could be avoided.

  69. Sam

    Hot take: if you're "tired of explaining this" and "90% of people [do not] understand how RSM works" then that's a good indication that the current state of the world is bad and should be changed.

  70. Sam

    Also +1 to everything Holger said, I get lost and confused all over again every time I look at any of this.

  71. jonas’

    Sam, it is so obvious and sensible to me though that I have absolutely no clue what to do about it.

  72. jonas’

    It needs someone who both understands why the current design is sensible *and* why people fail to understand it to make something better, and I don't know if anyone is in that place.

  73. Sam

    I think we need someone who understands *if* the current design is sensible *and* why people fail to understand it, but otherwise yah

  74. Sam

    But I dispute the assumption that because one person understands it it's sensible.

  75. jonas’

    it is very similar to how SQL works, fwiw, which is what I'd base the sensibility on. SQL is good at returning slices of data.

  76. jonas’

    well, not exactly *very good*, but RSM improves in exactly those areas where SQL lacks (by making "LIMIT" not based on indices but on opaque stable identifiers of the records), but yeah.

  77. jonas’

    tired, as I said

  78. Holger

    JFTR I think the question whether 0059 is sensible and generally well-understood is somewhat unrelated to my point. I was talking about duplication of the '413 functionality (Order-By) and jonas’ response was like "you're wrong (except maybe for the order-by thing you're talking about)" 😛

  79. flow

    > why people fail to understand it probably due the lack of good documentation

  80. jonas’

    I have a branch somewhere to improve it in '59, but I failed to find words which weren't already in there.

  81. flow

    every improvement is good, but I was more thinking about examples and rationale provided in e.g. modernxmpp

  82. Kev

    ISTR not a misunderstanding of '59, but rather an ideological disagreement on the nature of the result set being managed.

  83. Holger

    jonas’, MattJ, just BTW, before-id and after-id might be filter criteria rather than paging tools, but I don't get how those are specific to MAM either. RSM is always operating on IDs, and other RSM users might be just as interested in those selection features, no?

  84. jonas’

    it's an implementation detail of MAM that the things used by RSM are the same as the things used by MAM

  85. Holger

    Yes. Seems unrelated to my point 🙂

  86. jonas’

    except for the fun wording in MAM (which, since before/after id makes no sense anymore), RSM could AES-encrypt the IDs and things should continue to work just as if it hadn't

  87. Holger

    Different topic: > servers that understand the 'include-groupchat' field and store groupchat messages in the user's archive must advertise the 'urn:xmpp:mam:2#groupchat-available' feature I'd assume a common configuration might be that servers store MIX but not MUC messages in user archives. In that case they'd probably just advertise #groupchat-available because clients expecting MUC messages won't fall apart if they receive an empty response, I guess?

  88. Holger

    Or to put it differently, what's the point of the #groupchat-available feature? Allowing the client to decide whether it's necessary to query the room archive directly?

  89. jonas’

    Holger, no, for MIX that's covered by a different feature indicating MIX-PAM support I think

  90. Holger

    I see no such feature.

  91. jonas’

    sadface

  92. Kev

    Holger: Roughly speaking, it's to resolve a heisenstate so clients can know whether they *might* receive gc messages or not.

  93. Kev

    So a client can say "I'm happy to receive gc" or "I must never receive gc", and the server feature needs advertising because unless the server supports it the client including such a clause is illegal.

  94. Holger

    Kev, but there's the separate #groupchat-field feature for that.

  95. Kev

    Let me try to remind myself what I did, then.

  96. Kev

    Oh, yes, you're right, this one is the one the server uses to announce that it does store gc messages in the archive.

  97. Holger

    jonas’, ah sorry there's 'urn:xmpp:mix:pam:2#archive', I failed at searching.

  98. Holger

    So for that MIX-only setup, the server would announce 'urn:xmpp:mix:pam:2#archive' but not #groupchat-available? I.e. the latter is really #muc-available?

  99. Kev

    It's possibly of limited use, but the change did remove Council objections.

  100. jonas’

    #muc-or-whatever-else-you-might-do-with-type=groupchat-the-sky-is-the-limit

  101. Holger

    And for MIX there's no need for the client to explicitly ask for groupchat messages?

  102. Kev

    As-written #groupchat-available is any groupchat.

  103. jonas’

    Holger, good question

  104. Kev

    We could update the text for pam#archive so that something like "If MIX messages are the only groupchat messages stored in the archive, #archive may be advertised in stead of #groupchat-available" or somesuch.

  105. Holger

    Ok from reading the specs these things aren't clear to me. I think I mentioned on the list that "MUC vs. MIX" would be good to clarify during LC 😛

  106. Holger

    Yeah that would make sense IMO.

  107. MattJ

    People still think MIX in a user's MAM is a good thing?

  108. Holger

    Not me!

  109. Kev

    I do.

  110. Holger

    But from reading MIX specs I understand that's the recommended setup.

  111. jonas’

    Me neither.

  112. Holger

    I think at the very least, we need good dedup mechanisms, first.

  113. Holger

    Else we'll end up like Matrix, just MUCH worse.

  114. MattJ

    Agreed

  115. jonas’

    maybe gap filling before dedup.

  116. jonas’

    otherwise, where would the dups come from ;)

  117. Holger

    And that, yes. Again "like Matrix but worse".

  118. jonas’

    it shouldn't be too hard in theory, given that we have a single source of truth regarding message order for each room :)

  119. Kev

    You say "Matrix but worse", but Matrix *does* have some nice properties.

  120. MattJ

    We don't disagree :)

  121. Kev

    So, any time we solve things in a different way to Matrix, it's likely to be worse in some ways, and hopefully better in others.

  122. MattJ

    But it's necessarily very complex to get those nice properties, while MIX (+ MIX messages in user MAM) is a half-baked incomplete solution to obtaining those properties in XMPP

  123. Holger

    Kev: Absolutely. We end up with their downsides (worse) while gaining little of their advantages.

  124. Kev

    Should we drop MIX and do MOX (Matrix over XMPP) instead, then? :)

  125. MattJ

    It doesn't remove the centralization of channels on a particular service, and it introduces inconsistent history upon any federation hiccups

  126. Kev

    The latter of those is fairly solvable, I believe. Solving the former would be so nice (and I think you end up with a Matrix model, more or less, when you do). FMUC solves it in the cheapest possible way (or at least close) for when bandwidth is heavily limited and intermittent, but there's a significant tradeoff because of that.

  127. Holger

    Well I guess we don't necessarily have to agree / solve these things immediately as long as we have proper MAM/PAM/MIX feature announcements (and no normative text towards user archives in MIX). With the downside that MIX client devs will have to implement different solutions if they want to support both models.

  128. Wojtek

    quick question about https://xmpp.org/extensions/xep-0280.html#mandatory-support - should we advertise "urn:xmpp:carbons:rules:0" only if the exact set of rules is implemented (i.e. forwarding anything else on top of that set would mean no feature being advertised)?

  129. Kev

    It's intended to be exact (the following bit says the client can assume it's the exact set).

  130. Holger

    How does it help the client to be aware of the rules?

  131. Wojtek

    ok, thanks :-)

  132. Kev

    Holger: I'm not convinced that it does, but this was a compromise reached so we didn't hold up Carbons forever while waiting for the perfect immutable set of rules to be defined.

  133. Holger

    > A Pubsub entity supporting Result Set Management (XEP-0059) [16] SHOULD include a feature of "http://jabber.org/protocol/pubsub#rsm" in its disco#info response, to make it clear that the RSM feature is for PubSub, and not for e.g., Message Archive Management (XEP-0313) [17]. [ https://xmpp.org/extensions/xep-0060.html#subscriber-retrieve-returnsome ] This doesn't work for PEP, right ...

  134. Holger

    goffi, if a server supports e.g. '413 Order-By for PubSub, the server is supposed to announce *two* features, right? I.e.: ``` <feature var='urn:xmpp:order-by:1'/> <feature var='urn:xmpp:order-by:1@http://jabber.org/protocol/pubsub'/> ``` What's the point of announcing the first one?

  135. goffi

    Holger: yes. The first one makes it easy to check who supports order-by in any way.

  136. Holger

    Hmmm.

  137. Holger

    Who would want to check that, and why? 🙂

  138. goffi

    statistics I guess. But feel free to send your concern on standard@, I may remove it from a future version if people doesn't see any point in that.

  139. goffi

    people don't*

  140. Holger

    The idea behind my question was that this *could* be reserved for some generic '59 extension, such as omitting the `by` attribute and just reversing the default order of the result set by stating `<order-by desc='true'/>` or so. But of course this could always be done by bumping the namespace.

  141. Holger

    So, not important.

  142. moparisthebest

    > SQL is good at returning slices of data.

  143. moparisthebest mumbles something about Oracle rownum before wandering off

  144. Kev

    GSoC has been announced, and it's quite different. Rough summary: Varying project lengths, people don't have to be students, but do have to be new (can't have existing contributors).

  145. emus

    But it is not yet on their website, right? https://summerofcode.withgoogle.com/archive/

  146. emus

    ah got it

  147. emus

    https://opensource.googleblog.com/2021/11/expanding-google-summer-of-code-in-2022.html

  148. Kev

    :)

  149. Kev

    These changes all look positive to me.

  150. emus

    😚️

  151. emus

    TL;DR - newcomers of open source that are 18 years and older (can be student, but no need) - support both medium sized projects (~175 hours) and large projects (~350 hours) - mentors and their GSoC Contributors can decide together if they want to extend the deadline for the project up to 22 weeks (I think it has to start from June)

  152. emus

    Kev - I understand I have to work into two directions now: - Apply as organization - Prepare the community CC: flow

  153. Kev

    I've not checked when applications open, I'm afraid, but certainly I think we're now in a position we can prepare the community.

  154. emus

    Did not saw this yet

  155. emus

    Mentoring organizations can begin submitting applications to Google (~2 weeks)

  156. emus

    https://developers.google.com/open-source/gsoc/timeline

  157. emus

    Then I would like to put this to the board agenda to finally decide if we want to attent at GSoC '22 ralphm, dwd, arc, mattj