jdev - 2023-08-21

  1. Guus

    MattJ do you know of any server that does something with RAA data? I'd be interested in seeing if things interop nicely.

  2. MattJ

    Guus: I have some prototype implementations somewhere, I can put something up for testing

  3. MattJ

    Possibly later today, or more likely tomorrow

  4. Guus

    No rush. I'm on holiday, with limited time away from kids, pools and other attention drains. This message is coming to you from aside a pool. 😎

  5. jonas’


  6. pep.

    A pool of messages?

  7. Guus


  8. Guus


  9. moparisthebest


  10. Link Mauve

    larma, we’re going to xHain, will you be there tonight?

  11. larma

    Link Mauve, I didn't plan to, but I can make it happen!

  12. MSavoritias (fae,ve)

    Why dont we use RDF databases instead of SQL for messaging apps? because with corrections and everything it seems that it is basically a graph full of interconnected things is it not?

    🫣️ 1
  13. singpolyma

    I mean, there's no rules. Prosody uses by default a text file

  14. singpolyma

    If you have a good RDF db in your stack, why not?

  15. MSavoritias (fae,ve)

    so it could be done. hmm. because i am thinking it could help a lot with relations.

  16. MSavoritias (fae,ve)

    especially regarding replies, reactions, edits and everything

  17. MSavoritias (fae,ve)

    and the other day a dev in here was saying about problems with ordering the messages. In the sense of getting a reaction or a deletion after you got the message and put in the row already. and then the ordering didnt make sense anymore

  18. MSavoritias (fae,ve)

    and there is a library for guile. nice

  19. lovetox

    corrections is the only thing that is a bit graph like

  20. lovetox

    nothing else comes to mind, its just always a message with some metadata

  21. MSavoritias (fae,ve)

    isnt it basically anything that attaches or modifies an existing message?

  22. lovetox

    and even with corrections, even if you do 20 corrections, they point all to the same message, so dont know what you call that, a graph with depth 1

  23. lovetox

    i dont know what the theoretical definition of a graph is

  24. lovetox

    if its one thing points to another thing, and thats already a graph, then yeah i guess many things are a graph

  25. lovetox

    but i doubt that where already where you want to use things optimized for graphs

  26. lovetox

    but i doubt thats the point where you want to use things optimized for graphs

  27. MSavoritias (fae,ve)

    with reactions its not one. you attach each participant that reacted to a message.

  28. lovetox

    no, you attach N reactions to one message

  29. lovetox

    its a classic 1:N relation

  30. MSavoritias (fae,ve)

    yeah but dont you say who reacted?

  31. lovetox

    yes but this is metadata of the reaction, so you have a 1:1 releation to a JID table

  32. lovetox

    or even no relation and simply store the jid

  33. lovetox

    but anyway, i have no clue about graphs or databases for that, so maybe ignore me :D

  34. MSavoritias (fae,ve)

    heh. im doing all this reading because you said the other day that storage is important. So you already helped ^^

  35. lovetox

    at least until now i didnt have the feeling im limited by the relational database

  36. MSavoritias (fae,ve)


  37. lovetox

    but now you go me interested, seems one benefit of a graph database is, that you can add properties to the nodes without costly schema changes and migrations

  38. MSavoritias (fae,ve)

    yeah i read that too

  39. lovetox

    and thats what at least happens from time to time with a new XEP, the message gets new metadata, so i need to add a new foreign key to a new table that holds this new information

  40. MSavoritias (fae,ve)

    and also there is no ordering problem to my understanding. like the problem you said the other day when you get a correction to message after having the message already in the db

  41. MSavoritias (fae,ve)

    also > Also they handle internationalised content better than typical SQL databases - e.g. you can have multiple values in different languages.

  42. MSavoritias (fae,ve)

    and the more advanced searching and connection finding could have some interesting usages

  43. moparisthebest

    > also >> Also they handle internationalised content better than typical SQL databases - e.g. you can have multiple values in different languages. Or you could just design your SQL schema to do this

  44. moparisthebest

    Sounds like it's just a higher level tool, which comes with trade-offs, I'll be interested if you find it to be a better fit or not

  45. lovetox

    but it seems graph databases focus on anlayzing relations, its particular for use cases, like fraud detection, where you can find patterns in the relations and analyze them

  46. lovetox

    i dont see where we need something like that, in messaging its just always, when i load the data, give me everything related to this message

  47. MSavoritias (fae,ve)

    agreed for messaging it may be overkill

  48. moparisthebest

    An SQL database often has a "graph of relations" too

  49. MSavoritias (fae,ve)

    i plan to make something else personally

  50. Zash

    Relational databases are relational???? :)

  51. moparisthebest

    Well not prosody's schema 🤣

  52. edhelas

    I worked on some relational DB at my job that were not that relationals

  53. edhelas

    But that's another topic

  54. MSavoritias (fae,ve)

    i was vaccuming a lot and cleaning fake tables

  55. lovetox

    did anyone implement the feature, that a user can send messages even when offline, and the client sends it later delayed?

  56. moparisthebest

    Conversations has that

  57. MSavoritias (fae,ve)

    Does it? Sometimes it just errors for me and wants me to try again after disconnect

  58. lovetox

    im a bit scared of it, seems like a thing where you walk in with a naive implementation and then you fix a year long bugs

  59. MSavoritias (fae,ve)

    It does have waiting though. So maybe just a bug somehow

  60. MSavoritias (fae,ve)

    > im a bit scared of it, seems like a thing where you walk in with a naive implementation and then you fix a year long bugs Why would it have year long bugs?

  61. lovetox

    dont know, its a feeling

  62. lovetox

    seems like there are many things that can happen, you learn after implementing it

  63. lovetox

    i guess single chat is easier, there is not really anything that can reject your messages, everything is just one way

  64. lovetox

    but for MUC i think its not that easy, you send stuff out, and later learn if it really happend that way you want it

  65. lovetox

    but maybe i should limit this to messages

  66. lovetox

    stuff like reactions, message moderation, banning people etc, stuff that needs IQ flow, its tricky to display this later if it worked, or not

  67. MSavoritias (fae,ve)

    Hmm. I wonder how true it is. Because i planning to make an offline first client prepared for low and intermittent connectivity.

  68. singpolyma

    oh yeah, don't do it for iq flow stuff at least not in general case

  69. lovetox

    singpolyma, and how does this work, you send out the xml but store it in the database at the same time?

  70. lovetox

    or do you serialize some other object to the database?

  71. lovetox

    or only store it in memory? and when the application crashes its gone?

  72. singpolyma

    With Conversations (and forks) outgoing message is stored in database before being sent over xmpp

  73. lovetox

    do you use sm acks to notice that someone successful was sent?

  74. lovetox

    do you use sm acks to notice that somethin successful was sent?

  75. singpolyma

    I'm not completely sure, but that makes sense

  76. lovetox

    like how would you otherwise know that a message in single chat was successfully sent?

  77. lovetox

    in MUC its easier, as you will see a reflection

  78. singpolyma

    Right. I haven't been in that part of the code but I expect it's sm related

  79. moparisthebest


  80. moparisthebest

    > According to Google PlayStore, apps that contain or feature user-generated content (UGC), which include platforms like Twitter, Facebook, and Threads, must implement robust, effective, and ongoing UGC moderation. Google describes UGC as the content which is contributed to an app by users and which is accessible by “at least a subset of the app's users”.

  81. moparisthebest

    So... All XMPP and email apps on Google play are in violation of this and Google just hasn't noticed yet?

  82. singpolyma

    I think UGC means public-ish and/or promoted by the app. So yes Conversations got hit by this for their public MUC search

  83. singpolyma

    web browsers get a pass probably because you have to know the url? so if you have to know the muc jid it's probably ok also

  84. moparisthebest

    I'm not so sure they see it that way

  85. moparisthebest

    Conversations directs you to create an account on conversations.im etc

  86. singpolyma

    Yes, but when a reviewer looks at your app how will they find the unmoderated content?

  87. moparisthebest

    They won't, but a user can report it

  88. singpolyma

    I guess we'll find out if it comes to that

  89. singpolyma

    I am planing to maybe make a moderated / curated version of sjn partly because of this