jdev - 2019-09-05


  1. Ge0rG

    ...the moment you realize that you need to also add an <x/> element to MUC-PM delivery receipts.

  2. jonas’

    they *are* MUC-PMs

  3. jonas’

    I considered that obvious :)

  4. pep.

    https://lab.louiz.org/poezio/slixmpp/blob/master/slixmpp/plugins/xep_0059/rsm.py#L28 why would amount default to 10? `max` in the XEP is not defaulting to anything is it?

  5. pep.

    I guess this specific implementation expects a value, because later on it does `self.query[self.interface]['rsm']['max'] = str(self.amount)`, and everybody knows that `str(None)` is of course `"None"`

  6. marc0s

    just to confirm i'm not missing anything from reading '48, '60 and '163... there's no standardised way of storing/retrieving bookmarks individually instead of as a list of them, right? even when using pubsub you're expected to treat the list of bookmarks as a single item ("current"), or am i wrong?

  7. Zash

    Correct

  8. Zash

    But now, introducing Bookmarks 2: https://xmpp.org/extensions/xep-0402.html

  9. marc0s

    thanks Zash, I didn't thought it was really serious given that title, actually; will give it a read

  10. Zash

    But then you get the problem that you can only have one bookmark with older PEP implementations.

  11. Zash

    Probably want all these to just be backed by the same store serverside

  12. Ge0rG

    If only we didn't have to cope with legacy systems.

  13. marc0s

    i can consider myself lucky; it's for a custom implementation in a non-federated service so...

  14. Kev

    I think very often we don't, and our determination to make life hard for ourselves by doing so is a hindrance.

  15. Ge0rG

    Kev: it is a hindrance, but my gut feeling is that by breaking backward compatibility, we will drive ourselfs irrelevant even faster

  16. Kev

    Backwards compatibility is one thing.

  17. Kev

    We often try to ensure *forward* compatibility, and that's a world of pain.

  18. Ge0rG

    We often also overengineer our XEPs

  19. Kev

    I'm not sure to what extent that's true. We often try to make big generic solutions, and then years later find people are using them in interesting and unexpected ways. 60'd be a good example of a big complex thing that's seeing lots of use because of it's genericness (not in IM so much, but in other interesting systems).

  20. Kev

    In other times when we've tried to go for simple, pragmatic solutions to get things working, we've found dealing with the edge cases has been unpleasant (45, 308, etc.).

  21. Kev

    I guess protocol design is hard, maybe?

  22. Ge0rG

    0045 is not really simple, it comes with a huge number of unspecified corner cases.

  23. MattJ

    That's kinda what Kev said, right?

  24. Ge0rG

    I'd consider 0308 as almost elegant, except for three minor points: the number of old messages that may be corrected, the limitation to the full JID (that's gone now?), and the method to reference messages, which is a mess of its own and not the fault of 0308

  25. Ge0rG

    I'm saying that 0045 is the opposite of simple, pragmatic.

  26. Ge0rG &

  27. bent3n

    Hi I created openfire(v4.2.3) server on my virtual machine( ubuntu). When I tried using spark client 2.8.3 to login, I go this error '“certificate can’t be authenticated”. I got a similar error when I used pidgin. However, pidgin automatically corrected and I’m able to connect using pidgin. The thing is, I'm trying to connect using node-xmpp-client and I get this error: XMPP authentication error. What am I doing wrong ?

  28. bent3n

    jid: bent3n @localhost

  29. bent3n

    FQDN: localhost

  30. bent3n

    database: postgreSQL

  31. bent3n

    What am I doing wrong ?

  32. jonas’

    tom, so, what I did for that weather stuff is that clients request weather forecasts as they need it.

  33. jonas’

    the XMPP <-> Weather API proxy caches and reacts to rate-limiting HTTP status codes appropriately.

  34. jonas’

    I didn’t do polling and then publishing into pubsub, because the clients are often idle for several hours, not needing any updates, so that would simply save resources on all ends of the equation

  35. jonas’

    Also, back when I started that project, I wasn’t comfortable with PubSub yet :)

  36. tom

    is that the only reason you didn't use pubsub? If you had to do it all over again would you?

  37. Zash

    Where did that come from? /me scans archives

  38. tom

    I ask because meteorology is one of my interests

  39. jonas’

    Zash, operators@

  40. jonas’

    tom, I’m not sure, I think for the forecasts it doesn’t make sense to use PubSub still, at least not a normal PubSub service

  41. tom

    and I've done projects like that before, although my problems were more about getting the sensor data from the sensors to a server in zero-infrastructure areas

  42. jonas’

    if anything, the XMPP<->HTTP translator would have to be a PubSub service on its own

  43. jonas’

    so that clients can subscribe for updates based on their location

  44. tom

    I've been working on a dynamic self-healing mesh network

  45. jonas’

    publishing all weather forecasts for all possible locations doesn’t really make sense

  46. jonas’

    publishing all weather forecasts for all possible locations to pubsub doesn’t really make sense

  47. tom

    but the thing is, I still need something to buffer the scientific data until the server can be reached to ingest it

  48. tom

    I'm thinking because of the reliable nature of XMPP, I could just use an XMPP library and send stanzas with it and have the library buffer those in case it can't reach the server

  49. tom

    and when it does flush the buffer

  50. jonas’

    > reliable nature of XMPP

  51. jonas’

    I think that is a dangerous statement unless you really know what you’re doing

  52. tom

    well what should I know?

  53. jonas’

    you need to know about stream management, and you should be using IQs for data transfer

  54. jonas’

    be able to deal with duplicate deliveries

  55. jonas’

    that’s probably already a good start

  56. jonas’

    and have a plan for when the server is longer unreachable than you can buffer

  57. tom

    that's what I'm talking about

  58. jonas’

    also, what you’re describing sounds like a Delay/Disruption Tolerant Network, which is an active field of research in the context of which I actually wrote my Masters thesis

  59. tom

    atmospheric conditions change and because the network is dynamic, node all nodes are reachable at all times

  60. tom

    another thing I was looking at was A.L.F.R.E.D.

  61. tom

    alright fact exchange daemon, but that's not really suited for distributing large facts

  62. tom

    and ounce a fact is distributed it overwrites previous facts

  63. jonas’

    tom, maybe have a look at the Bundle Protocol (RFC 5050) and implementations thereof

  64. tom

    even if I were to cryptographically sign my facts there's still a DOS vector

  65. jonas’

    (being a mostly academic thing for now to my knowledge, the tooling is rather rough at the edges)

  66. tom

    thanks, i'll look into that

  67. tom

    What I was thinking so far was to use a fault tolerant layer2 such as the batman advanced routing protocol along with IPv6 multicast groups for distribution and use unicast for re-trans in case a fact was missed due to temporary islanding.

  68. tom

    but using XMPP pubsub as a convenient way to access the data casually

  69. tom

    but going back to this, there are some interesting XEPs that can make XMPP a little more distributed network-wise

  70. tom

    like the server-less zeroconf XMPP configuration where as client can speak directly to each other

  71. tom

    zeroconf is an ugly protocol but it does work

  72. tom

    jonas’, Can I read your thesis?

  73. tom

    you got a website?

  74. jonas’

    I do, but the thesis isn’t on there

  75. jonas’

    which I probably should fix at some point

  76. jonas’

    I’m not sure whether it’ll be useful to you -- it is rather narrowly-focused on implementing a DTN gateway for a sepecific use-case.

  77. jonas’

    (it’s "just" a Masters after all, not a PhD)

  78. jonas’

    it’s not on my universities website, so I guess I have to check with them before sharing it

  79. tom

    you don't own the rights to your thesis?

  80. jonas’

    I do

  81. jonas’

    but that doesn’t mean I didn’t grant an exclusive right

  82. jonas’

    although the code is under BSD-3-Clause