jdev - 2023-01-22


  1. Beherit

    okay, my close friends decided to not use xmpp apps any more. Besides multiple issues, the core on was push notifications on android. I wanted to recommend to devs to review creation of awarness towards batteryoptimization deactivation. its a problem people usually dont understand

  2. moparisthebest

    Beherit: like, not getting notifications or?

  3. moparisthebest

    Beherit: if that's what you meant, normal people who use normal phones and install XMPP applications through normal app stores shouldn't need to disable battery optimizations, assuming their server supports push notifications, and it should or they will have a bad time

  4. moparisthebest

    Disabling battery optimizations is for weirdos like me who don't have Google play services and install through f-droid

  5. rubi

    disabling battery optimization doesnt work on all devices anyway: https://dontkillmyapp.com/

  6. rubi

    also huawei devices don't have google play services either, and their devices ignore battery optimization settings

  7. jackhill

    do you know if huawei runs their own push notification service?

  8. Beherit

    > moparisthebest: > 2023-01-22 02:54 (GMT+01:00) > Beherit: if that's what you meant, normal people who use normal phones and install XMPP applications through normal app stores shouldn't need to disable battery optimizations, assuming their server supports push notifications, and it should or they will have a bad time Then I dont know whats the problem

  9. Beherit

    their servers are fine

  10. Beherit

    there is defibitively a huawei phone in that group I was talking about

  11. Beherit

    I refered to that issue already

  12. flow

    huawei phones should gernally work fine if there is a proper XMPP push mechanism in place

  13. Beherit

    Just saying that there seems to be issues still

  14. Beherit

    Another thing are passwort / lost accounts when switching phones commonly. But thats a server side thing

  15. Martin

    That's more a user thing. πŸ˜‚

  16. Beherit

    No, its not working if servers do not offer password reset for normal users

  17. menel

    That depends on the server admin. There are servers with reset, and there are some that don't have it

  18. Beherit

    I know, thats also why I introduced the password reset key in the providers project.

  19. MSavoritias (fae,ve)

    Yeah. That should be standard for public servers

  20. Beherit

    It should be standard for servers recommended to newbies etc

  21. MSavoritias (fae,ve)

    Yeah

  22. Beherit

    I basically wanted to express that onboarding and essential working setups is not a thing of the past yet.

  23. MattJ

    Not on public servers, indeed

  24. MattJ

    That's why I don't recommend public servers to most people, and why I work on Snikket which solves all the problems you've mentioned, and more

  25. Trung

    Beherit, if you don't want to run your own server, move your friends to mine: https://chat.trung.fun

  26. Beherit

    > MattJ: > 2023-01-22 03:41 (GMT+01:00) > That's why I don't recommend public servers to most people, and why I work on Snikket which solves all the problems you've mentioned, and more Yes I see that. But we shouldn't deprecate the federated idea because of all this.

  27. Beherit

    MattJ: you actually offer hosted services?

  28. Beherit

    Trung: I dont run my own

  29. menel

    Snikket is still federated. https://snikket.org/hosting/

  30. Zash

    "Public server" as in having registration open to more or less anyone.

  31. Zash

    Orthogonal to whether it participates in the open federation.

  32. Trung

    Beherit, you don't have to. Not everybody has to run a server to use XMPP. You can get onboard with the Snikket team or on my domain. All is well.

  33. moparisthebest

    But everyone who can run a server should

  34. Holger

    Maybe 'everyone' who can commit to maintaining a server in the long run 'should' do so, but that's usually hard to predict.

  35. Holger

    At least until we have a good account migration story.

  36. Beherit

    I dont know if I should setup snikket now. The game with my close friend is lost anyway for the next years and I dont have interest to deal with their frequent incompetence on some stuff. Holger: yeah, I pay for my free of costs public servers indeed

  37. Beherit

    I also donated and paid for conversations even I dont use it directly + Quicksy, which worked pretty fine indeed

  38. moparisthebest

    To be clear I meant "for their friends and family", running a public one is indeed a commitment

  39. Holger

    It's a commitment for friends & family as well, no?

  40. jackhill

    moparisthebest: heh, well in my experience anything, even for one other person becomes mission critical quickly. 😁

  41. jackhill

    At least if you own your own domain, you can switch hosting providers while keeping addresses

  42. moparisthebest

    Yes that's fine though, it's a few people you know personally and you can get it sorted quickly

  43. jackhill

    Maybe off topic, but that's a nice thing about phone numbers: portability with no @domain part.

  44. rom1dep

    I'm amazed by how broken threads turned out to be in matrix-land, is there any ongoing willingness/effort towards implementing/revamping threading in XMPP?

  45. moparisthebest

    rom1dep: cheogram has implemented threading

  46. rom1dep

    oh really?

  47. moparisthebest

    Cheogram Android, a conversations fork

  48. Zash

    jackhill, reminds me of https://en.wikipedia.org/wiki/Telephone_number_mapping

  49. jackhill

    rom1dep: video demo of cheogram demo video for the thread UI branch: https://kumi.tube/w/1LQQp5Uia4u8Pdojxen1y8

  50. rom1dep

    I gave it a look the other day after inquiring about ad-hoc commands and it didn't strike me as having such fancy features… is there a place/blog where I can read about it?

  51. rom1dep

    ah, thanks jackhill :)

  52. jackhill

    Treads still pre-release I think

  53. jackhill

    Threads still pre-release I think

  54. rom1dep

    after the first 15seconds it seems like what nheko's doing

  55. jackhill

    Zash: thanks, I wasn't aware of that

  56. rom1dep

    (which, amongst element, neochat and nheko is what makes the most sense to me)

  57. rom1dep

    I like this UX. I don't think it's necessary to have a feature for "creating threads" explicitly, they could arise automatically as the consequence of replying to a message.

  58. rom1dep

    and about that, anyone's working on contextual replies/citations where clicking on the cited message scrolls back to it?

  59. MattJ

    Beherit [15:08]: > MattJ: you actually offer hosted services? Yes

  60. MattJ

    rom1dep: yes to that too

  61. rom1dep

    in snikket?

  62. MattJ

    Probably after Conversations 3 πŸ™‚

  63. rom1dep

    with reactions

  64. MattJ

    I just meant to say that people are working on it

  65. rom1dep

    gotcha

  66. rom1dep

    at least I've seen Daniel committing a lot towards C3 lately

  67. MattJ

    Yes, he has funding to work on it properly at last

  68. rom1dep

    I'm glad he still has the stamina to dive into large refactorings like such

  69. rom1dep

    > Yes, he has funding to work on it properly at last Oh, it's NLnet at it once again. Good use of taxpayer's money :)

  70. Beherit

    rom1dep: yes, indeed

  71. wurstsalat

    rom1dep: Dino has replies implemented, Movim, too. Gajim will soon follow

    πŸ‘ŒοΈ 1
  72. rom1dep

    > dino(hg-git)[ default master]➀ hg ↓ > pulling from git@github.com:dino/dino.git > importing 26 git commits Time to check that out :)

  73. rom1dep

    looks like it was added 2 weeks back, good job there!

  74. rom1dep

    > rom1dep: Dino has replies implemented, Movim, too. Gajim will soon follow let's see how that looks

  75. rom1dep

    https://upload.tamytro.org/upload/a3849b367f4dd4cedd5ad6f64afa7645b7d4f834/rHaQxfbairFRZbTHYiA6EXy4GgwfiD06Qorzub3i/be07886c-4f77-45b1-bbe9-5f8c3cfc064c.png

  76. rom1dep

    humm, apparently pasting an image in dino doesn't create an attachment :(

  77. Zash

    or maybe, just maybe, pasting images is restricted in this channel

  78. rom1dep

    is it right on the side of dino to pretend it attached, then?

  79. pep.

    Zash, is it?

  80. Zash

    IIRC that module is loaded here, yeah

  81. pep.

    That is.. it removed <oob>?

  82. pep.

    That is.. it removes <oob>?

  83. pep.

    Anyway, it would be nice if it was explicit I guess. I had no clue (and I guess I'm not the only one)

  84. Zash

    There's a `"{xmpp:prosody.im}muc#roomconfig_unaffiliated_media": false` in disco#info

  85. Zash

    "explicit" would mean what exactly in this case?

  86. MSavoritias (fae,ve)

    Pictures dont work in the description i guess

  87. pep.

    Yeah I guess the disco thing isn't exposed by many clients

  88. pep.

    Maybe it should be

  89. pep.

    So in the meantime in the topic or desc or sth..

  90. MSavoritias (fae,ve)

    Thats actually a good idea. A list of checks with what you are allowed to do in the group

  91. MSavoritias (fae,ve)

    From disco

  92. MattJ

    Funny, that's already a thing

  93. MattJ

    Somewhere

  94. MattJ

    https://xmpp.org/extensions/xep-0045.html#impl-service-traffic

  95. rom1dep

    Conversations' channel details should show something like that below "XEP-0313: MAM β†’ available" for instance

  96. pep.

    Well for this specific feature, the upload button could be greyed out in dino say, with a thing on hover. I don't know how to expose it in Conversations

  97. MattJ

    I don't see what the big deal is with this one though. The recipient still gets a link. Why would you disable upload?

  98. pep.

    Maybe preventing upload isn't the right thing either.. just that expectations aren't respected

  99. pep.

    A user could think it's borked

  100. pep.

    (And that's actually what just happened here)

  101. MattJ

    Yeah, because we're in a room of XMPP developers πŸ™‚

  102. pep.

    I don't see why XMPP developers should have this expectation :P

  103. pep.

    We're also users, persons with a heart!!

  104. pep.

    We're also users, people with a heart!!

  105. moparisthebest

    Speak for yourself

  106. pep.

    I knew it

  107. rom1dep

    could be the same attachment icon with a warning symbol "content will be shared as a link instead of being embedded"

  108. moparisthebest

    ;)

  109. MattJ

    rom1dep: unless they use Movim or Converse.js which I think will still show it "embedded" πŸ˜„

  110. MattJ

    Even if you just send a link

  111. rom1dep

    it's just super misleading that dino sticks to the "embedding" UX while the rest of the world (including user's own clients) sees a URL

  112. MattJ

    Give up, we have more important things to "fix" πŸ™‚

  113. Menel

    After all this is a very rare used module in prosody. Its unlikely one finds it In the wild , beside these jabber rooms

  114. pep.

    Weird and unexpected anyway, but yeah I won't die on this hill

  115. rom1dep

    https://upload.tamytro.org/upload/a3849b367f4dd4cedd5ad6f64afa7645b7d4f834/L64XFGQT7aGlHSp0EDhnOw5Xh8dh6eDDeziFcF8l/42a10537-90b5-4e50-a07f-ba4393d319fe.png

  116. rom1dep

    dino did really up its game there

  117. rom1dep

    I remember not long ago when history retrieval would be freezing the client for minutes

  118. Zash

    There's the issue like https://github.com/dino/dino/issues/590 tho

  119. Zash

    I.e. the sending client not showing what the MUC reflects back.

  120. larma

    Zash, looking at XEP 0045, I don't think Dino's behavior is wrong here

  121. larma

    Zash, looking at XEP 0045, I don't think Dinos behavior is wrong here

  122. Zash

    Not wrong, but non-cooperative with server-side stuff like these

  123. pep.

    (and also mod_pastebin? :P)

  124. Zash

    'these' as in mod_pastebin, mod_muc_restrict_media, mod_swedish_chef :)

  125. lovetox

    Zash i heard of that prosody feature also the first time now

  126. lovetox

    so how do you think client devs will discover that?

  127. lovetox

    i would expect at least that someone would open some feature request on our tracker to support that

  128. larma

    Zash, maybe, if you want this kind of cooperation, maybe spec it properly.

  129. larma

    0045 describes that the service can discard non-body content and if it does so, it should make a whitelist of supported namespaces discoverable. Blacklist is not supported. And any modifications of the body are also not supported.

  130. Zash

    Where does it say that? That would be news to me.

  131. larma

    which part?

  132. lovetox

    i second that, white/black list of namespaces Oo

  133. Zash

    Modifying body

  134. pep.

    What Matt linked earlier?

  135. pep.

    https://xmpp.org/extensions/xep-0045.html#impl-service-traffic ?

  136. Zash

    The service sends back the message. Up until recently, basically all clients would show what the MUC sent back.

  137. lovetox

    i read this the first time, amazing

  138. pep.

    Only using an allowlist seems quite restrictive

  139. lovetox

    pep., i think it makes sense

  140. lovetox

    if you want to restrict something, you want to have a whitelist, because the blacklist is potentially ininite

  141. lovetox

    if you want to restrict something, you want to have a whitelist, because the blacklist is potentially infinite

  142. larma

    https://xmpp.org/extensions/xep-0045.html#bizrules-message > A MUC service SHOULD pass extended information (e.g., an XHTML version of the message body) through to occupants unchanged; however, a MUC service MAY disallow message specific extensions

  143. pep.

    lovetox, if you want to allow anything but, you have to literally allow everything but, and you can't know 'everything'

  144. pep.

    larma, ah

  145. pep.

    Ah, through "Allowable traffic" again

  146. larma

    Whay you are effectively doing is "silently rejecting the incoming message and then sending a new message on the users behalf". However rejecting should typically cause an error message to be sent to the sender and generating a new message seems entirely out of spec for me.

  147. Zash

    And way too many occurrences of "body" to find if it disallows modifying it

  148. larma

    it's not explicit, it only speaks about reflecting the message with modified from

  149. larma

    But given that for all other elements than body it's explicityly defined they need to be be passed unchanged, it is very stretch to assume it is intended to be allowed for body

  150. larma

    The proper solution to mod_pastebin defintely would be: Return an error message with description "Message to large, maybe upload to paste.example.org?"

  151. Zash

    SHOULD means doing the opposite is allowed if you have good reason, right? So you must be prepared to deal with it.

  152. lovetox

    i think its probably like with most things in XEPs, nobody thought of the use case, else they would have explicitly forbid or allowed it

  153. lovetox

    and now you go and interpret things into the XEP which probably are not there

  154. lovetox

    either way

  155. larma

    "I must be prepared" doesn't mean I must give perfect UX for it or allow the server to arbitrarily change my local database

  156. lovetox

    Zash, i dont see how you would care how Dino shows the Sending bit

  157. lovetox

    client can display that as it wants ..

  158. Zash

    I care because I used it and I liked being able to paste logs and patches into the chat without it taking up 3 screens.

  159. Zash

    Now I have to do roundabout things involving uploads.

  160. Zash

    Plus there's the thing Biboumi does with breaking multi-line messages into many.

  161. lovetox

    ah you used the the feature to shorten your own messages

  162. lovetox

    i understand

  163. larma

    Zash, sounds like you want a totally different client feature from Dino: "If outgoing message is large, ask user to send the text as a file instead"

  164. Zash

    Sure, that'd be great

  165. Zash

    But the thing is, the server sends you back what it sent everyone else, and it's nice to have a shared view of the chat.

  166. larma

    That would be totally fine with me and much more liked than "overwrite my local state of what the user sent with whatever the server sends"

  167. MattJ

    larma: returning an error and telling someone to use an external site kinda defeats the convenience of the module

  168. MattJ

    That's basically what IRC did 30 years ago

  169. moparisthebest

    With muc, what comes from the muc is the source of truth, if it didn't come from the muc it shouldn't be in your local state

  170. Zash

    Adding upload support to anonymous hosts is also ... uncomfortable.

  171. moparisthebest

    Expect maybe with a *send pending* flag

  172. larma

    MattJ, I hope XMPP is not IRC 30 years ago

  173. Zash

    Haven't people been asking for this reflection for 1:1 chats?

  174. MattJ

    You're proposing it, as I understand things πŸ™‚

  175. moparisthebest

    Muc is slightly better IRC from 24 years ago right?

  176. lovetox

    but its also not nice, if a user sends a message, and gets back a pastebin link in its local history, how will the user search his historyß

  177. lovetox

    but its also not nice, if a user sends a message, and gets back a pastebin link in its local history, how will the user search his history?

  178. Zash

    IRC explicitly doesn't sent you back what you sent.

  179. MattJ

    Which also leads to other things, like different people seeing different ordering

  180. Zash

    I'd also like to point out that mod_pastebin is almost as old as Prosody, and predates my involvement by years.

  181. lovetox

    effectively the pastbin link will become invalid, and then history is lost

  182. Zash

    or, at least a year?

  183. larma

    You only want the mod_pastebin thing in the case when users send log files or other text files as text instead as file

  184. MattJ

    Right, that's what it was written for

  185. larma

    which is a client issue if users do that

  186. MattJ

    Because reactive "please don't do that" was happening at least a few times per weej

  187. MattJ

    Because reactive "please don't do that" was happening at least a few times per week

  188. MattJ

    Then every XMPP client has this bug

  189. MattJ

    When will you fix it?

  190. larma

    As soon as servers announce their message size limit I guess

  191. MattJ

    Done πŸ˜‡

  192. MattJ

    It's in disco

  193. pep.

    Can I haz per-user length plz

  194. Zash

    Done 5 years ago

  195. pep.

    I was told it's not gonna work with MAM etc.

  196. larma

    https://larma.de:5281/upload/7-ZZ_73EcNvSqnJe/Screenshot%20from%202023-01-22%2020-01-06.png

  197. Zash

    Isn't a Slack snippet a regular message prefixed and suffixed with ``` ?

  198. larma

    Zash, no, snippet is a file

  199. larma

    Zash, no, snippet is a text file

  200. Zash

    Also, mod_pastebin does that, oob tag and everything. But since it leaves the first line, every client ignores it.

  201. larma

    The first few lines are displayed inline as a preview, to open the full text file you have to click additionally

  202. lovetox

    nice slack feature

  203. larma

    Slack does it client-side though

  204. lovetox

    so message-limit in muc is announced already in disco?

  205. Zash

    Also, what's the difference between the server overwriting your local state from mod_pastebin vs me sending a message correction from a different client?

  206. Zash

    ``` "{https://modules.prosody.im/mod_pastebin}max_characters": "1584", "{https://modules.prosody.im/mod_pastebin}max_lines": "12", ```

  207. lovetox

    i would say, the data is lost if its put into pastebin

  208. lovetox

    as i said, the link will become invalid

  209. lovetox

    the content will be lost

  210. lovetox

    i would expect my client to store the full message locally

  211. lovetox

    as file or whatever

  212. lovetox

    i think its funny that this discussion is done now a decade after pastebin mod

  213. moparisthebest

    Why? The pastebin is ran by the same server serving the muc

  214. larma

    Zash, now make this a XEP and put a proper namespace on it

  215. lovetox

    i think it served its purpose, but we can do better

  216. moparisthebest

    MAM limits can be identical

  217. larma

    moparisthebest, my local history is way longer than the MAM history in most rooms I am

  218. Zash

    I write code, not XEPs!

  219. moparisthebest

    larma: sounds like you want to write a XEP for a more IRC like muc v0.5 where the Source of truth isn't the muc, and it doesn't relay messages you sent to it

  220. moparisthebest

    But then you gotta have carbons, in order isn't preserved, it's a big step back

  221. moparisthebest

    Biboumi can't work

  222. larma

    The XEP is for exposing server message limits to the client

  223. moparisthebest

    "error: this muc only supports one line per message" from biboumi I guess?

  224. larma

    so that a client knows before sending a message that the server doesn't like the message as is

  225. larma

    and can decide to do *something* instead

  226. moparisthebest

    So all transports would need new XEPs to define crazy rules for clients to format messages

  227. larma

    moparisthebest, no I want a disco field max_lines_per_message=1 instead

  228. moparisthebest

    That's that I said? Each transport would need a XEP with formatting rules and all clients would have to implement them all before it would work

  229. larma

    legacy clients will still send multiline messages and biboumi will still split them, but clients understanding the limits can expose them to the user

  230. larma

    or whatever

  231. larma

    This is not about formatting

  232. larma

    This is about what clients can send to the server so that it is reflected unchanged

  233. moparisthebest

    Sounds far worse than the current system, where transports mangle the message however they need, and clients display what the muc actually sent

  234. larma

    Don't agree. Because transports won't be able to do it properly in all cases. The sending user knows how he wants stuff to be displayed at the recipient, so if what the send is what is received by others, no issues will occur.

  235. moparisthebest

    I think your proposal vs the current state of muc causes an impossible situation for all client devs (having to adapt to new remote service rules at the speed of changes by those remote services, that's way faster than Debian releases for instance), plus terrible ux for users

  236. larma

    I don't remember which transport was it (maybe biboumi) that split messages which are too long (not by number of lines, but number of chars) into multiple messages, but do that with python code where it totally matters if someone injects a newline at wrong place

  237. moparisthebest

    Now each user has to understand what transport they are connected to, and constantly get back "no, now it's too many lines, no, now too long of lines, etc etc"

  238. larma

    moparisthebest, huh? The way I'm thinking this, everything would work as is for old clients. Only new clients will tell the user "the recipient only supports up to 2000 chars per message, do you want to send a text file instead?" or someting like that.

  239. pep.

    breaking news, UX over transports is crap

  240. moparisthebest

    IRC has a line length limit indeed

  241. larma

    If you want UX over transports to improve, we need to get information about the transports (and its limits) to the clients and not hide it from them

  242. lovetox

    i think both sides are right, we need more info to provide better UX, but on the other side we should also deal with a MUC rewriting a body

  243. moparisthebest

    It's stupid to have XMPP users split their lines for IRC when the component can just do it

  244. moparisthebest

    I don't want to have to remember which MUCs are IRC and which aren't

  245. larma

    you seem to think your client can't be intelligent

  246. larma

    I'm not saying users have to do it

  247. moparisthebest

    Same thing, why should my client need to know about biboumi inner details

  248. larma

    e.g. the sending client can do it for you *and* tell you that it will do so *before* you send the message

  249. larma

    that's not biboumi inner deails

  250. larma

    that's really just three limits: - max chars per message - max chars per line - max lines per message

  251. moparisthebest

    Right now it gets done for you and you are told it's been done for you

  252. larma

    but only after the fact

  253. moparisthebest

    Except for all clients, by the muc

  254. larma

    when you already sent out crippled text

  255. moparisthebest

    Which is best case

  256. moparisthebest

    You think any user ever is going to press "oh no please don't just send this and let me manually fix it" ?

  257. moparisthebest

    If you want this terrible ux, write a XEP so MUC can give it to you

  258. moparisthebest

    Ie a flow like you send it, muc responds with "sorry I'll have to mangle it like so: "

  259. moparisthebest

    And the client can choose whether to send that or not

  260. larma

    Think of the following my client can do: - Display a note "The individual lines of this message will be seen as individual messages by the recipient" - Insert a line break after the max-chars-per-line limit in the input field so user will see where the line-break would be - Tell the user that the message is too large and should be sent as a file instead

  261. larma

    All of this would greatly improve UX

  262. larma

    moparisthebest, I *never* want the service to mangle with my messages

  263. moparisthebest

    Encoding all logic to what's acceptable for all remote protocols in each client is the path to insanity, it changes too much

  264. larma

    I understand there are reasons why the server would want to do it, and I want the client to know these reasons before so it can prevent it from happening

  265. larma

    nothing more, nothing less

  266. larma

    I was literally saying 3 numbers that already cover 99% of the known cases

  267. moparisthebest

    larma: I'm saying it wouldn't, it would respond "I can't send the message that way for these reasons, I could send it reformated this way: $proposal"

  268. larma

    I was literally saying 3 variables that already cover 99% of the known cases. Why you wouldn't want my client to know these?

  269. moparisthebest

    That cover IRC and mod_pastebin only you mean

  270. larma

    which are 99% of the known cases

  271. larma

    why not just fix the issues we have instead of overly complicating things?

  272. moparisthebest

    What about msn, aim, icq, Google $protocol-of-the-week, signal, WhatsApp, Facebook, tiktok, I mean I could literally go on forever

  273. larma

    I'm thinking of these three limits plus information if they are soft or hard (where soft limit means "you can send, but server gonna do things" and heard means "server will reject/error"

  274. larma

    I'm thinking of these three limits plus information if they are soft or hard (where soft limit means "you can send, but server gonna do things" and heard means "server will reject/error")

  275. moparisthebest

    I think your proposal is vastly overcomplicating things for all clients forever, mine would let MUCs opt in

  276. larma

    Clients can entirely ignore my proposal and would continue to work as is

  277. larma

    It's entirely optional allowing clients to optimize UX where they see possibilities.

  278. larma

    No harm done

  279. moparisthebest

    These 3 are easy but then when nicoco introduces 99999 more for slidge

  280. larma

    Then clients may decide to not implement those.

  281. larma

    All done.

  282. larma

    Status quo preserved with no additional work

  283. moparisthebest

    But all clients need to display what the muc says they sent, not what the client thinks they sent

  284. larma

    moparisthebest, all clients can display anything they want. That's totally up to them (and that is also the status quo)

  285. moparisthebest

    I don't think so, that's why Dino is broken and no other clients are

  286. larma

    Also when it comes to slidge: we're already discussing how slidge will communicate the possible reactions to the client because some networks don't support all reactions. The client should know the limits or UX will be worse.

  287. larma

    Dino works perfectly well for me πŸ™‚

  288. moparisthebest

    With muc what the muc sends is the source of truth, a client that guesses what it'll send is incorrect

  289. larma

    "source of truth" to whom?

  290. moparisthebest

    If you don't like it, propose some negotiation where the muc doesn't do this

  291. moparisthebest

    Per the spec

  292. larma

    what if the MUC sends different messages to different participants

  293. larma

    what's the truth then?

  294. moparisthebest

    What the muc says

  295. larma

    it says different things

  296. larma

    so there are multiple truth?

  297. moparisthebest

    What it says to you

  298. larma

    who is me?

  299. moparisthebest

    Your client

  300. larma

    What if my clients receives different things in multiple requests?

  301. rom1dep

    I think it would be useful for the MUC to return in a human-readable way why and how the message was rewritten (so the user gets to know what happened and why it happened), but I think it's insane to expect a formal description of all constraints, rules and limitations any past, present and future MUC/gateway/protocol may be subjecting arbitrary messages to.

  302. moparisthebest

    Then the truth is different for each client :)

  303. larma

    moparisthebest, that's not how "truth" works

  304. moparisthebest

    (that's actually the situation you have now right? Only the sending Dino has incorrect history)

  305. rom1dep

    larma: if different clients show different messages, as a naive user, I consider them (or the protocol) broken

  306. moparisthebest

    Sure it is, something something observing something changes it bla bla

  307. larma

    truth is: user A wants to send message B to users C and D in the MUC. If user C receives message E instead, that doesn't change the truth what user A wanted to send.

  308. rom1dep

    knowing how other get to see my messages is pretty fundamental

  309. larma

    And as the sending client I happen to know for sure what message B is.

  310. moparisthebest

    Right, but we don't care about what user a wanted to send, we care about what was sent

  311. larma

    I disagree

  312. larma

    that's literally why we sign and e2ee messages.

  313. rom1dep

    > truth is: user A wants to send message B to users C and D in the MUC. If user C receives message E instead, that doesn't change the truth what user A wanted to send. that doesn't change what A wanted to send, but then it can create a lot of confusion and qui-proquo

  314. moparisthebest

    The truth is what was sent, and for the sending client only to have a different view (than even his other Dinos) is pretty clearly wrong

  315. rom1dep

    I think it's a pretty universal assumption that all participants within a same discussion get to see the same content

  316. larma

    moparisthebest, it totally is wrong, that's why I want to change that, but not by letting the server rewite my messages

  317. larma

    why can't we just try to make sure that the message user A sends is what is shown to users C and D?

  318. rom1dep

    larma, I think it's fine that the server rewrites the messages if the client is provided enough context. You can display the rewritten message as other sees it, with a warning & reason for rewriting and a way to show the original if needed

  319. moparisthebest

    So propose a negotiated change to the spec, but when that new thing isn't negotiated, fix Dino to display what the muc sent

  320. larma

    It's only fine if the user knows how stuff would be rewritten before he sends the message in which case the client can also just do it for him

  321. larma

    moparisthebest, that's not how this works here

  322. moparisthebest

    I mean or keep Dino broken for current behavior unlike all other clients, your playhouse your rules

  323. pep.

    moparisthebest, if Dino wants to have this information and use it, let it have it?

  324. moparisthebest

    Absolutely, that's the new spec thing we just talked about?

  325. pep.

    yeah I guess. I don't really understand what you're ranting about :)

  326. rom1dep

    larma: I think it's very ambitious to expect the client to be able to do that. You would have to share the same processing logic on the client and server otherwise you would have no guarantee that your client did a good rewrite job. I don't see how that can be solved generically and safely

  327. moparisthebest

    But currently, if I send a message the muc rewrite, I see the message everyone else sees, on the sending client, all my other joined clients, and other people's clients *except* if the sending client is Dino and then I see something else, to me that's a crystal clear Dino bug

  328. rom1dep

    yup

  329. larma

    If we don't find other solutions what I'd rather want to do: - Add proper inline preview for text files, if the server replaces the message with a link to a file like mod_pastebin, check if the file content's match the sent message and then display the message as a inline text file preview. This way, all Dinos will see the message the same way. - For the Biboumi splitting case, detect the message reflected being split into multiple and make sure to not display any content twice.

  330. rom1dep

    larma: what if the constraint isn't about message length, but about e.g. forbidden characters for protocols not supporting e.g. UTF (like e.g. SMS), how would you go about exchanging this info with the server? It's an endless complexity pit

  331. rom1dep

    larma: even in case 1, it's potentially very important for the user to know what the pastebin link is

  332. larma

    Don't other clients display the link as file because it has an oob tag?

  333. larma

    Let's be precise: I want Dinos on both sides of the MUC to display the same or mostly similar message, but still make sure that misbehaving servers can't arbitrarily change my outgoing message history. Whatever that means.

  334. rom1dep

    > Let's be precise: I want Dinos on both sides of the MUC to display the same or mostly similar message, but still make sure that misbehaving servers can't arbitrarily change my outgoing message history. Whatever that means. > misbehaving servers what if it's a feature?

  335. Zash

    E2EE?

  336. moparisthebest

    If it helps you aren't sending the message, you are just asking the muc to send it on behalf of the username you are currently connected with

  337. larma

    Zash, in the end, yes probably

  338. larma

    Have messages in public MUCs signed is certainly an interesting option

  339. moparisthebest

    The muc sends it, and it can change it if it wants

  340. moparisthebest

    It'd deanonymize people worse than avatars currently do

  341. pep.

    larma said public MUC for a reason

  342. larma

    moparisthebest, if you want so, I might be jsut asking the MUC to send it, but I ask it to send it *exactly as I sent it*

  343. moparisthebest

    That's not what the XEP says... At least not last time I looked at it lol

  344. larma

    > A MUC service SHOULD pass extended information (e.g., an XHTML version of the message body) through to occupants unchanged; however, a MUC service MAY disallow message specific extensions

  345. moparisthebest

    You can't arbitrarily impose "MUCs MUST not alter messages" after 2+ decades of them doing it without negotiation

  346. larma

    It's not a MUST, it's a SHOULD

  347. moparisthebest

    SHOULD is not MUST, and that doesn't mention body

  348. larma

    I'm asking the MUC to send it exactly as is, but the MUC of course can ignore that and send it diffrently

  349. larma

    still that's what I'm asking for

  350. larma

    Certainly the XEP authors thought "the muc should send the XHTML body unchanged, but it's very much desired that it changes the normal body"

  351. moparisthebest

    New negotiation for a muc to do that seems fine

  352. moparisthebest

    Thoughts don't matter, only text and running code... Well really only running code

  353. larma

    You seem to misunderstand. I don't want to add complexity to MUCs, I want to add complexity to *my* client exclusively.

  354. moparisthebest

    Why does muc reply with what was sent if clients weren't supposed to use it

  355. rom1dep

    but would leak into MUC wouldn't it? Or how would it signify to dino what its conditions and means for message rewrites are about?

  356. larma

    moparisthebest, because of ordering. Same as for presence.

  357. moparisthebest

    larma: they don't need to send the body for ordering

  358. larma

    Now please don't tell me that you think that servers are supposed to change a joining user's presence status text just because they can.

  359. moparisthebest

    If the spec doesn't say MUST NOT then sure

  360. moparisthebest

    Perhaps a muc hosted in Germany and a user joins with a holocaust denial presence

  361. moparisthebest

    Remember when clients failed to log in if the server didn't take their bind preference

  362. larma

    I guess we have different understanding of what the RFC2119 terms are supposed to mean

  363. larma

    If something is SHOULD NOT and you are doing it anyways, you are to blame if it causes problems.

  364. larma

    because apparently, you did not understand the full implications before implementing

  365. larma

    aka, changing the body may cause the sending client and the receiving client to have different understanding of what was sent and you have to understand and accept that before doing so

  366. moparisthebest

    You cannot rely on SHOULD behavior, that's why it's not a MUST

  367. larma

    I'm not relying on SHOULD behavior. Is Dino crashing, deleting your hard drive or doing anything else than just displaying a history of the messages you sent mangled with the history of messages from others you received?

  368. larma

    I'm not relying on SHOULD behavior. Is Dino crashing, deleting your hard drive or doing anything else than just displaying a history of the messages you sent merged with the history of messages from others you received?

  369. larma

    You seem to wrongly expect that Dino displays the messages as the MUC seees them, but Dino displays the messages it sent merged with the messages it received from others. Which is by the way exactly what it does in 1:1 chats

  370. larma

    You seem to wrongly expect that Dino displays the messages as the MUC seees them, but Dino displays the messages it sent merged with the messages it received from others. Which is by the way also exactly what it does in 1:1 chats, so it's being 100% consistent here.

  371. larma

    You are basically asking Dino to change it's behavior to better reflect what others wanted to reach when they decided to do something they shouldn't even be doing.

  372. larma

    You are basically asking Dino to change its behavior to better reflect what others wanted to reach when they decided to do something they shouldn't even be doing.

  373. moparisthebest

    That's just how the spec and all other clients work πŸ€·β€β™‚οΈ

  374. wurstsalat

    https://xmpp.org/extensions/xep-0382.html comes to my mind. But client's would have to send it like that in the first place

  375. lovetox

    em larma, MUC does rewrite presence the client sends

  376. lovetox

    last i remember you sending a join presence to a muc, it can return the presence with a different nick

  377. lovetox

    or at least i think that was an option for the muc, and im not imagining that

  378. lovetox

    > The service MAY rewrite the new occupant's roomnick (e.g., if roomnicks are locked down or based on some other policy). > > The service MUST allow the client to enter the room, modify the nick in accordance with the lockdown policy, and include a status code of "210" in the presence broadcast that it sends to the new occupant.

  379. lovetox

    i dont say i know what the initial authors of the MUC XEP intended, but to me the XEP always read like the Server is the source of truth, everything we send is just a "request" and we will receive later if it was accepted or not.

  380. lovetox

    and in this mode, its

  381. lovetox

    but i think nobody ever thought of rewriting the body, so we are left now guessing if this was intended or not

  382. Menel

    Prosody is rewriting the body since 1989, so In think it is ok. Regardless of what was an intent. Its more important what's written and what's done in real life. Dino is also not wrong in showing what it wants. I don't think there is specified what the client *must* show. So its less important to argue if something if it is wrong, (I think none are wrong) but to decide if and what to do, without searching the answer in the XEP. Because is isn't there.

  383. moparisthebest

    +1 Menel