jdev - 2023-08-26

  1. Link Mauve

    “19:50:31 opal> profanity implements omemo and its one of the tui clients that does it reasonably well”, did you have any issue with poezio’s implementation of it?

  2. Link Mauve

    Trung too I guess, ↑

  3. opal

    >Los sitios web acreditan su identidad mediante certificados, los cuales son válidos durante un plazo determinado. El certificado de dev.poez.io caducó el 2023/8/20. >Código de error: SEC_ERROR_EXPIRED_CERTIFICATE lol thats their current status?

  4. opal

    cant even see their bug list

  5. opal

    oh theyre using this https://codeberg.org/poezio/poezio/issues

  6. opal

    >python thats why i didnt touch it

  7. MSavoritias (fae,ve)

    Is there somewhere a guide on what jingle xeps are required and how they all fit together? I read the 2023 conformance and says a whole lot of xeps but not how they fit together. From what I understand Its: 166-Jingle that does XEP-0353: Jingle Message Initiation that does XEP-0167: Jingle RTP Sessions with https://xmpp.org/extensions/xep-0177.html

  8. MSavoritias (fae,ve)

    or is RTP optional I can do only Jingle natively? Because reading the xeps it seems like RTP is just an alternative way of doing the initial handshake

  9. MSavoritias (fae,ve)

    which 353 should cover according to the compliance guide 2023

  10. Link Mauve

    MSavoritias (fae,ve), RTP is basically a way to encasulate whichever codec into an UDP socket.

  11. Link Mauve

    You might want TCP instead for XMPP.

  12. MSavoritias (fae,ve)

    ah so if i dont want UDP then i dont want RTP right?

  13. MSavoritias (fae,ve)

    and I just use 353 directly and a jingle transport

  14. MSavoritias (fae,ve)

    353 for the call setup instead of RTP that is

  15. MSavoritias (fae,ve)

    (I want to use cadet probably with jingle instead of tcp/udp)

  16. singpolyma

    MSavoritias (fae,ve): jingle is a framework for out of band data transfer. Are you trying to do calls? File transfer? Multiplayer game?

  17. Link Mauve

    MSavoritias (fae,ve), the easiest transport to get started, and the most compatible one, will be XEP-0261.

  18. MSavoritias (fae,ve)

    > MSavoritias (fae,ve): jingle is a framework for out of band data transfer. Are you trying to do calls? File transfer? Multiplayer game? I was thinking of calls and file transfers with it. Calls because its the only one in xmpp, and file transfer because its either this or http or inline binary to my understanding

  19. MSavoritias (fae,ve)

    so I might as well do file transfer with this too

  20. Link Mauve

    MSavoritias (fae,ve), if you want to do calls you want RTP, if you want file transfers you want XEP-0234.

  21. singpolyma

    So for calls do you want to be compatible with certain existing apps? Or trying something new?

  22. MSavoritias (fae,ve)

    Link Mauve, yeah th 234 was what i was looking for file transfer. but didnt you say RTP is for UDP basically?

  23. MSavoritias (fae,ve)

    > So for calls do you want to be compatible with certain existing apps? Or trying something new? I am looking into using https://xmpp.org/extensions/xep-0247.html > Jingle XML Streams for p2p with a trasport over the cadet protocol instead of udp/tcp

  24. singpolyma

    Calls are (almost) always UDP+RTP yes

  25. MSavoritias (fae,ve)

    with a trasport over the cadet protocol instead of udp/tcp*

  26. Link Mauve

    + DTLS-SRTP for the encryption.

  27. MSavoritias (fae,ve)

    so i was wondering if rtp is required for jingle calls at that point

  28. singpolyma

    If you want a new transport you probably want a new xep you make up for that

  29. MSavoritias (fae,ve)

    and how it all fits together

  30. Link Mauve

    MSavoritias (fae,ve), for calls you don’t want TCP semantics, you want packets to drop so new ones can get there quicker.

  31. MSavoritias (fae,ve)

    yeah i know. so then i am using jingle and 353 probably

  32. singpolyma

    Which one is 353?

  33. MSavoritias (fae,ve)


  34. singpolyma

    Sorry, I meant title

  35. MSavoritias (fae,ve)

    > MSavoritias (fae,ve), for calls you don’t want TCP semantics, you want packets to drop so new ones can get there quicker. Cadet has optional reliability per channel so probably i can disable the reliability for jingle

  36. MSavoritias (fae,ve)

    > Jingle Message Initiation

  37. MSavoritias (fae,ve)


  38. MSavoritias (fae,ve)

    > This specification provides a way for the initiator of a Jingle session to propose sending an invitation in an XMPP message stanza, thus taking advantage of message delivery semantics instead of sending IQ stanzas to all of the responder's online resources or choosing a particular online resource.

  39. singpolyma

    Ah yeah. So jingle core + jmi + new xep for cadet stream negotiating

  40. MSavoritias (fae,ve)

    yeah thats my thinking

  41. MSavoritias (fae,ve)

    good i got it correct ^^

  42. singpolyma

    You might want an rtp thing inside of cadet instead of inside of UDP, but will depend what your stack prefers

  43. MSavoritias (fae,ve)


  44. singpolyma

    Benefit of RTP is it has the envelopes for codec details, DTMF, etc stuff already

  45. MSavoritias (fae,ve)

    i was thinking of doing this for encryption: > XEP-0396: Jingle Encrypted Transports - OMEMO

  46. MSavoritias (fae,ve)

    > Benefit of RTP is it has the envelopes for codec details, DTMF, etc stuff already ah. hmm. yeah i will see

  47. singpolyma

    Is cadet not encrypted already?

  48. MSavoritias (fae,ve)

    yeah it is. so you also may argue that omemo is overkill in that case

  49. MSavoritias (fae,ve)

    i mean tls is useless

  50. Link Mauve

    The benefit of RTP is also that literally everything else is already supporting it.

  51. Link Mauve

    If you want to interoperate with any calling thing, you can be sure it will use RTP.

  52. singpolyma


  53. MSavoritias (fae,ve)

    well my client will be gnunet only

  54. MSavoritias (fae,ve)

    so in that sense idk how much i will need that compatibility anyway

  55. MSavoritias (fae,ve)

    at least thats my thinking

  56. Link Mauve

    You don’t want to be able to allow e.g. a recorder application? Or a gateway with the clear net?

  57. Link Mauve

    Or with SIP or such.

  58. moparisthebest

    plus you'd have to rewrite webrtc etc

  59. singpolyma

    They'll need to anyway

  60. singpolyma

    WebRTC has transport baked in

  61. MSavoritias (fae,ve)

    great. and i was thinking about it

  62. MSavoritias (fae,ve)


  63. MSavoritias (fae,ve)

    I dont plan to add gateway support no. why would i want SIP?

  64. singpolyma

    But there may be some libraries or gateways that are nice to use with RTP still. I'm not saying you have to use RTP but I'd suggest at least considering it unless it makes things harder for some reason

  65. MSavoritias (fae,ve)

    yeah it can be added as an extension probably at some point

  66. Link Mauve

    MSavoritias (fae,ve), to call people who are using the PSTN for instance.

  67. MSavoritias (fae,ve)

    its not like its set in stone

  68. moparisthebest

    my advice is even if you want to rewrite the world don't try to do it all at once, otherwise you'll probably never accomplish anything, much better to use existing components and rewrite bits at a time

  69. MSavoritias (fae,ve)

    im trying to lessen the amount of stuff i need to write yeah. both by lessening requirments and by reusing stuff

  70. MSavoritias (fae,ve)

    like the RDF library or i have an xml parser already in guile

  71. Link Mauve

    Gstreamer also has working RTP elements which you will likely want to use.

  72. MSavoritias (fae,ve)

    > MSavoritias (fae,ve), to call people who are using the PSTN for instance. im still confused. Why would i want: > Public switched telephone network

  73. singpolyma

    Yeah, so in short term the question is if you have a library that does RTP well then use it, otherwise maybe just stuff opus raw and decide later 🤷‍♂️

  74. MSavoritias (fae,ve)

    is it because of calling phones?

  75. Link Mauve

    Also for camera access, for video and audio encoding and decoding, etc.

  76. singpolyma

    Oh yeah, guile probably has gstreamer stuff then RTP becomes a win I bet

  77. moparisthebest

    adjusting quality based on link speed etc etc

  78. MSavoritias (fae,ve)

    yeah gstreamer is my other plan

  79. MSavoritias (fae,ve)

    since it uses glib and i have already bindings with guile

  80. MSavoritias (fae,ve)

    it could be easyish to use it

  81. MSavoritias (fae,ve)

    its probably not that tied to http like webrtc too so i can just get the codecs and rtp and abstract it over cadet

  82. Link Mauve

    WebRTC is pure RTP, it doesn’t do any HTTP thing.

  83. moparisthebest

    be really careful using an off-the-shelf XML parser for XMPP, that's been the source of countless vulns when not configured to ignore the 999 bad parts of XML

  84. Link Mauve

    999 laughs~

  85. moparisthebest

    yea you actually do want webrtc, it's just a sane default set of RTP things

  86. MSavoritias (fae,ve)

    yeah i am aware

  87. MSavoritias (fae,ve)

    i was talking about webrtc the package

  88. moparisthebest

    google libwebrtc is indeed disgusting lol

  89. MSavoritias (fae,ve)

    which i would like to avoid. hence why i was thinking of gstreamer

  90. MSavoritias (fae,ve)

    which afaik gstreamer is very good

  91. Link Mauve

    Does it do any HTTP?

  92. moparisthebest

    yea that's what dino did, it's also why dino is the least compatible webrtc client sadly

  93. MSavoritias (fae,ve)

    my library? no

  94. singpolyma

    libwebrtc isn't tied to http either. Or do any http thing. But it's annoying to build

  95. MSavoritias (fae,ve)

    there is no http support

  96. Link Mauve

    MSavoritias (fae,ve), Google’s.

  97. MSavoritias (fae,ve)


  98. MSavoritias (fae,ve)

    its the building process for me and all that stuff. it seems like a disaster

  99. MSavoritias (fae,ve)

    compared to gstreamer that is

  100. Link Mauve

    moparisthebest, what are the issues with compatibility?

  101. singpolyma

    moparisthebest: I think we've squeezed out most of the edges in dino now

  102. MSavoritias (fae,ve)

    plus monoculture and all that

  103. Link Mauve

    I don’t think I’ve ever encountered them, but I seldom call people and pretty much only Conversations.

  104. singpolyma

    Lots of options for webrtc stack, but in guile I expect gstreamer is easiest

  105. moparisthebest

    it's just not reliable at all, rings but won't answer, answers but won't connect audio etc etc I know singpolyma has been working on them a ton so maybe they are all better now

  106. MSavoritias (fae,ve)

    > Lots of options for webrtc stack, but in guile I expect gstreamer is easiest yeah pretty much

  107. Link Mauve

    moparisthebest, oh I never experienced those.

  108. Link Mauve

    I should try it more.

  109. moparisthebest

    xmpp calls is how I do 99% of my communication these days, 100% of communication with my family, so I use it a lot, they are all on either conversations or cheogram

  110. moparisthebest

    the other 1% are still xmpp calls on my end, but through jmp.chat to people who still use phone numbers

  111. Link Mauve

    Ah, I use text way more than calls.

  112. singpolyma

    Eww calls

  113. moparisthebest

    well me too but still do calls :)

  114. Link Mauve

    There is a single person I enjoy doing calls with, because it’s more like being in the same room doing different things and being able to talk with each other whenever we feel like it.

  115. Link Mauve

    And not like a call where you are expected to give your entire attention to the other person.

  116. singpolyma

    Yeah, that's how I use mumble

  117. MSavoritias (fae,ve)

    yeah mumble is nice.

  118. MSavoritias (fae,ve)

    voice rooms in xmpp though when ;)

  119. singpolyma

    I got like a third of the way there then stuff came up

  120. singpolyma


  121. Zash

    mumble over XMPP when?

  122. singpolyma

    Zash: you mean a gateway? Or just same UX?

  123. Zash

    Half-joking, but probably more towards the gateway thing.

  124. singpolyma

    Yeah, it's possible I think. Basically use a mumble server as the SFU for an xmpp voice room

  125. Zash

    Not sure what the protocols look like, maybe they could be squeezed thorugh Jingle?

  126. singpolyma

    There is a mumble WebRTC gateway already

  127. singpolyma

    So needs some adaptation for jingle

  128. Link Mauve

    Their protocol is basically sending raw opus packets to the server over TCP.

  129. moparisthebest

    yea there's https://github.com/johni0702/mumble-web & https://github.com/johni0702/mumble-web-proxy for instance

  130. MSavoritias (fae,ve)

    what xep do we use to put the omemo keys on the server? is it just pep or do we do XEP-0222: Persistent Storage of Public Data via PubSub

  131. Zash

    MSavoritias (fae,ve), yes

  132. singpolyma

    0222 is just suggestions for pep settings. So it's "just pep" but it may use those settings, they're probably sensible for this case

  133. MSavoritias (fae,ve)

    makes sense. another thing to add to compliance then next year

  134. Zash

    Except I'm not sure if base PEP supports 222/223

  135. MSavoritias (fae,ve)

    it only mentions 0223

  136. Zash

    https://xmpp.org/extensions/xep-0163.html#defaults > A PEP service MUST: > ... > - Support the "open", "roster", and "whitelist" access models.

  137. Zash

    Hm, Prosodys older implementation didn't do that

  138. Zash

    Prosodys *current* doesn't either :(

  139. Zash

    (missing the "roster" access model)

  140. singpolyma

    Really? Prosody doesn't have roster model yet?

  141. Zash


  142. singpolyma

    While I can emulate it with whitelist, that one and also one for certain roster groups would be super nice

  143. Zash

    Definitely a nice to have, but nothing so far really requires it and there hasn't been that much demand or interest in it

  144. singpolyma

    I assumed gajim's private profile stuff used roster

  145. Zash

    Maybe in the future if ~roster groups~ circles makes a return!

  146. Zash

    Private whatnow?

  147. singpolyma

    Gajim you can set profile (vcard4/avatar) do private iirc

  148. singpolyma

    Gajim you can set profile (vcard4/avatar) to private iirc

  149. Zash

    I thought it was a toggle between "open" and "presence"

  150. Zash

    "presence" and "roster" are confusingly named

  151. singpolyma

    Oh. Maybe I'm confusing roster and presence

  152. Zash

    "roster" is about roster _groups_

  153. Zash

    I mean, it'd be nice to restrict your profile to only especially trusted family/friends or so, but that's easier and probably better done with a separate account

  154. singpolyma

    Oh, roster is specifically the groups stuff. Ok. Yes, very nice do have but slightly less surprising that it's missing

  155. singpolyma

    Oh, roster is specifically the groups stuff. Ok. Yes, very nice to have but slightly less surprising that it's missing

  156. singpolyma

    In general I want to avoid ever having more than one jid per persona

  157. singpolyma

    (except for my 6000 test JIDs of course...)

  158. Zash

    > Treat the account owner's bare JID (<localpart@domain.tld> or <domain.tld>) as a collection node (i.e., as the root collection node for the account's virtual pubsub service). Collection node?!

  159. MSavoritias (fae,ve)


  160. MSavoritias (fae,ve)

    This maybe?

  161. MSavoritias (fae,ve)

    XEP-0248: PubSub Collection Nodes

  162. Zash

    I know what it is, I'm wondering why it's mentioned in PEP

  163. Zash

    Collection Nodes were removed from XEP-0060 at some point in the distant past

  164. Zash

    You can still find traces of it, wondering if this is one such trace

  165. singpolyma

    Wow, even 0060 can have things removed? I thought that's where we put everything

  166. Zash

    So goes the legend