jdev - 2022-01-04


  1. admin

    I would like to apply for membership and need to obtain a wiki account Username in CamelCase: xnamed Email: xnamedx@gmail.com Real name: if not necessary I prefer not to make it public in the wiki or web logs

  2. qy

    The awful thing about matrix is that its really easy to do x-over-matrix but near impossible to do matrix-over-x without just being a homeserver

  3. qy

    So it kinda spreads by basic nature

  4. doge

    > The awful thing about matrix is that its really easy to do x-over-matrix but near impossible to do matrix-over-x without just being a homeserver Why's that

  5. qy

    Because of the requirement to maintain the full room state for anything to make sense

  6. qy

    Or, at least the auth chain

  7. qy

    Once youre doing that, you're already basically a homeserver, so there's no half-assing it really

  8. thomaslewis

    So many bad decisions in Matrix…

  9. doge

    > Because of the requirement to maintain the full room state for anything to make sense That's how it makes sure no messages are lost isn't it

  10. doge

    On jabber lost messages are common in my experience. One wrong circumstance and it starts failing

  11. qy

    Yup

  12. emus

    Dear Jabber / XMPP Devs, please take a look at this site and consider to make an entry for yourselve: https://xmpp.work/all-listings/

  13. nephele

    doge: Yes it makes sure messages aren't lost, in a sense. But i talso means that if your homeserver has a tiny difference in any validation alghorythm to any other homeserver that one of you will get effectively kicked out of any rooms you share, because the roomstate will be forked one that validation detail is triggered

  14. nephele

    You could add lua tables with a depth of like 1000 i think and then construct would defederate the room :D, there was also instances synapse would defederate and others would stay... it's all very finicky, either you have everything correct or it inevitably blows up

  15. nephele

    json tables... not lua

  16. doge

    "Fail fast" It's preferrable to know something's failed. Unlike in xmpp where when there's a failure you get some messages, lose some, get some duplicates and whatnot, you end up having to ask your interlocutor what they received and what they didn't receive, so basically do the acking yourself

  17. MattJ

    XMPP does its own acking... once your server acknowledges your message, messages get delivered or you get a delivery error. We also have positive delivery receipts.

  18. nephele

    doge: This isn't failing fast, it is more like an inherent design flaw, it means that every time one part of the federation can't handle a single message that the entire federation then kicks that part out

  19. doge

    MattJ: > XMPP does its own acking... once your server acknowledges your message, messages get delivered or you get a delivery error. We also have positive delivery receipts. Still losing messages is almost the norm here unfortunately nephele: > doge: This isn't failing fast, it is more like an inherent design flaw, it means that every time one part of the federation can't handle a single message that the entire federation then kicks that part out Well what else would they do? Tolerate an error?

  20. nephele

    Are you asking me "How would this design be fixed" or "How would you propose to handle this in the current design"?

  21. nephele

    As for my part: I've never had any messages be lost in xmpp

  22. MattJ

    doge, what server/clients are you using? Pidgin? :)

  23. nephele

    (I did however manage to make sure people lost messages they wrote to me in matrix :D)

  24. doge

    MattJ: conversations, gajim

  25. MattJ

    and do you get delivery receipts for the missing messages?

  26. nephele

    Matrix told me the joys of "message based html injection", that was quite fun to discover... the riot or element or vector client or whatever was absolutely horrible when dealing with their fancy formated html messages

  27. doge

    MattJ: yeah I also sometimes get duplicates, although that's gone now I think

  28. edhelas

    failled message delivery on XMPP ? which is also based on TCP ? 🤔

  29. MattJ

    doge, in which direction are messages getting lost? From you to your contacts, or contacts to you?

  30. doge

    MattJ: > doge, in which direction are messages getting lost? From you to your contacts, or contacts to you? Both

  31. MattJ

    Do you or your contacts use multiple devices?

  32. nephele

    edhelas: It's possible of course, the transport protocol is not the only thing to touch the message ;)

  33. doge

    MattJ: > Do you or your contacts use multiple devices? They do, so do I

  34. edhelas

    nephele yes, it is possible, but I actually want to know how

  35. doge

    Although I had messages lost even with a cobtact who didnt use multiple devs

  36. MattJ

    Does your server have MAM and Carbons support enabled?

  37. nephele

    Heh... Renga still needs to implement MAM

  38. nephele

    edhelas: yes, it would be interesting to figure out

  39. doge

    MattJ: mam perhaps. Although I've tried more than one server. Creep.im, draugr.de and then some. I found I actually had to have two accounts for when one server was down

  40. MattJ

    doge, both are necessarily if you want a decent experience, and they are supported and enabled by default on practically all servers these days ( https://compliance.conversations.im/test/xep0313/ )

  41. emus

    Dear Jabber / XMPP Devs, please take a look at this site and consider to make an entry for yourself: https://xmpp.work/all-listings/

  42. MattJ

    If you see a delivery receipt, it means the recipient's client received the message. If it's acknowledging messages and not displaying them, that's a bad client bug, not a protocol issue

  43. MattJ

    Also for it to reach that point, the message would be stored in the MAM archive, so cannot be lost

  44. doge

    All clients I've used happend to be buggy then

  45. edhelas

    all XMPP are buggy for sure

  46. MattJ

    I've not heard of anyone experiencing this issue, so the common factor seems to be you, your clients or your server

  47. doge

    MattJ: and my contacts'

  48. MattJ

    As I explained, losing messages is pretty difficult to achieve

  49. MattJ

    Right, all your contacts have you as a common factor :)

  50. doge

    MattJ: ok shoyld I be using smth different than conversations? I think it's about the most popular client, would be strange if it was also the most buggy one

  51. MattJ

    No, Conversations should be fine. I and many others use it all the time without such issues.

  52. jonas’

    what are the chances this is some obscure OMEMO issue?

  53. MattJ

    But it does require the server to be up to date with modern requirements (you can check this in the 'server info' section of the account details in the app, or at https://compliance.conversations.im/ )

  54. doge

    MattJ: > No, Conversations should be fine. I and many others use it all the time without such issues. Do you talk to many people with direct messages? Omemo?

  55. jonas’

    oh also creep.im has been added to some banlists, so some loss of connectivity is to be expected between creep.im and non-creep.im accounts.

  56. doge

    jonas’: creep.im is dead now, yeah

  57. doge

    So it was a good idea to have two accounts for that additional reason :)

  58. MattJ

    doge, yes to both, my whole family use Snikket (the Android app is 99.9% Conversations)

  59. doge

    MattJ: which server?

  60. MattJ

    A self-hosted Snikket server (which is Prosody)

  61. doge

    Oh, that may have been the reason

  62. doge

    For good experience

  63. msavoritias

    I havent had a single message bieg lost here either. Multiple servers and applications. Thanks for the heads up about creep btw.

  64. nephele

    I'm wondering for MAM, the specification sais that a server for it may not be an XMPP server, sounds like there could be a specific MAM suplying server next to the client for local history storage or so? Does something like that exist?

  65. MattJ

    nephele, an example I see is for clients to exchange history between each other, e.g. if you add a new client to your account and want to migrate past history to that new client

  66. MattJ

    But I don't know of anyone actually implementing that, it would have some issues

  67. nephele

    That could be a possible case, I was wondering if someone made something that stores history locally /next to/ an existing client, in the client I could probably fairly easily querry this local store then and only ask the server for newer messages

  68. MattJ

    You could, but 1) why? 2) it falls apart with E2EE

  69. nephele

    As a bit of background context: Renga did have local storing of chat history, but it was extremely messy (basically when the UI would get a new message and add it to the backlog it would also append it in the same manner to the local chatlog)

  70. Martin

    It falls apart with OMEMO, PGP or Ox should be fine. :)

  71. nephele

    Why would it fall apart with E2EE?

  72. Martin

    nephele: OMEMO uses forward secrecy so each message could be only decrypted once per key.

  73. nephele

    I don't really understand how that would be affected, is there something inherently which would prevent MAM working with OMEMO?

  74. nephele

    I haven't really looked at it much, but as i understand it if you have a session key to decrypt messages that key will work fine in the future to decrypt the same message again, so supposedly my client would have to store this key to decrypt backlog messages in the future anyway, I don't see how a local history store would conflict with that (as opposed to the history stored on the server)

  75. Link Mauve

    nephele, storing every single key expecting to download the messages again, is pretty much equivalent to just storing every single message.

  76. Link Mauve

    As you usually advance the key with each message (approximately).

  77. Link Mauve

    Plus, your MAM server could be configured to have a short retention time, and then you won’t be able to go back in time any longer.

  78. Link Mauve

    At JabberFR we keep personal archives for only two weeks, for instance.

  79. nephele

    As for my why: It seems like a much easier way to implement local message archiving and cut down on latency for backlog messages that I already have locally. (Would be the exact same codepath as MAM already would have anyhow :3)

  80. nephele

    Link Mauve: I don't know about you but i don't want to loose my backlog messages, ever. But that is also why I am on a personal server that can be configured as such

  81. MattJ

    Cut down on latency... you imply making a direct connection to the archive?

  82. nephele

    What do you mean by direct?

  83. MattJ

    I mean not via your normal XMPP connection

  84. Link Mauve

    nephele, then relying on MAM on any random server storing messages forever is not what you want in your client.

  85. nephele

    My idea would rather be to have a server running on the same machine as the client that basically /only/ does MAM, as a provider for the local cache of the client

  86. Link Mauve

    So storing the per-message decryption key without the message is a bit useless.

  87. Link Mauve

    nephele, most clients use a sqlite database or a (bunch of) text file for that.

  88. Link Mauve

    That way they don’t need to spawn a server.

  89. nephele

    What the on-disk store is is a bit beside the point, It seems to me to be an easy way to have the local history backed up without needing to have severall code paths in the client to deal with that.

  90. nephele

    Since basically: XMPP has specified a way I can get the backlog consistently, and I have to implement that anyway, it seems to make sense to use that for local backlog aswell, that way if the client ever displays for example more stuff about messages in the future it would also be visible from the local backlog stored messages.

  91. pep.

    Re http upload, the Expires header, what is it for? Is it also something the client has to pass in the PUT request? Or is it for the client to know when it expires, or both? And if the client doesn't pass it, what happens? Servers store that indefinitely? :P

  92. pep.

    (We worry about servers but do we worry about clients!)

  93. jonas’

    pep., the headers are to be opaque for the client

  94. jonas’

    pass them on, don't interpret tem

  95. jonas’

    pass them on, don't interpret them

  96. jonas’

    if you don't pass it on, the HTTP server may refuse your request

  97. pep.

    Ok well that isn't specified either iirc :/

  98. jonas’

    why?

  99. jonas’

    which part is missing?

  100. pep.

    why what

  101. pep.

    That the HTTP server may refuse the request, and that I have to pass the headers

  102. pep.

    It's implied, and yeah of course I see an Authorization header I get an idea, but it's not actually mentioned

  103. jonas’

    hah

  104. jonas’

    you're right

  105. jonas’

    there's no word in the XEP which says that you have to pass on the headers

  106. jonas’

    only that they exist, that you must validate them and do things with them, but not that you have to pass them on

  107. jonas’

    pep., mind making a patch?

  108. pep.

    Sure

  109. pep.

    It's implied when it says I shouldn't pass other headers

  110. pep.

    But that's a weird way of saying I have to pass these

  111. jonas’

    yep

  112. jonas’

    needs better wording

  113. Martin

    > In addition to the Content-Length and Content-Type header the client MUST include all allowed headers that came with the slot assignment. Not this?

  114. jonas’

    uh

  115. jonas’

    yeah, that'd be it

  116. pep.

    The "headers are opaque to the clients", is that also commonly accepted?

  117. Martin

    In 6.

  118. pep.

    Can I also put that in there?

  119. Martin

    https://xmpp.org/extensions/xep-0363.html#upload

  120. jonas’

    pep., you can add that to 7. (as a SHOULD NOT, I guess)

  121. pep.

    I'm actually curious why Expires goes through the client tbh :/

  122. jonas’

    pep., probably S3

  123. pep.

    Really we worry about servers but not about clients at all

  124. jonas’

    what is your concern with that regarding clients?

  125. pep.

    They can just skip that

  126. pep.

    Or extend it or..

  127. jonas’

    skip what?

  128. pep.

    The header

  129. jonas’

    that's their problem then

  130. pep.

    It's the receiving server's problem. They don't know what the XMPP server said

  131. jonas’

    it's the HTTP server's problem

  132. pep.

    Then why is that header even sent from the XMPP server

  133. jonas’

    to allow schemes where the XMPP and the HTTP server cannot or should not talk directly to one another

  134. pep.

    Trusting the client to relay

  135. jonas’

    no

  136. jonas’

    you'd not blindly trust the client

  137. jonas’

    you'd sign the headers, obviously

  138. jonas’

    using an HMAC or somesuch

  139. pep.

    Ah ok. What would that look like? More or less

  140. jonas’

    (like the "http_upload_external" protocol from prosody does, though it doesn't use headers)

  141. jonas’

    http_upload_external has a verification key which is (in version two) hmac(filename || content_type || size)

  142. jonas’

    this is part of the URL

  143. pep.

    That's also specified somewhere?

  144. jonas’

    here: https://modules.prosody.im/mod_http_upload_external.html

  145. pep.

    Ok

  146. jonas’

    but it doesn't matter for the client

  147. pep.

    Sure

  148. jonas’

    because it works within the boudnaries of '363

  149. pep.

    Thanks

  150. jonas’

    if you wanted / needed to pass on headers like Expires, those would also need to be signed, e.g. by including them in an HMAC you pass through the Authorization header

  151. jonas’

    but stuff like this allows the XMPP server to securely control parameters of the upload, such as lifetime, used content-type or even check the quota. and have the HTTP service be really dumb

  152. jonas’

    ("you" being the server side conglomerate in this case)

  153. jonas’

    but all of this are implementation details of the server side. adding "you should sign your headers because clients are evil" to the implementation/security notes makes total sense though

  154. pep.

    I mean if we start considering servers evil we might want to do so for clients as well

  155. jonas’

    we generally do ;)

  156. pep.

    Dunno. I feel like there's part of the community who has make a shift from considering clients evil to the opposite, and now I feel it's either one or the other :P

  157. pep.

    Dunno. I feel like there's part of the community who has made a shift from considering clients evil to the opposite, and now I feel it's either one or the other :P

  158. jonas’

    right

  159. jonas’

    I do not share that viewpoint, but YMMV and in the end, it doesn't matter. if you see something, fix something.

  160. pep.

    Here, pushed https://github.com/xsf/xeps/pull/1140

  161. pep.

    Ah linkmauve has already added a thing for multiple headers

  162. pep.

    I guess that shouldn't conflict (spec-wise) with my changes. But I can rebase on top of that if necessary

  163. qy

    > edhelas wrote: > all XMPP are buggy for sure All xmpp devs are entemologists

  164. edhelas

    That's why we like to leave bugs everywhere

  165. qy

    Exactly

  166. xnamed

    Alex, Ge0rG, sysops, have you read my message?

  167. Ge0rG

    xnamed: sorry, say what?

  168. xnamed

    > I would like to apply for membership and need to obtain a wiki account > Username in CamelCase: xnamed > Email: xnamedx@gmail.com > Real name: if not necessary I prefer not to make it public in the wiki or web logs

  169. Ge0rG

    xnamed: xnamed is not camelcase, it will become Xnamed

  170. xnamed

    It's ok

  171. Ge0rG

    > The user account for Xnamed (talk) has been created. Please check your email

  172. xnamed

    Ge0rG: thank you

  173. emus

    xnamed: I think its mandatory to place your real name. However, you can do most things here without being a XSF member ralphm:

  174. xnamed

    emus: I'm planning to change my real name in the future

  175. Ge0rG

    emus: the real name is only mandatory for XSF membership, not for editing the wiki

  176. emus

    yes, but it was stated to plan to apply

  177. xnamed

    Ge0rG: I asked for a wiki account because I want to become XSF member

  178. emus

    xnamed: If you prefer to stay anonymous you can still do many things incl. xep development, right?

  179. pep.

    And nobody ever confirmed the realname was actually required for membership. Board just decided so

  180. jonas’

    xnamed, fwiw, changing the real name associated with the account is trivial

  181. pep.

    And nobody ever confirmed the realname was actually required legally for membership. Board just decided so

  182. jonas’

    been there had that done

  183. xnamed

    It's not a big problem, I will use my real but in case I changed it in the future I will request changing it on the wiki too, is it okay?

  184. emus

    Alex:

  185. jonas’

    xnamed, back then I sent an email to the members@ list and made the corresponding pull requests myself, but you can also ask one of the sysops to help you with that, yes

  186. Sam

    That's fine; note that you don't have to use your real name for your wiki account, you just have to put it on your application each year

  187. Sam

    So you won't have to change anything. If you change your name, just put the new one on next years application.

  188. xnamed

    > xnamed: If you prefer to stay anonymous you can still do many things incl. xep development, right? I'm already doing this

  189. xnamed

    Thank you all đź‘Ť

  190. Alex

    Also the real name will be listed on our XSF website. There is a list of members with real names

  191. xnamed

    Ok

  192. pep.

    And maybe someday there's be a rationale for why this is required

  193. emus

    I guess because how you can have a legal entity for donations with anonymous people

  194. pep.

    The entity isn't anonymous

  195. pep.

    Board isn't anonymous

  196. emus

    But why have a anonymous organsiation actually?

  197. pep.

    Why require fullnames?

  198. emus

    I don't understand why we should build an anonymous organisation. Especially if we do communication. In that aspect it should be open. but we are getting offtopic

  199. pep.

    Open doesn't mean not private

  200. pep.

    Open doesn't mean we should get rid of privacy

  201. pep.

    Open doesn't actually mean much anyway.

  202. pep.

    (or it means too much)

  203. emus

    but if its a organisation that is also a legal instance

  204. pep.

    You seem to be throwing random words in the air in hope that I catch them

  205. emus

    yes but as an organisation it is also a legal instance

  206. pep.

    And also going in circles. I've already answered this

  207. emus

    I dont think so

  208. emus

    I think its impirtant to have transparency because otherwise random members can join and vote

  209. pep.

    The day the XSF gets there maybe they can start worrying about it. So far it's only idling members

  210. pulkomandy

    some people are known only by their nickname here, and having their realname wouldn't help you at all

  211. pep.

    And no check is actually done whether the name is legal

  212. pulkomandy

    making sure each member is who they pretend they are is useful. But that doesn't necessarily means "real" name

  213. Zash

    Like when bear was voted out because nobody knew them by their afk name.

  214. nephele

    It feels really wierd to be called by my real name in the context of programming in english, it's just always my nickname normally :D

  215. pep.

    So no I don't think it's justified to require fullnames. There's no legal basis for members (and is there for board? Maybe the chair?), or at least my question was never answered. (Because yes I asked and nobody cared)

  216. Zash

    xsf@ might be a more appropriate place to discuss the legal stuff of the XSF than jdev@

  217. pep.

    Sure, it just popped up in here.

  218. pep.

    But why do I care anyway, I'm no member anymore.

  219. Zash

    https://logs.xmpp.org/xsf/2021-11-04?p=h#2021-11-04-1345a93abcf14a57 (and surrounding discussion)

  220. emus

    > pep. escribiĂł: > So no I don't think it's justified to require fullnames. There's no legal basis for members (and is there for board? Maybe the chair?), or at least my question was never answered. (Because yes I asked and nobody cared) sorry, but this is just your perception. I also dont like to place my name, but I am still not an anarchist

  221. Sam

    Most of this doesn't matter. The state of Deleware allows anonymous members, but does not allow anonymous directors, so if we don't go ahead and get the names of members it becomes confusing if they decide to run for board later (you have to keep track of who can and can't run for board because they don't have their name on the membership list). It also doesn't matter if the XSF doesn't check if the name is legal or not. If the secretary of state in Deleware tries to revoke our non-profit status we could say "we required the name, but the person lied to us" and then it's their problem. It's just doing the minimal thing to make sure the XSF can retain its tax exempt status, which is good. As far as I know having names does not avoid multiple votes, we have other mechanisms (voting / the application where you'd need to list work you've done) for that.

  222. Sam

    "voting for members initially" I mean, obviously general voting does not avoid multiple votes :)

  223. pep.

    Yeah so.. only board is required to have fullnames public then.

  224. Sam

    By law, yes.

  225. Sam

    However, the board is able to decide the rules for membership and though I can't say exactly why they chose to require full names, I suspect it's because it makes it much easier to sort things out later if there are any conflicts.

  226. pep.

    > but I am still not an anarchist lolwat

  227. jonas’

    Sam, fwiw, board membership doesn't even require XSF membership, hence the argument w.r.t. full names is kind of moot anyway -- you need to collect the information for prospect board members separately, in theory at least, anyway.

  228. pep.

    Sam, yeah and I am sure this is excluding potential members. I wasn't aware of the discussion Zash linked but that's yet another case

  229. pep.

    If the XSF doesn't care then that's that. But that's a good step backwards wrt inclusivity

  230. jonas’

    it's not a step backwards, it's not a step at all ;)

  231. pep.

    Right, it was already there

  232. pep.

    But the multiple chats and refusals to change this isn't setting the track record nicely

  233. jonas’

    aside: this is off-topic for this room, and unless you (general, not second person) actually works toward improving/fixing things, please avoid wasting the bandwidth of everyone here. Just saying "this is bad but nobody cares" isn't going to help anyone.

  234. emus

    > pep. escribiĂł: > If the XSF doesn't care then that's that. But that's a good step backwards wrt inclusivity Well, if not all agree to it doesnt mean "we" dont care. I think its a harsh statement

  235. jonas’

    names

  236. pep.

    emus, afaict board says what the XSF says

  237. jonas’

    End Of Topic.

  238. pep.

    emus, afaict board sets what the XSF says

  239. jonas’

    xmpp:xsf@muc.xmpp.org?join would be the right place to discuss this and move toward progress. The room is also accessible for non-members, so those of you who don't already happen to be in there can join there.

  240. pep.

    jonas’, I merged #1135 and #1130 (from linkmauve and me respectively) into #1140 btw

  241. pep.

    Re 363

  242. pep.

    These should all be editorial changes

  243. jonas’

    uh-uh

  244. pep.

    Maybe.

  245. jonas’

    pep., https://github.com/xsf/xeps/pull/1140#pullrequestreview-843840558

  246. pep.

    Should I split it?

  247. pep.

    So that the rest goes in quickly

  248. jonas’

    only the "in bytes" and the signing of headers I could be convinced to let go without passing by council

  249. jonas’

    so I don't see value in splitting this

  250. jonas’

    and it creates more work for me

  251. pep.

    Ok. I'll update the revision block then

  252. jonas’

    thanks