XSF Discussion - 2023-01-13


  1. MSavoritias (fae,ve)

    > pep.: > Wasn't that one of the proposed ways to do spaces edhelas: moxxy the android client also will havn spaces in the next release. https://codeberg.org/moxxy/moxxyv2/pulls/185

  2. jonas’

    there is no spaces XEP, is there?

  3. Menel

    Isn't this just Client UI?

  4. MSavoritias (fae,ve)

    No. But the ecosystem seems to be moving regardless :)

  5. qy

    so gajim has spaces?

  6. qy

    cause it does that

  7. qy

    it's not a protocol thing, it is just ui

  8. Menel

    It has... If that means grouping contact and mucs

  9. MSavoritias (fae,ve)

    Yes. Its just not a xep so it can be shared across clients

  10. MSavoritias (fae,ve)

    Yes. Its just not a xep so it cant be shared across clients

  11. MSavoritias (fae,ve)

    Plus some other stuff

  12. qy

    my problem is just that that means this > Isn't this just Client UI? is a yes

  13. qy

    (not a no)

  14. qy

    unless you were replying to jonas’

  15. qy

    hm, an avenue where threads would make for nice disambiguation

  16. MSavoritias (fae,ve)

    Yeah threads are needed

  17. qy

    cheogram has just implemented them, i think it's a reasonably decent use of the xep, although (maybe a problem for jdev) maybe it would make sense to have each unthreaded message start a thread, and have the ui render single message threads as not significant, i.e. gray or similar, until someone replies. in that way it's like the "in reply to" thing common in all newfangled chat systems, but less intrusive, and naturally more useful than the current implementation

  18. MSavoritias (fae,ve)

    The only sane threading system i have seen is in briar or element. It says right under the message there are replies in that message with a number. And you tap on the message to open a seperate screen where it renders the thread. Anything else is too chaotic imo

  19. jonas’

    zulip was nice, too

  20. jonas’

    MSavoritias (fae,ve): that's how rocket chat does it and I find it extremely annoying

  21. qy

    how is what i propose different, though? it's the same as the matrix implementation, but less intrusive

  22. jonas’

    having to tap the message to see stuff is meh when you want to follow multiple threads

  23. qy

    the thread icon indicates that there is a parent message, but it's not loud, and you might be able to figure it out at a glance

  24. MSavoritias (fae,ve)

    I like zulip the best for orgs. But that needs a whole different ui paradigm than just groups

  25. pep.

    "MSavoritias (fae,ve)1> Yes. Its just not a xep so it cant be shared across clients" < It can, people agreeing on things is not uncommo. Just that there's no document on XSF servers stating more or less how things should be done :P

  26. MSavoritias (fae,ve)

    Yeah i meant technical way 😅

  27. jonas’

    pep.: which kind of sucks

  28. jonas’

    I mean whatsapp is also just xmpp with a few things not documented on XSF servers

  29. qy

    i think the transport protocol being different is a bit more than just "a few things"

  30. qy

    but do you really want whatsapp interop?

  31. jonas’

    qy, some people do, hence bridges

  32. pep.

    jonas’: It depends, eventually maybe it sucks, but see the last list thread about the jonas’ jonas’ standardisation process

  33. pep.

    Also the WhatsApp exemple doesn't compare I feel

  34. jonas’

    the jonas’ jonas’ standardisation process?

  35. pep.

    The issue with them is the whole getting users in and ensuring they stay and make money off that

  36. pep.

    Haha, sorry

  37. pep.

    Mobile being slow and latency and..

  38. jonas’

    pep., I don't see how the list thread I'm thinking of is any relevant there

  39. pep.

    Experimentation, getting things out there with no constraints, seeing how they work (looks like gajim is happy with it?) Maybe yeah they could start thinking about standardizing it, even though this one is "just"(?) UI work, so not for the XSF.

  40. jonas’

    modernxmpp then possibly

  41. pep.

    Maybe. Even though.. spaces aren't the most consensual topic :/

  42. Kev

    I don't see that creating a XEP with no protocol in would be problematic, if the intention is interop.

  43. jonas’

    modernxmpp can deal with controversy (#kanal)

  44. jonas’

    '392 also has no protocol, still is valuable as a XEP

  45. pep.

    It's not like there could be 5 different documents like there could be under the XSF. In my mind modernxmpp was settling on some of the "controversies" by making choices

  46. pep.

    Kev, that's in 0001 iirc

  47. jonas’

    Informational exists for a reason.

  48. Kev

    > , that's in 0001 iirc Yes, allowing this is encoded in 1, you're right.

  49. pep.

    :)

  50. edhelas

    > &gt; pep.: > &gt; Wasn't that one of the proposed ways to do spaces > edhelas: moxxy the android client also will havn spaces in the next release. > > https://codeberg.org/moxxy/moxxyv2/pulls/185 Chat grouping is NOT Spaces

  51. edhelas

    Those are pure UI things, just like in Gajim

  52. MattJ

    See, nobody even agrees what spaces are, let alone how to implement them :)

  53. pep.

    "That's your opinion, man" :P hence the 56 different suggestions for spaces

  54. edhelas

    There is no XMPP involved at all there

  55. pep.

    So?

  56. MSavoritias (fae,ve)

    > pep.: > Experimentation, getting things out there with no constraints, seeing how they work (looks like gajim is happy with it?) Maybe yeah they could start thinking about standardizing it, even though this one is "just"(?) UI work, so not for the XSF. Not really. If spaces are to be dones right there needs to be a way to share them across clients with just a link or have people join them. And also a permissions work. So that a person can join all the chats under a space. Or moderators can be managed per space.

  57. MSavoritias (fae,ve)

    Plus if you destroy a space all chats should stop existing underneath

  58. MSavoritias (fae,ve)

    All this logic needs xmpp standardization behind it

  59. edhelas

    Ok then, call it the way you like, but i'm there to talk about XMPP stuff accross clients and synchronization between them. Drag & drop MUC in folders can be nice but it has not impact whatsoever in XMPP, unless theres a XEP or some kind of job done on the network 🤷‍♂️

  60. pep.

    Yeah somebody(tm) really neds to get onto it if they want that to be a thing, I guess.

  61. MattJ

    MSavoritias (fae,ve), do all groups part of a space need to exist on the same server?

  62. edhelas

    To me yes

  63. MSavoritias (fae,ve)

    edhelas: I agree. I was just pointing out how clients implement the ui part because they see it useful.

    👍 1
  64. MSavoritias (fae,ve)

    > MattJ: > MSavoritias (fae,ve), do all groups part of a space need to exist on the same server? Personally no. But it makes things more complicated

  65. pep.

    Yeah somebody(tm) really needs to get onto it if they want that to be a thing, I guess.

  66. wurstsalat digs out this: https://md.roflcopter.fr/xmpp-spaces

  67. MattJ

    I envisioned spaces as a lot more loosely-coupled to the rooms. More a discovery feature than anything else. That doesn't really require them to be on the same server. But you're right, with the features you're talking about it sounds like they would almost need to be (not necessarily, but you need a lot of cooperation and trust between servers otherwise)

    👍 1
  68. MSavoritias (fae,ve)

    Yeah

  69. pep.

    Personally I'd rather not put a limit on the location of rooms. And I want to allow rooms to be in more than one space

  70. MSavoritias (fae,ve)

    Also i would "attach"a couple of xeps there for good experience

  71. MSavoritias (fae,ve)

    pep.: they should be allowed to be imo

  72. MattJ

    If a room can be in multiple spaces, you can't delete either space without deleting the room?

  73. MattJ

    Or the room should only be deleted when the last remaining space is deleted?

  74. pep.

    MSavoritias (fae,ve): Not in some people's definition of spaces, I know this was one of the disagreements

  75. MattJ

    I think at some point we need to think about how practical some of these "requirements" are

  76. MattJ

    Otherwise nothing will get implemented

  77. MSavoritias (fae,ve)

    > MattJ: > If a room can be in multiple spaces, you can't delete either space without deleting the room? > Or the room should only be deleted when the last remaining space is deleted? Second one

  78. MSavoritias (fae,ve)

    Yeah true. We need an actual definition and document.

  79. pep.

    MattJ: yeah I wouldn't delete rooms anyway if a space is deleted :p

  80. pep.

    See what wurstsalat linked again

  81. Kev

    I have thoughts about this, but can't type it right now.

  82. MattJ

    We all have that feeling sometimes

  83. Kev

    I mean I'm in a meeting :)

  84. MattJ

    :P

  85. Daniel

    In matrix the discovery feature called spaces (where an organization can couple all their channels together; for example the dev channel and the user channel) and the personal organization feature called spaces seem to be pretty tightly coupled which is horrible. Because the organizations way of organizing things might not be my way of organizing things)

  86. qy

    heh

  87. qy

    i think wurstsalat had it right in the doc then, differentiating between server spaces and client workspaces

  88. Daniel

    Or in other words if a join the project Foo dev channel through project Foo space and the projact bar dev channel through space bar I now have two work space plus the default one in element

  89. Daniel

    Even though I'm just trying to be in two channels

  90. Daniel

    I wouldn't call it server space because I'm happy for my server to manage personal spaces across multiple clients

  91. Daniel

    But I don't want it to be hard linked to a discovery feature

  92. larma

    Well, I guess it depends on what you want to use spaces for in general

  93. MattJ

    I think there are three aspects: organization features in the UI (client), discovery (server), administration (server)

  94. wurstsalat

    qy: please note that is't not my document (I just dug it out)

  95. larma

    if it's just something like grouping your channels/contacts for you personally, that's basically something that roster/bookmarks can handle

  96. Daniel

    > Well, I guess it depends on what you want to use spaces for in general Yes. I guess that's what I'm trying to say. But we shouldn't mix those things

    💯️ 1
  97. MattJ

    Some of the features discussed conflict with features I would prefer

  98. larma

    For long time, many XMPP clients displayed conversations/contacts in a tree-like structure. Now, many clients don't do that anymore and suddenly people want that back...

  99. edhelas

    > i think wurstsalat had it right in the doc then, differentiating between server spaces and client workspaces That sounds a nice way of differencing the two things vocabulary wise :)

  100. qy

    larma; what determined the outline?

  101. MattJ

    qy, nested roster groups

  102. larma

    I guess the reason why we stopped doing it is that it's to complex for just private chat. Complex conversation organizing only makes sense when XMPP is used for larger communities or organizations, e.g. when there are multiple channels within the same community that are used for different topics inside that community (like xsf@, council@, editor@, ... in XMPP dev community)

  103. larma

    You don't have "Friends" and "Friends offtopic" channels, so no need to group them

  104. Daniel

    Or I guess even more importantly if you are in multiple organizations

  105. larma

    Daniel, yes

  106. Daniel

    But yes that's where the two uses cases 'slack' and 'whatsapp' collide. I don't want to explain the slack mobile UI to my mum

  107. MattJ

    +1, personal and organization/team messaging demand different UIs for various things

  108. MattJ

    You can do both with one UI, but it's a worse experience for both use cases when you do

  109. larma

    Discord has that thing with the "personal" space that looks more like whatsapp and then you have "servers" which are about multiple channels used by the same group of people. I can imagine the same to work for XMPP clients, where you normally only have that personal space which looks exactly like Conversations/Dino/many others look like right now, and only optionally you can add a "organization space" that works like Discord/Slack and has different UI to some degree (e.g. channel list is grouped and not ordered by last message)

  110. edhelas

    I like the Discord approach as well

  111. larma

    Discord has that thing with the "personal" space that looks more like whatsapp and then you have "servers" which are about multiple channels used by the same group of people. I can imagine the same to work for XMPP clients, where you normally only have that personal space which looks exactly like Conversations/Dino/many others look like right now, and only optionally you can add a "organization space" that works like Discord/Slack and has different UI to some degree (e.g. channel list is grouped, not ordered by last message and designed around having way more channels)

  112. larma

    The advantage of this approach is that we can properly upgrade existing users/infrastructure to it, because the personal space is exactly the status quo and we're just adding something on top

  113. wurstsalat

    larma: I really like that idea

  114. MattJ

    +1

  115. Kev

    I would like , as a user, to be able to group my chats in some way, such as an XSF/Isode split on rooms. That could be done with client-only logic with data stored in PIP. I would also like to be able to manage a set of rooms as a coherent whole - being able to assign hats (or whatever - roles) across a set of rooms, and having both ACLs and room autojoin based on those.

  116. Kev

    I think that, protocol-wise, it's not a lot of work to add some glue on top so that rooms remain rooms as they are, and we define a space on top. The server would need to tie them together behind the scenes ACL-wise, of course.

  117. edhelas

    Kev + having an easy discoverability for clients, for example a simple capability feature in a MUC that says "hey, there's a space above me"

  118. qy

    edhelas: then we're already limiting a muc to one space

  119. Kev

    I'm not sure you need to go up out of a MUC to find the space it's in, but rather the opposite, no?

  120. Kev

    You need to know what's in a space that you're in.

  121. edhelas

    mhh 🤔

  122. MattJ

    No, I always envisioned it similar to what edhelas is saying

  123. MattJ

    You join a MUC, it advertises one or more spaces, which you can look up and discover other related MUCs

  124. Kev

    In the model I envisage, which is basically the Discord/Slack model, you join (UX) a space, rather than joining a room, and then that space acts essentially like its own little garden.

  125. MattJ

    These two are not incompatible

  126. MattJ

    But note that (unless you're saying otherwise) you will always be able to join a MUC directly, and there should be a way to discover a space from a MUC

  127. MattJ

    It will also be the easiest way to go about it on the network

  128. MattJ

    Share the "main" MUC of your space, and spaces-aware clients will be able to do the right thing, and legacy clients will work just as today

  129. Kev

    Think of the MMO Guild use case, for example. You tell people "Join our Space [here]", the user tells their client to join that space, and then they're in that space, which is distinct in the UI somehow. They're probably in a '#welcome' channel at that point. A space admin notices them and gives them the 'guildie' role/hat/whatever, which opens up a handful of other channels, to which they're automatically joined by having the room. Then they can also see some other optional channels they can select, etc. Then they get promoted to a raid group, get the 'raid' hat, and they're autojoined to all the raid channels, which they can now see. That sort of stuff.

  130. Kev

    > Share the "main" MUC of your space, and spaces-aware clients will be able to do the right thing, and legacy clients will work just as today Oh, so you pin a main-space-channel MUC as your entry point, rather than a distinct 'space' entry point? I think that likely works fine.

  131. MattJ

    Yes, same thing, edhelas and I are just saying that what you actually share/join is the #welcome channel

  132. MattJ

    and the rest comes from there

  133. MSavoritias (fae,ve)

    I think that could be done as different ux yeah

  134. qy

    so from non-main mucs, you can't presume a space?

  135. MSavoritias (fae,ve)

    And both of tdem can coexist

  136. Kev

    The hardest question to answer, for XMPP, is how to ensure the autojoin, I think.

  137. larma

    MattJ, but that somehow conflicts the idea of a room being in multiple spaces

  138. qy

    or are we introducing a strict parent-child space relation

  139. MattJ

    qy, I think any MUC part of the space is going to advertise it's part of that space

  140. qy

    larma: yeah

  141. Kev

    > MattJ, but that somehow conflicts the idea of a room being in multiple spaces It doesn't, I think. Only for the 'main space channel' being in multiple spaces.

  142. MattJ

    larma, why can't a MUC advertise multiple spaces?

  143. larma

    MattJ, it can, but how can a MUC be the entry point to multiple spaces without the UX becoming terrible?

  144. larma

    Join our community here, then from the list of linked spaces, use X

  145. Kev

    I don't think a MUC being in multiple spaces is compatible with full-management spaces.

  146. MattJ

    I don't think the UX needs to be terrible. In fact, per what Daniel said earlier, it can be better than what happens in other systems

  147. Kev

    But you could easily have full-managed and linked MUCs.

  148. MattJ

    Kev, that I might not disagree with, indeed

  149. Kev

    So a MUC can only be full-managed by one space, but can be linked from several spaces.

  150. MSavoritias (fae,ve)

    Agreed

  151. MattJ

    In my mind spaces are less about management and more about easy discovery/grouping of related channels

  152. MSavoritias (fae,ve)

    They are both for me

  153. larma

    I think there can be channels fully managed by multiple spaces

  154. larma

    slack can do this

  155. MattJ

    Once you add management it becomes a *lot* more complex

  156. Kev

    I'm sure there are use cases where that's true, but there are definitely (widely used in other systems) cases where full management is needed.

  157. MattJ

    Unless they are situated on the same server

  158. Kev

    > Unless they are situated on the same server They have to be, I think.

  159. MSavoritias (fae,ve)

    Probably seperate xeps though due to complexity yeah

  160. MattJ

    That's a shame

  161. Kev

    > That's a shame I don't think so. There's nothing stopping you linking across servers. But the data for 'your' managed space are on one server.

  162. MSavoritias (fae,ve)

    Would mix make management easier?

  163. Kev

    > Would mix make management easier? Yes, but not groundbreakingly so.

  164. larma

    I just added Spaces to possible Summit topics

  165. MattJ

    Oh no :)

  166. Kev

    So if you want a space that's something like "Cool rooms talking about cat gifs", you can make one, and it can 'link' MUCs from across the xmppiverse.

  167. MattJ

    I mean, thanks :)

  168. Kev

    If you want a space that's "My Warcraft Guild" where you manage roles of your members, etc., you host it on a particular server (but can still link out to popular cat GIF channels elsewhere).

  169. MSavoritias (fae,ve)

    > Kev: > Yes, but not groundbreakingly so. Thought so

  170. qy

    Kev: how do linked mucs know they are linked to? muc components maintaining such info seems like it could go wrong

  171. MattJ

    Random semi-related thought: I wish the designers of disco#items had included a "rel" attribute

    👍️ 1
  172. Kev

    I'm not pretending that other people's use cases aren't valid, or important, or whatever. Just that the case I'm describing is very widely deployed on other systems, and it would be good to be able to address that in XMPP.

  173. Kev

    > : how do linked mucs know they are linked to? muc components maintaining such info seems like it could go wrong They don't need to.

  174. qy

    > qy, I think any MUC part of the space is going to advertise it's part of that space ?

  175. qy

    do we then mean that only the "full-managed" space is advertised? worth noting...

  176. qy

    that also then kinda removes the multiple space issue

  177. qy

    if mucs only advertise one, no problem

  178. Kev

    This is one of those annoying instances where I think it's worth actually gathering different scenarios to work out what we can/can't/want to/don't/etc. address.

  179. Kev

    I've got a pretty clear picture of what addressing the Company, Guild, Twitch community requirements can look like, but other people have other things in mind and it'd be good to capture them.

  180. nicoco

    Wouldn't it be reasonable to do XEP-spaces incrementally? What gajim does right now seems rather straighforward (?) to implement with some JID/workspace name mapping server-side (if a workspace is just defined by a simple string, it also works if you use multiple accounts, which is nice IMHO). Obviously that does not cover all the use cases and expectations, but better start somewhere than nowhere, maybe? Where is this someone™? Isn't he writing that already?

  181. nicoco

    Wouldn't it be reasonable to do XEP-spaces incrementally? What gajim does right now seems rather straighforward (?) to implement with some JID/workspace name mapping server-side (if a workspace is just defined by a simple string, it also works if you use multiple accounts, which is nice IMHO). Obviously that does not cover all the use cases and expectations, but better start somewhere than nowhere, maybe? Where is this someone™? Aren't they writing that already?

  182. qy

    nicoco: per user in PEP?

  183. qy

    PEP requires no server involvement, a serverside mapping sounds more like the "server spaces" option, which is not what gajim has implemented

  184. nicoco

    I was thinking per user in PEP, yes (so, not "server spaces"). I'm talking from a (egocentric) user perspective: I think gajim's workspaces are great and would love to not need to reorganize my chats in workspaces when I switch to a new computer.

  185. Kev

    Have put my name on the summit page, BTW.

  186. singpolyma

    On the "client grouping shared in server" side of things, cheogram Android we have implemented using bookmarks2 <extensions> feature to put roster <group/> elements inside the bookmarks. That's how we do it right now

  187. Kev

    Does not sound stupid to me.

  188. pep.

    w 23

  189. pep.

    .

  190. qy

    .

  191. Zash

    . (edited)

  192. qy

    .

  193. qy

    .

  194. Daniel

    what would be a good way to get hold of an outbound stanza-id? put it into the stream managment ack? or would that be too weird syntactically? from a client side development perspective this would be the ideal place. but i don’t know if ack and assigning stanza-id are very different layers on the server side

  195. Zash

    Didn't we plan to squeeze that into Carbons?

  196. MattJ

    Yeah are, a bit (in Prosody). But not impossible. Acks would always need to be delayed until archiving succeeds... which might not be terrible in any case.

  197. Daniel

    plan maybe. but the overhead of carbons compared to the overhead of ack...

  198. MattJ

    I think the two options are acks or carbons, indeed

  199. MattJ

    and the magical one based on a counter and stream id

  200. MattJ

    Maybe we should make a final decision at the summit

  201. Andrzej

    for me putting that into ack would be weird, and would not make sense if another message would already be sent..

  202. Zash

    but the magical one would mess with my storage-engine decided ids :(

  203. MattJ

    Indeed

  204. Zash

    acks aren't always one to one with messages either

  205. Kev

    Putting it into the 198 acks is a terrible layering violation - and while I'm in favour of pragmatic breaking of layers, in this case it would pose serious issues to (at least some) servers that layer transports differently from stanza logic.

  206. Kev

    (I obviously mean it would be an inconvenience in M-Link ;) )

  207. MattJ

    Yep, I can totally see that. That design isn't traditionally uncommon, nor do I think it should be discouraged.

  208. MattJ

    I've been leaning towards carbons most recently

  209. MattJ

    Carbons and MAM are already closely related (Carbons is the MAM subscription that never was)

  210. MattJ

    We "just" have to include the sender in the notifications

  211. MattJ

    We can also invent something entirely new

  212. Andrzej

    carbons may be overkill and may cause issues with MUC PMs (I think)

  213. Zash

    Carbons are already pretty large due to all the wrappers

  214. Daniel

    carbons are very verbose. and I'm not sure how existing clients react if they suddently receive copys of their outbound messages

  215. Daniel

    that would probably require a namespace bump if we start doing that

  216. Zash

    We'd probably have to do it as opt-in

  217. Kev

    We should probably get around to dropping carbons and just routing the core stanzas. But using carbons/reflection is at least consistent with how you get your IDs from a MUC MAM.

  218. Zash

    No namespace bump, just some element or something when enabling carbons?

  219. Kev

    > No namespace bump, just some element or something when enabling carbons? ^this

  220. Daniel

    that would work too

  221. Kev

    Or a namespace bump of the enable, which is roughly equivalent.

  222. Zash

    Kev, OG carbons with <messages> and to/from in the opposite direction?

  223. Kev

    But explicit/implicit/etc.

  224. MattJ

    or just <im-ng/> in your bind2 request :)

  225. Daniel

    mhhh brb reading that xep again

  226. Kev

    > or just <im-ng/> in your bind2 request :) Yes, that's what I mean by "We should probably get around to dropping carbons and just routing the core stanzas"

  227. Andrzej

    I think that we should do just that

  228. Daniel

    now that bind 2 is a thing we could actually start looking into im-ng again

  229. Kev

    If we could sort out IM-NG without boiling the ocean (which is kinda hard to do), the world would be a better place.

  230. Daniel

    is this a blockchain joke?

  231. Kev

    https://en.wiktionary.org/wiki/boil_the_ocean

  232. Kev

    I mean that I (at least) keep wanting to fix all the problems related to routing in one go, and that's an impossible task.

  233. Kev

    In principle, we could make some very sensible and achievable changes to routing to start with.

  234. Kev

    Like making carbons go away, for example.

  235. Andrzej

    I would just send out to other resource (im-ng enagled) every message that goes to MAM

  236. qy

    > Like making carbons go away, for example. where to o_O

  237. MattJ

    Status Final

  238. MattJ

    The great spec graveyard

  239. jonas’

    https://xmpp.org/extensions/xep-0409.html

  240. Kev

    I think I wrote that on the Eurostar after the 2018 summit or somesuch.

  241. Daniel

    everyone go read up on the earlier discussions about this xep on the list and then we have a solid base for a disussion at the summit

  242. Daniel

    but in general it seems like we might have enough to start some implementations

  243. jonas’

    especially now that the SASL2 stack has landed