-
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?
-
MattJ
Probably not the answer you're hoping for, but: if there is a node part, it's joinable? :)
-
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
- singpolyma table flip
-
singpolyma
;)
-
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
-
MattJ
Because it's just too much trouble
-
singpolyma
What kind of trouble?
-
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
-
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
-
singpolyma
pep.: yeah. I kinda hate doing (if node) ever
-
MattJ
and it happens that there very little overlap
-
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
-
MattJ
Then it's a room with no service
-
singpolyma
Sure
-
MattJ
which is logically weird
-
singpolyma
Is it? The MUC services is basically a historical accident. It's sometimes useful but doesn't feel in any way required
-
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)
-
pep.
(There may be other ways)
-
MattJ
IIRC there are some operations in XEP-0045 defined on the service, such as registration
-
pep.
Registration against the service?
-
MattJ
Service-wide nick registration, for example
-
Guus
search maybe?
-
pep.
#items also yeah maybe
-
singpolyma
Right, so that's why the service advertises muc, because it optionally implements some muc features
-
MattJ
With all the edge cases it exposes, I just can't support the idea that it's worth it
-
singpolyma
pep.: Items is more like directory/chatroom though
-
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
-
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)
-
singpolyma
I will use (if node) for now I guess, but under protest :P
-
MattJ
Your protest has been noted :P
-
pep.
I'm writing a MUC implementation, and I also protest!!
-
Guus
I just protest!
-
singpolyma
pep.: right. A muc#service var could also do it. But I think this is the job identity is for
-
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)
-
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
-
pep.
I need to take some time and finish it
-
pep.
And then start writing tests.
-
flow
vote flow for a stricter and tightener ruleset for MUC (and all other protocols)!!111
-
pep.
hah
-
flow
"The XMPP address (JID) of a MUC room MUST consist of a local-, domain-, and resourcepart."
-
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?
-
pep.
flow, :/
-
flow
pep., I never said my opinions and belives are generally shared :)
-
pep.
singpolyma, MUC is being edited all the time
-
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?).
-
singpolyma
Guus: I will review the spec again, but I don't think any are required
-
flow
wait, strike the "and resourcepart" in what I wrote above
-
pep.
Still :/
-
pep.
:P
-
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.
-
pep.
flow, there's literally no reason apart from "it's easier" to enforce the node
-
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_*))
-
flow
pep., yeah, yeah, I know. I hope we still can have a beverage at an future fosdem even if we have different opinions ;)
-
singpolyma
And get to 98%
-
pep.
flow, as long as you don't bring me MIX stickers :P
-
flow
pep., I truely believe that the ability to host MUC rooms on domainpart-only XMPP addresses only causes confusion and makes implementation harder
-
Guus
that'd get you to only 98% you think?
-
Zash
Wait, that's it! MIX needs Stickers, otherwise it will never become popular!!!1
-
Guus
flow: agreed
-
Zash
Actual physical stickers, that is ;)
-
singpolyma
Guus: well, in practise (if node) is probably 99.9% haha
- MattJ quickly prints some MUC stickers
-
pep.
:DD
-
flow
war of the MUC vs MIX (stickers) incoming?
-
Zash
Vote with your stickers
-
flow
and your sticker printing equipment!
-
pep.
Guus, "is node" and "if other feature" are somewhat equivalent IMO. As you'll disco anyway✎ -
Guus
pep: `is node` can be deduced from the room's address, and doesn't require a disco?
-
pep.
Guus, "if node" and "if other feature" are somewhat equivalent IMO. As you'll disco anyway ✏
-
pep.
Yeah but you can't know if node@server is a MUC or a person or something else
-
pep.
So you need to disco
-
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
-
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.
-
singpolyma
Guus: yeah, I'm not sure it is perfect but I will definitely add your idea to what I am doing
-
Guus
We _could_ improve the specs, but what's the cost/benefit ratio?
-
singpolyma
Well, improving the specs means the next person who wants to do this hrs something telling them what to do✎ -
pep.
^
-
singpolyma
Well, improving the specs means the next person who wants to do this has something telling them what to do ✏
-
singpolyma
I am willing to come in here and be like "uhhh..." But GP doesn't love that mode of finding out usually
-
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.
-
Zash
Clarifying is good
-
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
-
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
-
singpolyma
MattJ: you mean just say MUST node?
-
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)
-
MattJ
singpolyma, yep
-
singpolyma
I don't live that, but if it's in the spec then (if node) stops being a hack✎ -
singpolyma
I don't love that, but if it's in the spec then (if node) stops being a hack ✏
-
singpolyma
So I prefer it to nothing
-
MattJ
Room JID The <room@service> address of a room.
-
MattJ
This is from XEP-0045 currently
-
MattJ
Could add more words, but it doesn't seem that ambiguous
-
Guus
> Room ID > The localpart of a Room JID, which might be opaque and thus lack meaning for human users
-
Guus
also in the XEP currently.
-
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.
-
singpolyma
Hmm. Ok, you win.
-
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?
-
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
-
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
-
Zash
(or did those quoted parts appear just now?)
-
MattJ
Zash, want me to find another bit of XEP-0045 you've never seen before? :)
-
Guus
Zash: that's probably true for many XEPs - many specifications in general even, maybe.
-
singpolyma
mjk: oh yeah? Nice. I haven't tried gajim past 1.3 yet but glad to hear newer versions also doing this
-
Guus
Mattj: as someone who has direct write access to the webserver that hosts them, one might suspect foul play!
-
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.
-
singpolyma
Most xeps are very small and easy to digest, but there are a few famous exceptions of course. 45, 60
-
singpolyma
Both could be broken up but 🤷♂️
-
Zash
Breaking them up isn't a magic bullet either...
-
singpolyma
Zash: no, but it could make for example a partial implemetation much easier to reason about
-
Zash
But reorganization in general can probably help, if done well.
-
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✎ -
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 ✏
-
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
-
singpolyma
But that's a different goal, heh
-
mjk
singpolyma: > I haven't tried gajim past 1.3 yet you might find out it's now _more_ broken wrt to calls :(
-
mjk
somewhere around libsoup 2->3 transition, iirc
-
mjk
one might ask what has http do with rtp. one would be correct in asking✎ -
mjk
one might ask what has http to do with rtp. one would be correct in asking ✏
-
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 ↺
-
mjk
👍
-
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)
-
Zash
GSoC rewrite from scratch? :)
-
cal0pteryx (wurstsalat)
I know Gajim participated in earlier years, but it seems the effort which goes into mentoring does not pay off