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
singpolymatable flip
singpolyma
;)
massiveboxhas joined
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
Kevhas left
MattJ
Then it's a room with no service
singpolyma
Sure
MattJ
which is logically weird
kinetikhas left
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
Wojtekhas left
belovehas left
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
kinetikhas joined
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
belovehas joined
xnamedhas joined
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)
sdjlbmrthas left
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.
belovehas left
flow
vote flow for a stricter and tightener ruleset for MUC (and all other protocols)!!111
sdjlbmrthas joined
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
*IM*has left
xengineeringhas left
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
belovehas joined
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%
HoUsSeMhas joined
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
xnamedhas left
MattJquickly prints some MUC stickers
pep.
:DD
Alexhas left
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
xengineeringhas joined
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
BASSGODhas left
*IM*has joined
Menelhas left
Guus
We _could_ improve the specs, but what's the cost/benefit ratio?
Menelhas joined
singpolyma
Well, improving the specs means the next person who wants to do this hrs something telling them what to do✎
Alexhas joined
pep.
^
singpolyma
Well, improving the specs means the next person who wants to do this has something telling them what to do ✏
Kevhas joined
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
Alexhas left
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
Alexhas joined
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...
lissinehas left
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
Mikaelahas left
Mikaelahas joined
mjk
singpolyma:
> I haven't tried gajim past 1.3 yet
you might find out it's now _more_ broken wrt to calls :(
Kevhas left
mjk
somewhere around libsoup 2->3 transition, iirc
BASSGODhas joined
Kevhas joined
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 ✏
singpolymahas left
BASSGODhas left
singpolymahas joined
archas left
archas joined
xnamedhas joined
sdjlbmrthas left
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 ↺
SteveFhas joined
sonnyhas left
sonnyhas joined
Peter Waherhas left
singpolymahas left
poliuxhas joined
singpolymahas joined
Peter Waherhas joined
Wojtekhas joined
Menelhas left
pablohas joined
Mikaelahas left
Menelhas joined
BASSGODhas joined
HoUsSeMhas left
zonsopkomsthas left
zonsopkomsthas joined
BASSGODhas left
singpolymahas left
singpolymahas joined
*IM*has left
*IM*has joined
Martinhas left
Martinhas joined
sdjlbmrthas joined
Menelhas left
1inguinihas left
Menelhas joined
BASSGODhas joined
atomicwatchhas left
BASSGODhas left
papatutuwawahas left
pablohas left
1inguinihas joined
mjk
👍
papatutuwawahas joined
BASSGODhas joined
atomicwatchhas joined
stphas left
singpolymahas left
Mikaelahas joined
Titihas left
davidhas joined
davidhas left
singpolymahas joined
xnamedhas left
farenrhas left
Menelhas left
Menelhas joined
kurisuhas left
HoUsSeMhas joined
xnamedhas joined
Menelhas left
Menelhas joined
farenrhas joined
kurisuhas joined
Arnehas joined
intosi@ik.nuhas left
intosi@ik.nuhas joined
HoUsSeMhas left
intosi@ik.nuhas left
intosi@ik.nuhas joined
BASSGODhas left
neshtaxmpphas left
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)
neshtaxmpphas joined
Zash
GSoC rewrite from scratch? :)
flashcorehas left
cal0pteryx (wurstsalat)
I know Gajim participated in earlier years, but it seems the effort which goes into mentoring does not pay off