XSF Discussion - 2019-08-02


  1. xnamed

    Hi, I am new here, I would like to suggest an idea, I'm thinking about collaborative editor in XMPP for some reasons We have some stuff already in XMPP could use for it:   • XHTML-IM ( https://xmpp.org/extensions/xep-0071.html )   • XMPP E2E Security ( https://wiki.xmpp.org/web/XMPP_E2E_Security )   • Publish-Subscribe ( https://xmpp.org/extensions/xep-0060.html )   • Bookmarks ( https://xmpp.org/extensions/xep-0048.html )   • Multi-User Chat ( https://xmpp.org/extensions/xep-0045.html )   • and maybe other XEPs I didn't learned yet!
 What do we need:   • Shows cursors and selections of remote users   • Show the others having joined the session and something like Chat State Notifications ( https://xmpp.org/extensions/xep-0085.html ) and Chat Markers ( https://xmpp.org/extensions/xep-0333.html ) XEPs   • Syntax highlighting   • That's all I have for now

Maybe the idea is old or something I don't know, I'm just telling my thoughts!

  2. Zash

    There's https://xmpp.org/extensions/xep-0284.html

  3. xnamed

    well, looks good, I will try with it

  4. lovetox

    pep., Ge0rG does that proposal for adding a feature under a feature break entity caps?

  5. Zash

    Yup. And probably the schema to.

  6. Ge0rG

    I still think it's less wrong than putting all combination os sub-features into individual feature var strings.

  7. jonas’

    except that it breaks all the things

  8. Ge0rG

    create a new feature tag that's recursive

  9. Zash

    And caps3

  10. Ge0rG

    caps3.11

  11. Ge0rG

    caps for workgroups

  12. jonas’

    '390 is still experimental

  13. jonas’

    so that’s the least of worries

  14. pep.

    Is ecaps2 implemented at all in clients? I know it's in xmpp-parsers, and I know there's a prosody module to convert to escaps2, but that's about it?

  15. lovetox

    could it not be named, "pubsub:order-by" ?

  16. pep.

    lovetox, that's the second proposal

  17. pep.

    But it's ugly

  18. lovetox

    why though? it breaks nothing

  19. jonas’

    pep., aioxmpp has an implementation, obviously

  20. lovetox

    and nobody looks everyday at xml streams, so i dont really care if its ugly

  21. pep.

    lovetox, yeah as I said in the mail

  22. pep.

    I was mostly curious if there were prettier alternatives

  23. pep.

    Or smarter ones

  24. pep.

    jonas’, right

  25. jonas’

    XEP-0128 forms!!kk

  26. jonas’

    actually...

  27. lovetox

    yeah that was my next bet

  28. pep.

    actually..

  29. lovetox

    you have to disco info the pubsub service itself anyway

  30. lovetox

    so it can announce all features inside its extended form

  31. lovetox

    like httpupload does

  32. lovetox

    with max-size etc

  33. pep.

    or pubsub nodes, or .. muc? :)

  34. lovetox

    its still bit of a hack

  35. ralphm

    Well, forms are for config. I think the way we would have done this is per-subprotocol features. It is a bit untortunate. Nested features would not work correctly with CAPS.

  36. pep.

    Then you can do disco#items on muc with order-by and rsm, imagine the possibilities!!1!

  37. jonas’

    nested features would break any schema-validating parser

  38. jonas’

    although I’d like to get written down somewhere that unknown elements and attributes MUST be ignored, unless they carry an attribute {urn:xmpp}critical="true" :>

  39. jonas’

    in which case you have to run in circles screaming full of terror

  40. ralphm

    One other possibility is querying a node that is the 'main' subprotocol namespace and adding the rsm feature on that

  41. jonas’

    ralphm, but the roundtrips

  42. Zash

    Oh right, disco and nodes.

  43. jonas’

    (and it doesn’t work with caps either)

  44. ralphm

    I didn't say is was pretty

  45. lovetox

    i would just add a field var=feature to the extended form

  46. lovetox

    and list all features there

  47. lovetox

    prettier in my opinion

  48. jonas’

    ralphm, also, what if I create a pubsub node named like a feature (very common in PEP)

  49. Zash

    jonas’, hush

  50. ralphm

    Yeah

  51. Ge0rG

    jonas’: obviously, this must be forbidden by the protocol!

  52. Zash

    Wasn't there some overlaps like this already?

  53. ralphm

    I think for now just having a new pubsub feature and a new disco feature suffices

  54. ralphm

    If there only a handful of combinations, we don't have to overengineer

  55. pep.

    Should we also update pubsub to create pubsub#with-rsm btw? To fix the current thing that's broken

  56. pep.

    "broken"

  57. ralphm

    Yes

  58. ralphm

    That was my suggestion

  59. lovetox

    yeah pubsub has already endless feautres, just add pubsub#rsm and be done with

  60. ralphm

    Backwards compatible, too

  61. ralphm

    Old clients will see the rsm feature and will try

  62. pep.

    I'm curious though who mandates to add RSM in disco

  63. pep.

    RSM itself?

  64. ralphm

    Not really

  65. ralphm

    Rsm for disco isn't defined

  66. pep.

    Not that

  67. ralphm

    Or at least not explicitly

  68. Zash

    disco#items?

  69. pep.

    ralphm, you misunderstood

  70. pep.

    What says currently, "if you do rsm with pubsub, add rsm in disco#info"

  71. pep.

    Because I'd want to remove that when introducing pubsub#rsm

  72. ralphm

    Nothing?

  73. ralphm

    Maybe instead, if you want RSM on disco items, we need to expose a feature, and update XEP-0030

  74. pep.

    update XEP-0030 !!1! /me runs wavings arms in the air

  75. pep.

    Am I going to get punished for daring to update a Final XEP?

  76. ralphm

    Or a new XEP

  77. pep.

    :(

  78. Zash

    pep., the elders will come down from the temple and whack ye upon thy fingers

  79. ralphm

    Zash: like who?

  80. Zash

    Dunno

  81. pep.

    https://xmpp.org/extensions/xep-0059.html#support how can I, without breaking it, say "don't do it anymore" :)

  82. pep.

    heh, there are mentions already of the issue in this paragraph

  83. pep.

    Maybe that could have been sorted out at this time

  84. xnamed

    few years ago jabber.ru was supporting XEP MUC-Filter which is not exist on xmpp.org and it was working very well with Isida-bot ( http://isida.dsy.name/wiki/en:Index ) and added later to other bots I have unofficial mod_muc with muc-filter support, working on ejabberd-2.1.13 and previous versions the module was not published by Ejabberd, I think it was monopolized by jabber.ru, I know many who wanted to get it but when they asked about it, the answers is like something that did not exist There is short description about the XEP here ( https://github.com/xnamed/isida4/wiki/muc-filter#principle-of-operation ) A list of bot filters that it can do here ( https://github.com/xnamed/isida4/wiki/muc-filter#configuring-the-bot ) If anyone is interested about that, if the description not enough I will send the module if necessary, I can explain it if you don't know erlang and I think it could be implemented the same way on Prosody One of the good things about this feature, users can choose filters in each room, no need to write filters for the server for everything For some time I thought there is no need for it, but there are still some kids, It was very annoying to me when one of my friends room got spammed, more than 1000 messages, then I get them all on my other devices because of XEP MAM :)

  85. Guus

    xnamed: I'd be happy to add that to Openfire

  86. xnamed

    I'm happy to hear it Guus

  87. jonas’

    I didn’t understand the documentation

  88. Guus

    jonas’ it's not overly clear, but the generic principle appears to be: don't broadcast stanzas that are sent to a MUC. Instead, forward it to a JID. Only if that JID gives an 'ok', broadcast the original stanza.

  89. jonas’

    ah. hm.

  90. Kev

    So that's very similar to what we discussed at the Summit, about having an external spam-checker service that would give yay/nay verdicts on stanzas.

  91. Kev

    If I'm understanding correctly.

  92. Zash

    Who was it that made a thing for that?

  93. Zash

    Or, what it called?

  94. Zash

    Providence?

  95. Zash

    Seems to have dissapeared into a black hole.

  96. pep.

    The thing valerian did? (the jappix author)

  97. Zash

    Yes

  98. pep.

    https://journal.valeriansaliou.name/announcing-providence-a-spam-filter-for-xmpp/ it's disappeared though :(

  99. xnamed

    at least it can be choice for who like to use it, and it is not only about spamming, censoring, option for each participant to block private messages with someone and other things

  100. Kev

    Oh, it's per-occupant? I missed that bit. That's fun.

  101. jonas’

    I imagine pain down that road with MUC MAM

  102. xnamed

    yes

  103. Kev

    jonas’: Yes.

  104. jonas’

    a world of pain

  105. pep.

    https://xmpp.org/extensions/xep-0004.html#final-changes we don't seem to add this kind of changelogs anymore do we?

  106. jonas’

    presumably you would find those in the normal version log

  107. pep.

    So I've got a diff for pubsub/rsm SHOULD-ing a new feature in disco#info of the entity. Now I'm looking at RSM and Order-by and I want to remove the "Determining Support" part, because it doesn't make sense on its own, but that would mean removing SHOULDs or MUSTs (or MUST NOT)

  108. jonas’

    pep., propose the diff

  109. jonas’

    council will figure out a way

  110. pep.

    k

  111. jonas’

    IMO it should be OK to remove that (IIRC) because the information is useless to a peer anyways

  112. pep.

    Indeed

  113. pep.

    Any other XEPs one can think of that should also be amended?

  114. pep.

    Generic stuff? 0004?

  115. jonas’

    '4 has nothing to do with RSM, does it?

  116. pep.

    it doesn't, but it's generic like rsm and doesn't mean much as is, does it?

  117. jonas’

    it does

  118. jonas’

    people do send forms directly via messages

  119. pep.

    Though, TIL <message> can contain <x xmlns="jabber:x:data"/>. Not clue what that means

  120. jonas’

    and clients which support displaying and handling that would... exactly

  121. jonas’

    ... expose that feature

  122. pep.

    I was also reminded of jabber:x:search, that can use forms, rsm, etc. So we'd need to add new disco features on every single spec that can use any of these :/

  123. jonas’

    yes

  124. jonas’

    except if the spec requires it frmo the start

  125. pep.

    yeah

  126. jonas’

    like muclumbus-search

  127. pep.

    muclumbus-search will be superseeded by disco#items+rsm+order-by at some point :P

  128. pep.

    jonas’, or like MAM

  129. pep.

    Though everybody includes it..

  130. jonas’

    pep., I miss +filter-by-name/address/description in that enumeration

  131. Link Mauve

    xnamed, I once wrote https://hg.linkmauve.fr/eldonilo/barbecue/ as an implementation of XEP-0284 for the web, I don’t maintain it anymore and the library it’s build upon is dead too, but you may find some inspiration in there. It’s targetting wysiwyg more than plain text, and doesn’t have syntax highlighting or cursors/selections, but that could be added to 0284.

  132. pep.

    order-by and rsm are sufficient. You "just" need to add a "name"/"address"/"description" filter?

  133. pep.

    the @by

  134. jonas’

    pep., and then a thing which returns all the info at once instead of having to disco#info each individual result returned by disco#items

  135. jonas’

    pep., disco#items does not support filtering so far

  136. pep.

    Sure, what I just said

  137. pep.

    We were looking at adding order-by for disco#items with edhelas

  138. jonas’

    seems reasonable

  139. pep.

    Maybe you want a filter-by as well, but order-by + rsm should be enough for now? (put relevant items first, ignore the rest)

  140. jonas’

    and once you start with filter-by, you’ll want to write down how that filtering works, which will be its own mess. there’s a reason it’s underspecified in muclumbus at the moment

  141. jonas’

    (it boils down to "whatever postgres does")

  142. pep.

    yeah..

  143. Zash

    SQL over XMPP?

  144. pep.

    Specifying order-by on disco#items of a MUC service is already fun :(

  145. pep.

    There's only 'creation' and 'modification' filters atm

  146. pep.

    "What does that even mean on MUC"

  147. jonas’

    pep., nothing useful

  148. Zash

    What does it mean in PubSub?

  149. pep.

    Zash, that's defined in the XEP

  150. edhelas

    well to me 'creation' should be enough for MUC disco#items

  151. edhelas

    Zash please add support for https://xmpp.org/extensions/xep-0043.html

  152. Zash

    How about no

  153. MattJ

    You're holding back XMPP from world domination

  154. Guus

    Yes it's all your fault.

  155. edhelas

    Prosody is always holding back XMPP, look at ejabberd, they supports 0043 for years

  156. xnamed

    Link Mauve, I will see

  157. Guus

    Does SQL-Injection count, btw?

  158. xnamed just added the module on Github, mod_muc ( https://github.com/xnamed/mod_muc )
Guus, Kev,

  159. Zash

    So in conclusion, I killed XMPP. Finally the world is ready for my real evil plan, ZMPP!

  160. Guus

    (how do you pronounce that?)

  161. Zash

    No talk, only chat!

  162. jonas’

    > Retracted edhelas, are you serious?

  163. edhelas

    It's 100% real news, I heard it on FoxNews

  164. xnamed

    Zash, what about XNPP?

  165. xnamed

    Link Mauve, I found a collaborative editor project on github written in C++ so I think it possible to get some information from it, but we will not implement XEP-0284 on the client as long as it's deferred

  166. Link Mauve

    xnamed, it won’t go back to experimental without feedback from implementors.

  167. xnamed

    ok

  168. Link Mauve

    “09:31:46 pep.> Am I going to get punished for daring to update a Final XEP?”, XEP-0030 already got updated in a very incompatible way in the weirdly-named 2.5rc3 version.

  169. Link Mauve

    A valid parser from rc2 and before could choke on disco#info produced by rc3.

  170. Link Mauve

    The one in xmpp-parsers had to be updated to remove the explicit ordering restriction.

  171. pep.

    So maybe we could update disco and caps at the same time and break the world :)

  172. Link Mauve

    Please don’t.

  173. Link Mauve

    xnamed, which project is that, btw?

  174. xnamed

    Link Mauve, https://github.com/gobby/gobby

  175. Link Mauve

    Ah, I know this one, but it’s using a totally different protocol atm.

  176. xnamed

    yes I know

  177. xnamed

    but same idea

  178. xnamed

    who are the the XEP-0284: Shared XML Editing authors here?   • Joonas Govenius    • Peter Saint-Andre    • Tom Pusateri
 so we could discuss it with them first

  179. pep.

    xnamed, peter is on this chan often enough. I suggest you ask your questions on the standards mailing list though

  180. xnamed

    thanks pep.

  181. jonas’

    does anyone know what `tc` is, as an XMPP server-side software/component?

  182. peter

    I always kind of liked Shared XML Editing but I suppose it was too complex.

  183. Link Mauve

    I quite liked implementing it.

  184. Link Mauve

    Damn, that was in 2012.

  185. xnamed

    we will not focus on it immediately, it was an idea I did not think the XEP was existed

  186. xnamed

    What about OMEMO support in groupchat as gajim-plugin ( https://dev.gajim.org/gajim/gajim-plugins/wikis/omemogajimplugin#groupchat ) and Conversations?
Groupchat with OMEMO encryption works only in rooms that are:   • non-anonymous   • members-only   • works only with contacts that you have in your roster

  187. sonny

    Link Mauve, remember https://github.com/fabi1cazenave/sxedit 😀 ?

  188. pep.

    https://github.com/fabi1cazenave/sxedit/commit/a99facfa291f22d32ae893a4ca505a7a7027270a "Fait tomber en marche.", Some part of France is currently at it :-°

  189. sonny

    crap, where is my right to be forgotten when I need it

  190. pep.

    haha

  191. sonny

    IIRC SXE/sxedit worked really well and editing nodes instead of characters made collaboration much easier as we would "lock" the nodes that were being edited

  192. Link Mauve

    sonny, yup. ^^

  193. pep.

    https://xmpp.org/extensions/xep-0059.html#forwards, I'm not sure I understand the following: Responding entity support for paging through a result set is optional. If it does support paging (not just Limiting the Number of Items), then in each page it returns, the responding entity MUST include <first/> and <last/> elements that specify the unique ID (UID) for the first and last items in the page. If there is only one item in the page, then the first and last UIDs MUST be the same. If there are no items in the page, then the <first/> and <last/> elements MUST NOT be included.

  194. pep.

    "paging" only means a subset of RSM right?

  195. pep.

    hmm, I guess I'll come back to that once I've read <first/> and <last/>

  196. Ge0rG

    I wonder what good RSM is for if you take away pagination.

  197. pep.

    I'm also curious

  198. pep.

    Maybe you can just get the first N items and be happy with that

  199. Ge0rG

    Like in matrix

  200. Zash

    pep.: wat

  201. Zash

    Oh, I thought I saw a "NOT" in "the first and last UIDs MUST be the same"

  202. pep.

    Also I am definitely not sure how to picture this: No items will be omitted from pages not yet sent (even if, after earlier pages were sent, some of the items they contained were removed from the set).

  203. pep.

    2.2, the paging features

  204. pep.

    Does that mean when the server gets a request, it should store a reference of all items contained in the set, and page through that and not what's actually happening?

  205. pep.

    It can't store items directly because of the first condition: "Each page of the result set is up-to-date at the time it is sent (not just at the time the first page was sent)."

  206. Ge0rG

    Maybe we need to define a message DAG that can be linearly paged.

  207. Zash

    Linked list?

  208. pep.

    DAG? What would you branch for?

  209. pep.

    "The responding entity maintains no state" lol, that's a feature of that paging protocol

  210. pep.

    Doesn't that directly contradict the second rule

  211. pep.

    Maybe that's why these guarantees are MAY, so that responding entities can pick what they like in there

  212. xnamed

    I added explanation ( https://github.com/xnamed/mod_muc/blob/master/README.md ) about muc-filter very close to the implementation in the ejabberd module I hope that my English is enough or at least to make it easier to you, I had no other way to explain it

  213. Zash

    pep.: It would likely need to be taken in context of whatever it's used with, eg MAM

  214. pep.

    Ok I understand now my first question on rsm