regarding message routing 2.0: can't we just make servers to always carbon messages to local users?
zinid
so if there is user@server/r1 and user@server/r2, then a message to user@server will be routed to r1 and r2, as well as a message to user@server/r1 will be routed to both r1 and r2
sezuanhas joined
Zash
Bare JID routing like that is already allowed. Full JID forking would be problematic.
dwdhas left
zinid
Zash: yes, no problems with bare JID routing, but what problems do you see with forking?
Zash
Non-chat messages basically.
zinid
example?
sonnyhas joined
Zash
IBB file transfer, MAM responses. Basically stuff that maybe shouldn't have been messages to begin with, but we don't have a generic non-message payload container.
dwdhas left
dwdhas left
zinid
what about using 'no-copy' for them?
Zash
Don't you also get roughtly the same behaviour if all clients just always send chat messages to the bare JID?
zinid
yes, but what to do with old clients?
Zash
Will old clients add 'no-copy'?
dwdhas left
Zash
What about old servers?
zinid
and what's wrong with them?
zinid
also, it's server responsibility to add no-copy for MAM messages
Zash
> can't we just make servers [do stuff]
Zash
what
zinid
what
zinid
old servers will monkey with carbons, like it is now
dwdhas left
dwdhas left
Zash
I haven't looked too closely at message routing 2.0, but something that boils down to having carbons enabled by default is probably fine
zinid
I don't think these new rules affect s2s
zinid
or MUC, or whatever
zinid
so the idea is:
1) upgrade your server to always fork
2) upgrade mam module to inject no-copy
3) disable carbon module
zinid
ah, 2nd is not needed, the messages are local anyway, the server can detect it's a MAM message and won't carbon
Zash
Except MAM-MUC
zinid
no-copy in this case indeed
Zash
Tho Prosody doesn't carbon type=normal messages unless they have a body, and MAM payloads don't
zinid
I also don't see major difficulties if clients will receive forked mam messages
zinid
as well as ibb
zinid
sure, it will consume bandwidth, but not fatal
Zash
Most of those problems are actually avoided by only carboning type=chat or ( type=normal with body )
zinid
maybe
Zash
And no-copy for when that doesn't work
Zash
like OTR
Zash
But old clients using OTR doesn't add no-copy, so yay
zinid
is it a problem?
dwdhas left
zinid
I mean a user will experience something weird?
zinid
or is it just traffic problem?
Zash
I don't know, never used OTR
Zash
OTR not doing well with multiple clients can most likely cause weirdness
zinid
same here :D
dwdhas left
dwdhas left
Wiktorhas joined
dwdhas left
dwdhas left
dwdhas left
Wiktorhas joined
zinid
receipts are of type normal, hehe
Zash
Are they? Not the same type as the message being acked?
Zash
Chat states are weird.
dwdhas left
zinid
Zash: I just grepped 'type' in receipts XEP and didn't find any mention about it
Zash
Needs clarification perhaps?
zinid
or maybe it's described in other words
zinid
regarding chat states: "This protocol SHOULD NOT be used with message types other than "chat" or "groupchat"
zinid
"The 'type' attribute for content messages and standalone notifications SHOULD be set to a value of "chat" (for one-to-one sessions) or "groupchat" (for many-to-many sessions)."
zinid
I'm thinking to implement this stuff on my local server to check corner cases
ralphmhas joined
dwdhas left
dwdhas left
dwdhas left
sonnyhas left
dwdhas left
stefandxmhas left
dwdhas left
sonnyhas joined
Ge0rG
I'm going to write another mail to standards@ about how broken message type is. Acks and CSN are on my list
dwdhas left
Ge0rG
Also the problem is not carbons, the problem is rerouting of full JID messages to a different client if the first client just went offline
Ge0rG
Carbons have their own, related problems, but the current carbon rules are so vague that even an ancient transcribing monk would fulfill them.
Zash
https://xmpp.org/rfcs/rfc6121.html#rules-localpart-fulljid-nomatch all this?
Ge0rG
Zash: yeah. I was told that ejabberd will violate that and reroute 'normal' messages as well, because they are used by many clients instead of chat.
TL;DR full jid messages to an non-existent resource are treated exactly as bare jid messages
Zash
normal and chat types are treaded the same
Ge0rG
Zash: and headline will be sent to all resources?
Zash
headline to bare
Zash
Yes
Ge0rG
Headline to non existent will be sent to bare, then to all.
Zash
Right-o
Ge0rG
Yay for standard compliance.
zinid
I think the changes we're talking about should be atomically applied to the server
zinid
so we fix all issues in one go
Ge0rG
zinid: there is no easy fix.
dwdhas left
ralphmhas joined
zinid
why would we bounce messages if they are already forked?
dwdhas left
Ge0rG
Bounce = ?
zinid
re-route
zinid
or maybe that's not the same as bounce
zinid
I'm lost ;)
Ge0rG
Please state the nature of the technical emergency.
zinid
you're so funny
Ge0rG
I know 😛
alacerhas joined
dwdhas left
dwdhas left
Ge0rG
There is forking, rerouting and carbon copying. And then there is MUC that sends a new messages that might or might not have the same properties as the message you sent to the muc
dwdhas left
uchas joined
uchas joined
uchas joined
zinid
what's the difference between them?
danielhas left
zinid
forking is creating exact duplicates as I undersand, unlike carbons with wrappers
danielhas joined
zinid
and what is re-routing? I cannot find it in the RFC
dwdhas left
Zash
> If there is more than one resource with a non-negative presence priority then the server MUST either (a) deliver the message to the "most available" resource or resources (according to the server's implementation-specific algorithm, e.g., treating the resource or resources with the highest presence priority as "most available") or (b) deliver the message to all of the non-negative resources that have opted in to receive chat messages.
zinid
" that have opted in to receive chat messages"?
zinid
I didn't get it
Zash
Have sent presence that doesn't have priority with a negative value
Zash
So basically that part is redundant with "non-negative resources"
zinid
ok
zinid
so the RFC allows to fork by default?
ralphmhas joined
Zash
Sounds like
zinid
so nothing should be changed ;)
Zash
Everyhing is fine.
Ge0rG
It depends on message type.
Ge0rG
Zash: you can't quote only one of the four relevant sections and claim everything is fine!
dwdhas left
Zash
I just did!
Ge0rG
Damn. It looks like you can. But I won't let you get away with it!
la|r|mahas joined
la|r|mahas joined
la|r|mahas joined
la|r|mahas joined
jubalhhas joined
jubalhhas left
zinid
there is weird shit in ejabberd regarding this re-routing thingy
zinid
fixed by 6 contributors
Ge0rG
In my understanding, rerouting is when a message to a full JID is sent by the server to a different full jid
zinid
yes
ralphmhas joined
zinid
8.5.3.2 from the RFC
Ge0rG
That is only allowed to happen with type=chat messages.
Ge0rG
But the servers violate it
jubalhhas joined
zinid
ejabberd applies the same rule for chats and normals
zinid
from what I understand from the code
dwdhas left
Ge0rG
Yes, because some clients send 'normal' and users complain if the messages don't arrive
dwdhas left
zinid
other message types are dropped silently
Ge0rG
You should send back errors, that helps kicking out zombies from MUCs
zinid
for groupchat?
zinid
or both groupchat and headline?
sonnyhas joined
Ge0rG
It shouldn't hurt for all of them
Ge0rG
Except error of course
zinid
I'm not sure, the last rules were written by Holger
zinid
I think he did that on purpose
zinid
so need to ask him first
Zash
Can we take a moment to complain about Github sending markdown as "text/plain"
Ge0rG
He changed back normal rerouting. It was disabled for a short time and people complained
Ge0rG
Zash: stop derailing
Zash
Aw
zinid
ah, groupchats are bounced indeed
zinid
only headlines are dropped
zinid
wonderful
Ge0rG
Good enough
Zash
Did ejabberd drop the thing where it expects the receiving server to fork PEP notifications?
zinid
Zash: no idea :) I never wrote routing rules for ejabberd :)
Zash
Or was it that it expected the receiving server to filter?
Zash
Sending to the bare jid and having the receiver fork and apply filters would have been neat, if negotiated.
zinid
yes, ejabberd expected remote servers to filter peps, but we was severely blamed for this and removed it
zinid
but I still think it's much better idea than collecting caps from whole world
pep.
Zash> TL;DR full jid messages to an non-existent resource are treated exactly as bare jid messages < that breaks biboumi direct messages iiuc :(
pep.
But maybe I should see first why it doesn't get a unavailable presence
Zash
pep.: my opinion on that is that IRC and XMPP bridges are inherently impossible to get right.
zinid
Zash: that's a problem with all gateways, that's why I stopped fiddling with them
pep.
Well here proosdy is not following the spec, or did I get that right?✎
pep.
Well here proosdy is not following the spec, or did I get that wrong?✎✏
pep.
Well here prosody is not following the spec, or did I get that wrong? ✏
Zash
Uh, to many contexts at the same time
Zash
But those are chat messages, correct?
pep.
yes
Zash
And chat messages to a non-existent full JID are to be sent to any available resource according to the RFC.
pep.
hmm, ok I got it wrong then
stefandxmhas joined
danielhas left
Ge0rG
pep.: I've changed my comment on #3304 recently
pep.
I see. So my only hope is for biboumi to catch unavailable presences?
pep.
From these resources
Ge0rG
pep.: RACE CONDITIONS!!1!!
pep.
Why are computers borken like that :(
danielhas joined
Ge0rG
Because they consist of a dozen abstraction layers piled up on a little brick of sand
zinid
Tons of legacy crap
zinid
Tcp, ipv4, and so on
jonaswhas joined
jonasw
so much for poezio reconnecting
dwdhas left
Kevhas left
dwdhas left
Kevhas left
stefandxmhas left
waqashas joined
sonnyhas joined
dwdhas left
jerehas joined
dwdhas left
dwdhas left
dwdhas left
jubalhhas joined
jerehas left
jerehas joined
sezuanhas left
stefandxmhas joined
Guus
dwd, not in open_chat?
Guus
(I've asked a _very_ intelligent question there)
xnyhpshas joined
Bunnehhas joined
danielhas left
Bunnehhas left
Bunnehhas joined
stefandxmhas left
jubalhhas left
ralphmhas joined
Bunnehhas left
Bunnehhas joined
ralphmhas joined
Bunnehhas left
Bunnehhas joined
Zashhas left
Zashhas left
tuxhas joined
ralphmhas joined
Testinatorhas joined
Testinator
-certinfo muc.xmpp.org
Bunneh
Testinator: muc.xmpp.org has an untrusted certificate that expired 13 hours and 42 minutes ago issued by Let's Encrypt Authority X3
Testinator
Ping intosi, other iteam people. Cert alert!
Guus
other iteam people: please educate me
jerehas joined
tuxhas joined
Zashhas joined
dwdhas left
Guushas left
jubalhhas joined
dwdhas left
jerehas joined
xnyhpshas left
danielhas left
xnyhpshas joined
Guushas left
Guushas left
SamWhitedhas joined
Guushas left
Guushas left
ralphmhas joined
Tobiashas joined
ralphmhas left
ralphmhas joined
jubalhhas left
stefandxmhas joined
Guushas left
jubalhhas left
Bunnehhas left
stefandxmhas left
jubalhhas left
ralphmhas joined
sonnyhas left
sonnyhas joined
Guushas left
nycohas left
nycohas joined
Guushas left
mimi89999has joined
Bunnehhas joined
Guushas left
Bunnehhas left
jubalhhas left
Bunnehhas joined
ralphmhas joined
Bunnehhas left
ralphmhas left
Bunnehhas joined
Bunnehhas left
Bunnehhas joined
ralphmhas joined
danielhas left
danielhas joined
dwdhas left
dwdhas left
dwdhas left
sonnyhas left
sonnyhas joined
dwdhas left
jubalhhas joined
dwdhas left
dwdhas left
Bunnehhas left
Bunnehhas joined
dwdhas left
dwdhas left
ralphmhas joined
dwdhas left
dwdhas left
dwdhas left
dwdhas left
dwdhas left
dwdhas left
dwdhas left
dwdhas left
ralphmhas left
Valerianhas joined
dwdhas left
jerehas joined
dwdhas left
dwdhas left
jubalhhas left
dwdhas left
dwdhas left
Valerianhas left
ralphmhas joined
dwdhas left
danielhas left
lumihas joined
stefandxmhas joined
dwdhas left
dwdhas left
dwdhas left
dwdhas left
dwdhas left
ralphmhas left
dwdhas left
dwdhas left
dwdhas left
moparisthebesthas left
moparisthebesthas joined
dwdhas left
jerehas joined
stefandxmhas left
dwdhas left
Guushas left
dwdhas left
ralphmhas joined
dwdhas left
dwdhas left
dwdhas left
dwdhas left
ralphmhas joined
dwdhas left
dwdhas left
dwdhas left
lumihas joined
dwdhas left
danielhas left
SamWhitedhas left
dwdhas left
dwdhas left
sonnyhas joined
dwdhas left
dwdhas left
dwdhas left
dwdhas left
nycohas left
dwdhas left
nycohas joined
dwdhas left
danielhas left
danielhas joined
dwdhas left
dwdhas left
lumihas joined
dwdhas left
ralphmhas joined
dwdhas left
Guushas left
sonnyhas joined
dwdhas left
dwdhas left
ralphmhas left
ralphmhas joined
dwdhas left
jubalhhas joined
dwdhas left
dwdhas left
dwdhas left
dwdhas left
SamWhitedhas joined
dwdhas left
dwdhas left
dwdhas left
dwdhas left
Holger
zinid: Our routing rules should be fully 6121-compliant by now, with the one exception that type=normal messages to an unavailable full JID are rerouted rather than bounced.
Holger
zinid: We had one release that bounced them as per 6121, users went nuts so we reverted this.
zinid
Holger: got it
Holger
FWIW, I don't get the "opt in" part here either: "(b) deliver the message to all of the non-negative resources that have opted in to receive chat messages."
Holger
If it was just about non-negative priority then the "opt in" part of the sentence is totally redundant?
Holger
Whatever.
dwdhas left
Holger
> Most of those problems are actually avoided by only carboning type=chat or ( type=normal with body )
Nah, this goes wrong in many places.
zinid
Holger woke up :D
Holger
:-)
Holger
Regarding XMPP 2.0 (or what's it called?), it's not important but I would find it most intuitive if all messages to bare JIDs were forked (regardless of type) and all messages to full JIDs aren't. I.e. the bare JID addresses the account, the full JID the client.
waqas
I think we should skip 2.0, and move on to 3.0 directly.
zinid
3.0 is matrix?
zinid
so we should skip to 4.0
Holger
This will only replace carbons if outgoing messages are also forked, of course.
Holger
XMPP 17.10.
SamWhited
3.0 is we get rid of the RFCs and just declare that everything is pubsub!
dwdhas left
waqas
SamWhited: But pubsub isn't turing complete…
zinid
we need to use blockchain to be modern enough
waqas
Aware of Ethereum smart contracts?
zinid
those with 200Gb ledgers?
zinid
great technology
SamWhited
You're forgetting, storage space and RAM are free and infinite. My computer science education told me so.
dwdhas left
Guushas left
Ge0rG
Let's rewrite xmpp as a Turing machine
SamWhited
Also the entire world has 10 gig internet connections. These are facts that modern technologists know.
SamWhited
Ge0rG: with actual physical tape!
Ge0rG
SamWhited: gaffer tape?
Ge0rG
To make the messages stick!
zinid
SamWhited: I'm reading at the moment the paper where they achieved a great performance of blockchain within 100 nodes :D Cutting edge science
Ge0rG
The B in blockchain is for bullshit...
Zash
Holger, department of redundancy department indeed