jdev - 2022-12-16


  1. Sam

    In current Unicode using PRECIS that jid would fail the bidi rule and be invalid: https://go.dev/play/p/HylpIxghJ8P

  2. moparisthebest

    Luckily nothing in the wild uses precis or ever can

  3. 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"

  4. moparisthebest

    It's literally impossible to upgrade

  5. Sam

    It's quite easy to upgrade.

  6. Zash

    Sure hope you're not talking about Prosody, we're waiting for https://unicode-org.atlassian.net/browse/ICU-11981

  7. moparisthebest

    How would it work? Just allow half the network to not interop with the other half until everyone is upgraded? A flag day?

  8. Sam

    As opposed to the old thing which literally hardcore's an ancient version of Unicode, but somehow that's upgradable?

  9. moparisthebest

    No, we don't have an upgrade path that works

  10. moparisthebest

    Well or at all, precis exists but there is no way to upgrade the federated network to it

  11. Zash

    YOLO upgrade and see who breaks 🤷️

  12. Zash

    > impossible strong claims need strong evidence, posted to a mailing list, that I'm not going to read now

  13. moparisthebest

    Has it been a decade and no one has proposed an upgrade path yet?

  14. Zash

    No

  15. Zash

    PRECIS is dated 2015, come back in 2025

  16. moparisthebest

    9 years is close enough lol

  17. moparisthebest

    Or 8, maybe I should go to bed

  18. 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?

  19. 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)

  20. Zash

    Things created by remote entities are not validated as strictly, so things Should Work if everyone acts the same.

  21. flow

    moparisthebest, fwiw, I think there is intentionally no upgrade path. it's similar to IDNA 2003 to 2008

  22. 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?

  23. 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?

  24. Kev

    If you mean +notify, it's for automatic subscriptions.

  25. Sam

    Cool, that's what I thought. The text of this XEP makes *no* sense in any way that I can figure out then :)

  26. 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.

  27. Sam

    I don't understand how the word "filtering" fits into any of this, I guess

  28. 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

  29. flow

    Sam, does this help?

  30. Sam

    flow: I still have no idea what "filter" means there, same problem?

  31. 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

  32. Zash

    Imagine that remote servers send *all* notifications, but your local server filters them based unless you put the matching +notify in your disco

  33. Zash

    But then imagine that the local server doesn't do this, but the remote server sends, as the filtering isn't negotiated ...

  34. Sam

    Oooh, the remote server is sending everything, the local server is filtering? Why not just have the remote only send what's needed?

  35. Zash

    That's how it works in practice

  36. 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?

  37. Zash

    flow, remote servers enable and disable subscriptions or filtering based on incoming presence with caps and corresponding +notify changes

  38. flow

    ahh, yes, that makes a lot more sense

  39. 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.

  40. Zash

    (in the past)

  41. flow

    so if the user's server doesn't double check, then the user may end up with unsolicited notifications

  42. Zash

    correct. this was annoying. I believe it's no longer the case, so that's nice

  43. Zash

    However if you have multiple devices subscribed (with +notify) to the same node, two notifications are sent

  44. Zash

    And servers needing to keep state for *remote* users is a bit meh.

  45. Sam

    Okay, still no idea what the difference is in that case then

  46. Zash

    The difference is that it's Friday! Woooh

  47. Zash

    I'm not sure what difference, between what, you are referring to.

  48. 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

  49. Sam

    "Subscriptions or filtering"

  50. Sam

    Filter makes no sense here in my mind if it's just subscribing; what are we filtering in that case?

  51. 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

  52. Peter Waher

    but it is not 100% clear

  53. 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

  54. 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)