XSF Discussion - 2023-05-24


  1. singpolyma

    Hello all! xep-0045 says that both a MUC and the "MUC service" should have identity conference/text and both advertise the muc feature. This feels wrong (since a MUC service neither implements MUC protocol, nor is a conference, nor really needs to technically exist and directory/chatroom exists) but more important for me how can I tell they difference? If I have the jid of a conference/text how can I know if it is joinable or not?

  2. MattJ

    Probably not the answer you're hoping for, but: if there is a node part, it's joinable? :)

  3. pep.

    Yeah that feels weird to me too if both advertize it. That means implementations rely on other clues and that's where you get in awkward situations like checking that there's a .. node

  4. singpolyma table flip

  5. singpolyma

    ;)

  6. MattJ

    As author of an implementation which took steps to ensure the bare domain was joinable, I'm nevertheless happy enough for nobody to support it

  7. MattJ

    Because it's just too much trouble

  8. singpolyma

    What kind of trouble?

  9. pep.

    Personally it's not that I want people to support that the bare domain is joinable, it's the other way around, I'd want them to stop enforcing arbitrary rules

  10. MattJ

    Well, it's logically possible only when the operations you perform on the service don't overlap with the operations you can perform on the MUC

  11. singpolyma

    pep.: yeah. I kinda hate doing (if node) ever

  12. MattJ

    and it happens that there very little overlap

  13. singpolyma

    MattJ: oh, you mean if the domain is also a service. Sure. But the domain could be just a room and not also a service

  14. MattJ

    Then it's a room with no service

  15. singpolyma

    Sure

  16. MattJ

    which is logically weird

  17. singpolyma

    Is it? The MUC services is basically a historical accident. It's sometimes useful but doesn't feel in any way required

  18. pep.

    I understand the fact that people want a place ""under which"" they know they can create a new room. But it's the "under which" that annoys me. Why not just ask for a new room to any room of the service one knows and be done? (as an example)

  19. pep.

    (There may be other ways)

  20. MattJ

    IIRC there are some operations in XEP-0045 defined on the service, such as registration

  21. pep.

    Registration against the service?

  22. MattJ

    Service-wide nick registration, for example

  23. Guus

    search maybe?

  24. pep.

    #items also yeah maybe

  25. singpolyma

    Right, so that's why the service advertises muc, because it optionally implements some muc features

  26. MattJ

    With all the edge cases it exposes, I just can't support the idea that it's worth it

  27. singpolyma

    pep.: Items is more like directory/chatroom though

  28. pep.

    The spec could be made clearer in one way or another in this regard (advertizing "muc" everywhere). I guess it's an implicit assumption that there's a node for a room

  29. singpolyma

    I guess also because of the long history here we can't remove the identity because even if it's wrong too many things would have it. But nothing prevents us suggesting a second identity also be present (either in there service or the muc or both)

  30. singpolyma

    I will use (if node) for now I guess, but under protest :P

  31. MattJ

    Your protest has been noted :P

  32. pep.

    I'm writing a MUC implementation, and I also protest!!

  33. Guus

    I just protest!

  34. singpolyma

    pep.: right. A muc#service var could also do it. But I think this is the job identity is for

  35. singpolyma

    pep.: if you're actually working on this, I would submit that the muc service should be identity conference/text *and* directory/chatroom (the former only for historical reasons as noted)

  36. pep.

    fwiw I've been close to finishing my scansion impl in Rust, which allows me to do test codegen for my MUC service. Hoping that this helps other MUC (service) impls

  37. pep.

    I need to take some time and finish it

  38. pep.

    And then start writing tests.

  39. flow

    vote flow for a stricter and tightener ruleset for MUC (and all other protocols)!!111

  40. pep.

    hah

  41. flow

    "The XMPP address (JID) of a MUC room MUST consist of a local-, domain-, and resourcepart."

  42. singpolyma

    What can actually be done from a XEP pov? I imagine editing MUC at all is basically verboten except wording changes? So would it have to be a new xep just to suggest a second identity for muc services?

  43. pep.

    flow, :/

  44. flow

    pep., I never said my opinions and belives are generally shared :)

  45. pep.

    singpolyma, MUC is being edited all the time

  46. Guus

    singpolyma: can a room be expected to at least contain _some_ disco#info features that are specific to a room (which won't be returned by a service's #info?).

  47. singpolyma

    Guus: I will review the spec again, but I don't think any are required

  48. flow

    wait, strike the "and resourcepart" in what I wrote above

  49. pep.

    Still :/

  50. pep.

    :P

  51. Guus

    singpolyma: it's not better than checking if there's a node-part, but maybe you can differentiate between 'room' and 'service' by checking for a non-zero amount of `muc_*` features.

  52. pep.

    flow, there's literally no reason apart from "it's easier" to enforce the node

  53. singpolyma

    Guus: if any we're required to be present it would be way better. As it is maybe I can do (if node or (contains muc_*))

  54. flow

    pep., yeah, yeah, I know. I hope we still can have a beverage at an future fosdem even if we have different opinions ;)

  55. singpolyma

    And get to 98%

  56. pep.

    flow, as long as you don't bring me MIX stickers :P

  57. flow

    pep., I truely believe that the ability to host MUC rooms on domainpart-only XMPP addresses only causes confusion and makes implementation harder

  58. Guus

    that'd get you to only 98% you think?

  59. Zash

    Wait, that's it! MIX needs Stickers, otherwise it will never become popular!!!1

  60. Guus

    flow: agreed

  61. Zash

    Actual physical stickers, that is ;)

  62. singpolyma

    Guus: well, in practise (if node) is probably 99.9% haha

  63. MattJ quickly prints some MUC stickers

  64. pep.

    :DD

  65. flow

    war of the MUC vs MIX (stickers) incoming?

  66. Zash

    Vote with your stickers

  67. flow

    and your sticker printing equipment!

  68. pep.

    Guus, "is node" and "if other feature" are somewhat equivalent IMO. As you'll disco anyway

  69. Guus

    pep: `is node` can be deduced from the room's address, and doesn't require a disco?

  70. pep.

    Guus, "if node" and "if other feature" are somewhat equivalent IMO. As you'll disco anyway

  71. pep.

    Yeah but you can't know if node@server is a MUC or a person or something else

  72. pep.

    So you need to disco

  73. singpolyma

    BTW, maybe this is better for jdev, but is anyone else aware of clients that try to detect MUC generally vs having the user declare what is a MUC and what is not? I observed today the XEP even says presence sub to MUC is allowed, but in most clients MUC in roster is a UX disaster

  74. Guus

    oh, I'm definitely not arguing that this is a good idea. I was just trying to find a way in which you could distinguish between service and room based on disco#info data.

  75. singpolyma

    Guus: yeah, I'm not sure it is perfect but I will definitely add your idea to what I am doing

  76. Guus

    We _could_ improve the specs, but what's the cost/benefit ratio?

  77. singpolyma

    Well, improving the specs means the next person who wants to do this hrs something telling them what to do

  78. pep.

    ^

  79. singpolyma

    Well, improving the specs means the next person who wants to do this has something telling them what to do

  80. singpolyma

    I am willing to come in here and be like "uhhh..." But GP doesn't love that mode of finding out usually

  81. Guus

    isn't that quite clear? It's awkward maybe, but it's pretty evident that the XEP assumes that rooms are node-based JIDs under a domain-only service address.

  82. Zash

    Clarifying is good

  83. singpolyma

    Guus: I think this discussion is an existence proof it's not clear. I have a published client in the wild now that tries to join MUC services, heh

  84. MattJ

    +1, I'd rather update XEP-0045 to state what is common (universal) practice explicitly, over trying to change the protocol to satisfy theoretical use cases

  85. singpolyma

    MattJ: you mean just say MUST node?

  86. Guus

    (fwiw: I wasn't arguing against clarifying the XEP - but I do wonder if there's much benefit in introducing something like a new feature to make the disction between room and service more distinct)

  87. MattJ

    singpolyma, yep

  88. singpolyma

    I don't live that, but if it's in the spec then (if node) stops being a hack

  89. singpolyma

    I don't love that, but if it's in the spec then (if node) stops being a hack

  90. singpolyma

    So I prefer it to nothing

  91. MattJ

    Room JID The <room@service> address of a room.

  92. MattJ

    This is from XEP-0045 currently

  93. MattJ

    Could add more words, but it doesn't seem that ambiguous

  94. Guus

    > Room ID > The localpart of a Room JID, which might be opaque and thus lack meaning for human users

  95. Guus

    also in the XEP currently.

  96. MattJ

    > Each room is identified as a "room JID" <room@service> (e.g., <jdev@conference.jabber.org>), where "room" is the name of the room and "service" is the hostname at which the multi-user chat service is running.

  97. singpolyma

    Hmm. Ok, you win.

  98. Zash

    Could the problem be the that the XEP is simply so large that you can't possibly read the whole thing at once, thus you miss bits?

  99. mjk

    > BTW, maybe this is better for jdev, but is anyone else aware of clients that try to detect MUC generally Gajim does. afair, the internal "open chat" API is even agnostic to the jid being a muc or not

  100. singpolyma

    I guess so many xmpp things assume node when they shouldn't that it's easy for me to miss is such statements are requirements, but the weight is there

  101. Zash

    (or did those quoted parts appear just now?)

  102. MattJ

    Zash, want me to find another bit of XEP-0045 you've never seen before? :)

  103. Guus

    Zash: that's probably true for many XEPs - many specifications in general even, maybe.

  104. singpolyma

    mjk: oh yeah? Nice. I haven't tried gajim past 1.3 yet but glad to hear newer versions also doing this

  105. Guus

    Mattj: as someone who has direct write access to the webserver that hosts them, one might suspect foul play!

  106. Trung

    > Could the problem be the that the XEP is simply so large that you can't possibly read the whole thing at once, thus you miss bits? everytime i look at a xep, i have to go lay down for bit. just saying.

  107. singpolyma

    Most xeps are very small and easy to digest, but there are a few famous exceptions of course. 45, 60

  108. singpolyma

    Both could be broken up but 🤷‍♂️

  109. Zash

    Breaking them up isn't a magic bullet either...

  110. singpolyma

    Zash: no, but it could make for example a partial implemetation much easier to reason about

  111. Zash

    But reorganization in general can probably help, if done well.

  112. singpolyma

    I don't think it's worth it for historical xeps like this, we can write seperate docs is needed etc. But new xeps being more broken down I think is good and that does seem to be the trend

  113. singpolyma

    I don't think it's worth it for historical xeps like this, we can write seperate docs if needed etc. But new xeps being more broken down I think is good and that does seem to be the trend

  114. singpolyma

    Ultimately I'd like to get to the point where lots of people do productive xmpp work without even reading a xep. Not because reading specs is bad but because many people won't

  115. singpolyma

    But that's a different goal, heh

  116. mjk

    singpolyma: > I haven't tried gajim past 1.3 yet you might find out it's now _more_ broken wrt to calls :(

  117. mjk

    somewhere around libsoup 2->3 transition, iirc

  118. mjk

    one might ask what has http do with rtp. one would be correct in asking

  119. mjk

    one might ask what has http to do with rtp. one would be correct in asking

  120. singpolyma

    > singpolyma: >> I haven't tried gajim past 1.3 yet > you might find out it's now _more_ broken wrt to calls :( Yes, I'm aware of that. Though I think it got slightly unbroken again? Not sure. Anyway, I don't do calls myself but of course I need to be aware of these things for customers

  121. mjk

    👍

  122. cal0pteryx (wurstsalat)

    > > you might find out it's now _more_ broken wrt to calls :( > Yes, I'm aware of that. Though I think it got slightly unbroken again? Not sure. Anyway, I don't do calls myself but of course I need to be aware of these things for customers the jingle parts suffer from severe bit rot. at some point this needs to be rewritten (same for jingle ft)

  123. Zash

    GSoC rewrite from scratch? :)

  124. cal0pteryx (wurstsalat)

    I know Gajim participated in earlier years, but it seems the effort which goes into mentoring does not pay off