-
zinid
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
-
Zash
Bare JID routing like that is already allowed. Full JID forking would be problematic.
-
zinid
Zash: yes, no problems with bare JID routing, but what problems do you see with forking?
-
Zash
Non-chat messages basically.
-
zinid
example?
-
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.
-
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'?
-
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
-
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?
-
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
-
zinid
receipts are of type normal, hehe
-
Zash
Are they? Not the same type as the message being acked?
-
Zash
Chat states are weird.
-
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
-
Ge0rG
I'm going to write another mail to standards@ about how broken message type is. Acks and CSN are on my list
-
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.
-
Zash
I believe Prosody does so as well
-
Ge0rG
Zash: could you check the code please?
-
Zash
https://hg.prosody.im/0.10/file/0.10.0/plugins/mod_message.lua#l72 https://hg.prosody.im/0.10/file/0.10.0/plugins/mod_message.lua#l34
-
Zash
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.
-
zinid
why would we bounce messages if they are already forked?
-
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 😛
-
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
-
zinid
what's the difference between them?
-
zinid
forking is creating exact duplicates as I undersand, unlike carbons with wrappers
-
zinid
and what is re-routing? I cannot find it in the RFC
-
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?
-
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!
-
Zash
I just did!
-
Ge0rG
Damn. It looks like you can. But I won't let you get away with it!
-
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
-
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
-
zinid
ejabberd applies the same rule for chats and normals
-
zinid
from what I understand from the code
-
Ge0rG
Yes, because some clients send 'normal' and users complain if the messages don't arrive
-
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?
-
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
-
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 :(
-
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
-
jonasw
so much for poezio reconnecting
-
Guus
dwd, not in open_chat?
-
Guus
(I've asked a _very_ intelligent question there)
-
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
-
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.
-
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!
-
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.
-
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
-
Zash
And let's skip to XMPP 2000
-
zinid
didn't we pass this already?
-
zinid
the current state is ICQ2001b
- Zash is catching up
-
Zash
-certinfo muc.xmpp.org
-
Bunneh
Zash: Host unreachable: remote-server-not-found
-
Ge0rG
How is that possible?
-
Ge0rG
Ah, trailing whitespace