-
Sam
In current Unicode using PRECIS that jid would fail the bidi rule and be invalid: https://go.dev/play/p/HylpIxghJ8P
-
moparisthebest
Luckily nothing in the wild uses precis or ever can
-
Sam
It works great; some people are just too conservative and refuse to upgrade because "using ancient versions of Unicode is how it's always been done"
-
moparisthebest
It's literally impossible to upgrade
-
Sam
It's quite easy to upgrade.
-
Zash
Sure hope you're not talking about Prosody, we're waiting for https://unicode-org.atlassian.net/browse/ICU-11981
-
moparisthebest
How would it work? Just allow half the network to not interop with the other half until everyone is upgraded? A flag day?
-
Sam
As opposed to the old thing which literally hardcore's an ancient version of Unicode, but somehow that's upgradable?
-
moparisthebest
No, we don't have an upgrade path that works
-
moparisthebest
Well or at all, precis exists but there is no way to upgrade the federated network to it
-
Zash
YOLO upgrade and see who breaks 🤷️
-
Zash
> impossible strong claims need strong evidence, posted to a mailing list, that I'm not going to read now
-
moparisthebest
Has it been a decade and no one has proposed an upgrade path yet?
-
Zash
No
-
Zash
PRECIS is dated 2015, come back in 2025
-
moparisthebest
9 years is close enough lol
-
moparisthebest
Or 8, maybe I should go to bed
-
moparisthebest
Probably if all XMPP servers started validating local accounts are valid with both precis and stringprep, and then we wait a decade, we can probably remove the stringprep code?
-
Zash
Prosody validates locally created things (user and MUC localparts, MUC nicknames) according to stringprep, not much else we can do until ICU gains support (or someone RIIRs all our C code)
-
Zash
Things created by remote entities are not validated as strictly, so things Should Work if everyone acts the same.
-
flow
moparisthebest, fwiw, I think there is intentionally no upgrade path. it's similar to IDNA 2003 to 2008
-
Sam
So in pubsub you can subscribe/unsubscribe, obviously, which is how I've always used it. There's also "filtered notifications" where you advertise nodes in caps, which I always thought was an explicit "go ahead and subscribe me to these nodes so I don't have to do it every time", but apparently it's a filter so you don't get notifications for all nodes, but I don't actually understand why I would be getting all nodes because I haven't subscribed to them, what am I missing here about pubsub?
-
Sam
Is it just in case some other client subscribed with the bare JID? If you weren't already getting events, does using filtered notifications automatically subscribe you, or do you still have to manually subscribe to each node you want locally?
-
Kev
If you mean +notify, it's for automatic subscriptions.
-
Sam
Cool, that's what I thought. The text of this XEP makes *no* sense in any way that I can figure out then :)
-
Zash
Sam, from the client perspective, whether you are implicitly subscribed to everyone's PEP nodes with notifications filtered locally, or automatically subscribe based on +notify makes little difference. So it could be done either way on the server side.
-
Sam
I don't understand how the word "filtering" fits into any of this, I guess
-
flow
with PEP, if you share presence with a contact, then you are subscribed to its virtual pubsub service, however your server will filter pubsub notifications from this server based on +notify
-
flow
Sam, does this help?
-
Sam
flow: I still have no idea what "filter" means there, same problem?
-
flow
Sam, imagine that your server receives all notifications and filters out those which are not explicitly announced by the client as supported via +notify
-
Zash
Imagine that remote servers send *all* notifications, but your local server filters them based unless you put the matching +notify in your disco
-
Zash
But then imagine that the local server doesn't do this, but the remote server sends, as the filtering isn't negotiated ...
-
Sam
Oooh, the remote server is sending everything, the local server is filtering? Why not just have the remote only send what's needed?
-
Zash
That's how it works in practice
-
flow
Zash, so a user server is constantly subscribing and unsubscribing from PEP nodes of other users depending on clients that get online (with new +notify) and offline?
-
Zash
flow, remote servers enable and disable subscriptions or filtering based on incoming presence with caps and corresponding +notify changes
-
flow
ahh, yes, that makes a lot more sense
-
Zash
Tho I don't know, IIRC ejabberd did the thing where everything was broadcast to everyone all the time, while Prosody does what I just said.
-
Zash
(in the past)
-
flow
so if the user's server doesn't double check, then the user may end up with unsolicited notifications
-
Zash
correct. this was annoying. I believe it's no longer the case, so that's nice
-
Zash
However if you have multiple devices subscribed (with +notify) to the same node, two notifications are sent
-
Zash
And servers needing to keep state for *remote* users is a bit meh.
-
Sam
Okay, still no idea what the difference is in that case then
-
Zash
The difference is that it's Friday! Woooh
-
Zash
I'm not sure what difference, between what, you are referring to.
-
Peter Waher
I read XEP-0163 (Example 5) that it is the publisher’s server that filters (not the subscribers server), and that the publisher’s server forwards notifications to clients that have the corresponding +notify
-
Sam
"Subscriptions or filtering"
-
Sam
Filter makes no sense here in my mind if it's just subscribing; what are we filtering in that case?
-
Peter Waher
I read XEP-0060 (§9.2 Filtered Notifications) to mean the same: It’s the responsibility of the publisher’s server not to forward notifications to clients that do not have the corresponding +notify
-
Peter Waher
but it is not 100% clear
-
flow
Sam, subscribing here means subscribing to the whole virtual pubsub service of the user and filtering the nodes for which you will receive notifications
-
flow
so with PEP it's like a subscription to the whole virtual pubsub service, whereas with traditional PubSub, you subscribe to nodes (of a pubsub service)