Modern XMPP project discussion - 2020-09-16


  1. Strypey

    Hi all 😃

  2. vanitasvitae

    Strypey: hi!

  3. MattJ

    Howdy ;)

  4. Strypey

    I'm a longtime jabber user, and I recently started helping MattJ with community management stuff for Snikket.

  5. vanitasvitae

    nice!

  6. emus

    Strypey: 👍

  7. eyome

    Hi all!

  8. eyome

    Whatns the goal of "Modern xmpp project"?

  9. edhelas

    to make XMPP modern again

  10. eyome

    What's the goal of "Modern xmpp project"?

  11. pep.

    eyome, hey, have you had a look at https://docs.modernxmpp.org/ yet ?

  12. pep.

    eyome, hey, have you had a look at https://docs.modernxmpp.org/ yet?

  13. eyome

    Thank you.

  14. wurstsalat

    Link Mauve, I added some styling (re DOAP) https://github.com/pulkomandy/xmpp-doap/pull/7 What’s holding back your other PR regarding stylesheets and samples?

  15. Link Mauve

    Nice!

  16. Link Mauve

    wurstsalat, which other PR?

  17. wurstsalat

    #6

  18. wurstsalat

    https://github.com/pulkomandy/xmpp-doap/pull/6

  19. Link Mauve

    Hmm, mostly that samples should now be part of https://github.com/xsf/xmpp.org

  20. wurstsalat

    I see. But can we update the samples (your PR) once more, so they (and the renderings) are compatible with other DOAP files? then everyone could check how it would look for their project until we found a way to bring DOAP files to the xmpp.org repo

  21. Link Mauve

    Sure.

  22. Link Mauve

    wurstsalat, DOAP files are already linked in the xmpp.org repository.

  23. vanitasvitae

    where can one see the doap stuff in action on xmpp.org?

  24. Link Mauve

    See for instance: https://github.com/xsf/xmpp.org/blob/master/data/clients.json#L205

  25. Link Mauve

    Aside from that, it isn’t used on the website yet.

  26. vanitasvitae

    ah

  27. vanitasvitae

    thanks

  28. Link Mauve

    I fought Pelican and it won.

  29. vanitasvitae

    😀

  30. vanitasvitae

    stupid bird!

  31. Link Mauve

    I recently started a Rust parser for those JSON files and for DOAP files.

  32. Link Mauve

    For instance I can query which projets implement a given XEP.

  33. Link Mauve

    Or query the name and description and XEPs implemented of a project.

  34. wurstsalat

    That sounds handy

  35. Link Mauve

    I think so too.

  36. Link Mauve

    I don’t know what to do from here, I could expose an HTTP API for instance.

  37. wurstsalat

    that would make it usable for multiple projects, probably the most flexible approach

  38. vanitasvitae

    Some api where you can quickly query "which version of XEP-XXXX does client Y claim to support" would be nice indeed

  39. Link Mauve

    Ok, I’ll try to do that in the next few days.

  40. wurstsalat

    I’d like to help with implementing that (and other stuff) at xmpp.org

  41. edhelas

    I had a look at https://docs.modernxmpp.org/client/groupchat/

  42. edhelas

    and I was wondering what was the exact rule to say what is a channel and what is a group chat

  43. edhelas

    by talking with pep. it seems that it's if (member_only + jid_revealed + publicly_listed) groupchat else channel

  44. edhelas

    because by looking at my bookmarks I do have a few rooms that are sitting between the two definitions

  45. pep.

    I'm trying to find out if anyone cares about having MUC-PMs set to off to know if it's a private chat :x

  46. Zash

    Might members-only be the strongest indicator?

  47. edhelas

    if (member_only + jid_revealed + !publicly_listed) groupchat else channel

  48. edhelas

    sorry

  49. pep.

    Zash, member-only + public?

  50. pep.

    I'd still consider that a public chat. For example as a temporary measure against spam

  51. MattJ

    And a public chat may choose to reveal JIDs

  52. pep.

    Conversations has a isPrivateAndNonAnonymousMuc flag

  53. MattJ

    E.g. for transparency/accountability purposes

  54. pep.

    dino also had separate UI for this

  55. pep. reading moar code

  56. MattJ

    If there seems to be consensus let's document it

  57. pep.

    https://github.com/iNPUTmice/Conversations/blob/master/src/main/java/eu/siacs/conversations/entities/Conversation.java#L677

  58. edhelas

    i'm wondering what is the rule for Dino actually

  59. pep.

    And for dino.. https://github.com/dino/dino/blob/master/main/src/ui/avatar_image.vala#L87 ?

  60. Zash

    https://github.com/iNPUTmice/Conversations/blob/afffe0186865918f8ef637c0cdf2db92e45b4725/src/main/java/eu/siacs/conversations/entities/MucOptions.java#L206-L207

  61. pep.

    Ah there's a is_private_room function

  62. pep.

    //the term `private room` is a short hand for members-only+non-anonymous rooms

  63. pep.

    https://github.com/dino/dino/blob/master/libdino/src/service/muc_manager.vala#L189

  64. Zash

    neither seem to care about public listing

  65. lovetox

    members only + non-anonymous

  66. lovetox

    publicly listed should not be taken into consideration in my opinion

  67. pep.

    lovetox, why not?

  68. Zash

    you probably wanna set that when creating tho

  69. pep.

    yeah

  70. lovetox

    private does not mean secret

  71. lovetox

    it means only joinable by a defined list of people

  72. pep.

    That's what Conversations and poezio (!! the impromptu command) default to

  73. Zash

    What do you call a memberso-only semi-anonymous chat then?

  74. pep.

    https://lab.louiz.org/poezio/poezio/-/blob/master/poezio/core/core.py#L905 https://github.com/iNPUTmice/Conversations/blob/fa752b596d7fba41a0b62011cd91a11af84b1cd6/src/main/java/eu/siacs/conversations/generator/IqGenerator.java#L519

  75. edhelas

    (it seems that I just started a nice discussion there :D)

  76. Zash

    non-members-only + non-anon = "transparent" channel?

  77. pep.

    :D

  78. lovetox

    there is really no need to name all combinations

  79. pep.

    Also this is "just" a definition that modernxmpp is setting, it doesn't have to mean anything outside modernxmpp

  80. Zash

    gotta have something to do

  81. lovetox

    private room means, user creates a room for his friends, or some people

  82. lovetox

    and these rooms dont need to be anonymous

  83. lovetox

    so members only + non-anon is this default for these private conversations

  84. lovetox

    and everything else, is a channel

  85. pep.

    What would "Immutable for groupchats" mean exactly?

  86. pep.

    https://docs.modernxmpp.org/client/groupchat/

  87. pep.

    If in the end we're only matching on two of these

  88. edhelas

    if we agree on that, let's set that in stone :p

  89. pep.

    I'm drafting something, but I'm curious about the "immutable" thing. I'd rather change places where it's set and use that as a sign for groupchats

  90. MattJ

    pep.: it helps to look at the question opposite to how this conversation started

  91. MattJ

    What ultimately matters is what the user intends the chat to be

  92. pep.

    I might want to nit on the terminology then. Something like "default", and add a description that says these options SHOULD be immutable in a configuration dialog

  93. MattJ

    The idea is that the client offers to create one or the other, and the "immutable" ones are simply those that shouldn't be configurable by the user for those chats

  94. MattJ

    This text doesn't necessarily assume there *is* a way to tell the difference post-creation

  95. pep.

    Ok let me try to draft something :x

  96. MattJ

    Obviously in the real world we don't (currently?) have a flag to record the user intent

  97. MattJ

    Hence clients using this hack instead

  98. MattJ

    But I think that is one of the things I would like to fix in MUC

  99. pep.

    Will we ever? "So.. ok I will create you a room but first why do you want one? Do you: - Want to chat publicly? - Want to chat publicly and allow many to join? - Want to chat publicly and allow encryption? - Want to chat in private but allow others to see?" - .."

  100. pep.

    I don't want this :P

  101. Zash

    Fix how?

  102. Zash

    Record that boolean?

  103. pep.

    Or maybe the "I found a name for each combination" version: "Do you want: - A groupchat - A transparent room - A secret room -A channel"

  104. pep.

    muc#modernxmpp_private: bool

  105. Zash

    {xmpp:modernxmpp.org}muc#preset = "channel" | "groupchat" | <custom>

  106. pep.

    lgtm

  107. lovetox

    im not sure you solve a actual problem

  108. lovetox

    the problem was/is the default config when we create a room

  109. lovetox

    and not afterwards to know if its a groupchat or channel

  110. pep.

    well there's both

  111. pep.

    You need to know how to detect it from other clients

  112. Zash

    So if the server locks the relevant settings while muc#preset ≠ custom

  113. lovetox

    why would i need to know pep. ?

  114. lovetox

    i use non-anonymous and members only, only for the notification setting

  115. pep.

    because say I'll display a different type of avatar (like dino and conversations do), I'll set a different notification setting, I'll change terminology, or I'll prevent some options from being overwritten

  116. pep.

    etc.

  117. lovetox

    yeah then you do this based on the attributes we already discussed

  118. lovetox

    but there is no need to make now names and rules for all 3000 configuration combinations

  119. pep.

    That's what I'm saying. You do need to be able to discover that this is a "groupchat"

  120. pep.

    no indeed

  121. pep.

    Well

  122. pep.

    That's not what modernxmpp is trying to do I think?

  123. pep.

    Somebody might want to and I'd be fine with that

  124. pep.

    I might not use it and that's it

  125. pep.

    Just to say that there's is no one-size-fits-all. "42" is a myth (sorry)

  126. pep.

    #BreakingDreams

  127. pep.

    MattJ, "I think that is one of the things I would like to fix in MUC" does this really needs fixing in MUC?

  128. pep.

    Can it not just be on modernxmpp?

  129. pep.

    It would still be standard, public, in its own NS (just like Zash did), etc. so everybody wanting to use the modernxmpp definition would match on it

  130. MattJ/web

    > MattJ, "I think that is one of the things I would like to fix in MUC" does this really needs fixing in MUC? Yes. Creating a room today is stupidly difficult for clients. Multiple round-trips and various hacks.

  131. MattJ/web

    Yet we've essentially settled on just two "profiles" for MUC rooms

  132. pep.

    Ah you want a <presence to="foo@bar"><create-group-chat xmlns="xmpp:modernxmpp.org"/></presence> ?

  133. MattJ/web

    Yes and no. I was thinking <iq> 🙂

  134. pep.

    Right

  135. MattJ/web

    But basically yes, make creating a room explicit instead of implicit, and a proper iq set/result pair to indicate success

  136. MattJ/web

    and fix the configuration chaos at the same time

  137. pep.

    I'm happy with profiles, I don't know if that has to be in 0045 though

  138. pep.

    You'd just be enforcing more UX in the XEP

  139. Zash

    iq.set"room@muc.host"/{somethingmuc}create/{jabber❌data}form

  140. MattJ/web

    No, I don't know if it has to be in XEP-0045 either. I think I'd rather it wasn't (isn't it Final anyway?)

  141. MattJ/web

    No, still Draft

  142. MattJ/web

    I remember stpeter trying to drive it to Final as one of his last achievements before retiring as Editor, and here we are 🙂

  143. pep.

    I don't personally care about Final or else, if it has to be changed.. And creating a new XEP that says "this extends it" is exactly the same to me

  144. MattJ/web

    Sure

  145. pep.

    But I think this belongs on modernxmpp.org rather

  146. Zash

    Why isn't https://xmpp.org/extensions/xep-0307.html the creation thing?

  147. pep.

    hmm I'm still blocking on "Immutable" :/

  148. MattJ/web

    pretend it says "fixed" or "required"?

  149. MattJ

    Yes

  150. MattJ

    Creating a room is stupidly hard for clients today

  151. pep.

    "fixed" or "required" doesn't help me much here

  152. pep.

    With the document as it is, are we trying to say that's what we would enforce in a modernxmpp-only world?

  153. pep.

    And so publicly-listed non-anon members-only wouldn't exist?

  154. pep.

    When lovetox was arguing for the opposite just above

  155. Zash

    I'd say if you want something else, hide it in some "Advanced" section

  156. pep.

    Zash, so it's not immutable?

  157. pep.

    Can that be changed?

  158. pep.

    I'd be happier with "default", but maybe I'm misunderstanding the original meaning

  159. Zash

    Maybe just some text text saying that for a private chat, the settings should normally be hidden away

  160. MattJ

    If you say it's just a "default" then you're really opening up the door to confusion about what is/isn't a channel

  161. MattJ

    The point is that a private chat would always want those settings to be the same

  162. pep.

    So clients should also match on all of these 4 options?

  163. MattJ

    and I'm not even sure if it should be possible to override, at risk of making private chats accidentally public, for example

  164. pep.

    ("because there's no reason these get changed")

  165. pep.

    MattJ, I agree that it doesn't help to be able to change stuff afterwards and I'm happy for modernxmpp to mandate these 4 options. I'm just observing that it's not what clients are doing

  166. pep.

    Are these clients following modernxmpp or just taking inspiration from it.. who knows :P

  167. MattJ

    It's a mix of documenting what today's "correct" clients are doing, and trying to make sure everyone is on the right and sensible path :/

  168. MattJ

    Looking at the options again, I do think all these options should be mandatory for private groups

  169. pep.

    I think PMs are just the cherry-on-top and it doesn't really matter, but yeah why not

  170. MattJ

    It's tricky because public channels on the other hand may overlap here (e.g. temporary members-only due to spam, as mentioned earlier)

  171. MattJ

    Well there isn't really an option for PMs, is there?

  172. pep.

    I think there is?

  173. MattJ

    I think it's more just "don't use in-room PMs in this context"

  174. MattJ

    <dinner>

  175. pep.

    Ah maybe not

  176. pep.

    I thought there was a muc#allow_pm

  177. pep.

    So maybe we should also define that

  178. Zash

    muc#roomconfig_allowpm

  179. pep.

    that

  180. pep.

    Does prosody understand it?

  181. Zash

    not

  182. pep.

    ok

  183. Zash

    patches welcome :)

  184. pep.

    One thing at a time

  185. lovetox

    but ejabberd understands it

  186. pep.

    Sure. The option can still be set and we recommend clients to not use PMs

  187. pep.

    It wouldn't work every other time anyway

  188. lovetox

    but in a private room

  189. lovetox

    if i know the full jid

  190. lovetox

    i can open a 1:1 anyway

  191. pep.

    Yes

  192. lovetox

    or at least i plan that Gajim will do this in the near futur

  193. pep.

    That's what we're saying. If you know the realjid you should use realjids

  194. MattJ

    False! That's what some clients (Pidgin iirc) do. It leaks the real JID of admins who initiate PMs in semi-anon MUCs

  195. pep.

    what

  196. pep.

    Right ok

  197. MattJ

    Could maybe make an exception if the target is in your roster

  198. pep.

    You should use realjids when `muc#roomconfig_whois` is set to `anyone`

  199. MattJ

    Just don't want lovetox to go and implement the wrong logic :)

  200. MattJ

    We should document this too

  201. pep.

    I'm also adding a paragraph on this

  202. MattJ

    Thanks!

  203. lovetox

    good point MattJ i didnt think about that case, thanks

  204. lovetox

    ah no we did think about this case :D

  205. lovetox

    but was good to check again

  206. lovetox

    maybe i should add a comment to the code

  207. pep.

    https://github.com/modernxmpp/modernxmpp/pull/33

  208. pep.

    shoot, I used the taboo word ("clarification")

  209. Zash

    U dun goofed

  210. MattJ

    You what?

  211. MattJ

    Merged

  212. pep.

    okay

  213. pep.

    Now.. we're gonna have to work on clients

  214. pep.

    hmm, *refrain from.

  215. pep.

    and various other english mistakes?

  216. MattJ

    Good catch, I don't see anything else

  217. pep.

    https://github.com/modernxmpp/modernxmpp/pull/34

  218. MattJ

    Merged