XSF Discussion - 2017-09-28


  1. uc

    Right to be Forgotten!

  2. mimi89999

    😂

  3. mathieui

    just asking, but there’s no way for a client to delete a message from a mam archive?

  4. Zash

    No

  5. Zash

    Not in MAM

  6. Zash

    Separate specification may define that

  7. mathieui

    That’s what I was thinking as well

  8. Zash

    That Prosody fork, I forget the name, had something like that IIRC

  9. mathieui

    I was checking if there was something like that in urn:mam:tmp which was removed later, but it doesn’t appear to be so

  10. mathieui

    a coworker came to me because a client asked him to remove a message from the archive on an ejabberd server with mam:tmp

  11. mathieui

    so I had to check

  12. zinid

    the database schema in ejabberd doesn't depend on mam version, iirc

  13. Kev

    Yeah, we have to support that in M-Link, so things in the archive can be removed afterwards.

  14. Kev

    I imagine it'd be a fairly common enterprise etc. requirement.

  15. Zash

    I'd imagine the opposite

  16. Ge0rG

    Maybe there is a separate archive that the data gets moved into?

  17. Zash

    Altho archiving and eg compliance logging doesn't have to be the same thing

  18. Kev

    (I note it's not the user who's able to do this, it's a sysadmin)

  19. Kev

    (And it leaves a tombstone)

  20. zinid

    any IM client (whatsapp, viber) has a function of deleting messages

  21. Zash

    Kev: Does it have custom protocol or some ad-hoc command?

  22. zinid

    you can even delete a message on remote end as well ;)

  23. Kev

    I forget how we do it, TBH. Adhoc, I expect.

  24. Zash

    You can send a message correction that changes it to an empty message or tombstone

  25. zinid

    true

  26. Ge0rG

    I think yaxim will ignore a body-less LMC.

  27. Ge0rG

    and body-less in that context also includes messages with an empty body

  28. zinid

    can I using LMC "erase" arbitrary message, or only the last one?

  29. Zash

    https://xmpp.org/extensions/inbox/message-retraction.html

  30. Ge0rG

    zinid: the XEP says you may only edit the last message, but I would consider it more practical to allow editing of the last N with N maybe around 20.

  31. Ge0rG

    Hm. The first time I proposed rolling back Carbons and Resource Locking was in 2015.

  32. zinid

    I think LMC is better (if it supports arbitrary deletion)

  33. zinid

    in this case you can design database easily (e.g. append only)

  34. Ge0rG

    zinid: send a mail to standards@ and propose a change.

  35. Ge0rG

    Kev: you suggested I write a thought-a-day series about the brokenness of current XMPP. If that was a serious proposal, what do you think would be the best venue to place that series?

  36. Kev

    It was semi-serious. I'm not 100% sure it's the best thing, but it seems like it might work. I was pondering a mail to standards@.

  37. Ge0rG

    Kev: I'm very interested in following through on that, in a form that's most acceptable to XSF members. I'm flexible regarding the form and the place to post, and personally I'd probably write a (very long) blog post instead.

  38. Kev

    I'm concerned that a very long blog post is likely to get TL;DRd.

  39. Kev

    (including by me)

  40. Ge0rG

    Because it allows to provide coherent arguments, has better markup and is not XSF-branded.

  41. Kev

    But give it a go :)

  42. Ge0rG

    Kev: what about a slide deck?

  43. Kev

    Oh, that has potential, including for if we do a high-bandwidth meeting to deal withit.

  44. Kev

    See what people-other-than-Kev think.

  45. Ge0rG

    people-other-then-Kev: I'd like to prepare a list of things that are currently broken in XMPP. What would be the best place for you to read it? standards@? my blog? XSF blog? a slide deck?

  46. jonasw

    I don’t care :)

  47. Ge0rG

    jonasw: as in "won't read it anyway" or as in "will red it either way"?

  48. jonasw

    the latter

  49. pep.

    Ge0rG, zinid, re LMC/deleting messages, that would only be true in a more-or-less controller context though, most client don't support LMC in semi-anon MUCs, and even when they do it would still be duplicated in the history

  50. zinid

    pep.: but you still "remove" it in your archive, which is the major goal

  51. Kev

    I'm keen it's not the XSF blog, FWIW.

  52. Ge0rG

    Kev: I just mentioned it for completeness sake. It was not really serious.

  53. pep.

    zinid, technically you don't remove it right? You just put a new message in front

  54. Guus

    Ge0rG: who's the intended audience?

  55. Ge0rG

    Guus: XSF members and people who implement MAM, Carbons, mobile clients etc.

  56. Ge0rG

    Guus: essentially everyone contributing to "modern" XMPP

  57. Guus

    then the mailinglist seems appropriate

  58. Zash

    The jdev@ list?

  59. Guus

    members -> members, impelmentors -> jdev

  60. Ge0rG

    Guus: see above, a coherent presentation will lack formatting and be tl;dr for most.

  61. Guus

    pick your audience :)

  62. Guus

    Ge0rG: the more reason to pick your audience carefully.

  63. zinid

    pep.: yes, but this is kinda normal, your "delete command" appears as "delete marker" in the database, so the original messages becomes a tombstone

  64. zinid

    pep.: such approach is used in some distributed databases for example

  65. zinid

    in blockchains also

  66. Ge0rG

    dwd: (moving over from jdev@) I'd like to make a talk, but can't guarantee to be present.

  67. Kev

    I think this is standards@, not jdev.

  68. dwd

    Kev, MUC, not list.

  69. dwd

    Ge0rG, If you're not present, the talk will be less effective indeed.

  70. pep.

    zinid, so it wouldn't just be a simple "empty message", it would be more than that and the db (and MAM?) would react to this as well?

  71. Ge0rG

    dwd: right. The problem I'm trying to solve now is that the challenge is very complex, and most people lack the time.

  72. Kev

    dwd: Guus suggested mailing to the jdev list. I don't think that's the right venue.

  73. Ge0rG

    dwd: Kev suggested to make a series of one-thought-a-day posts to standards@, but I'm not sure I can split up the problem appropriately.

  74. dwd

    Ge0rG, I don't know... I think if you chop up each issue, explain What it is, Why it matters, Who needs to do the next step, and What they need to do, you'd find which issues you can get traction on quite quickly.

  75. Kev

    ^

  76. dwd

    Ge0rG, If you can't chop it up into smaller issues, then I genuinely think it's a lost cause. It becomes "EVERYTHING IS BORKEN, FIX IT PLS".

  77. Guus

    Kev: I suggested that he'd pick an audience, and suggested that if that was primarily (client/server) developers, he'd pick jdev.

  78. zinid

    pep.: db will not react, this goes to client: when it sees the "delete marker", it remembers it and when it matches a message it ignores the message (and/or deletes in local history)

  79. Ge0rG

    Guus: I think that standards@ would be the most appropriate place.

  80. Guus

    then go for that :)

  81. Ge0rG

    at least if the form is "mail(s) to a ML"

  82. pep.

    zinid, that doesn't work in semi-MUC for most clients

  83. zinid

    pep.: I know

  84. zinid

    but current message correction doesn't work in my Tkabber for exmaple :)

  85. zinid

    so?

  86. Guus

    Ge0rG: if it's really, really long, but structured, perhaps do this on the wiki?

  87. Zash

    If you are going to have mutable history, then MAM might not be what you want

  88. zinid

    pep.: you see, if you want to synchronize deletion with all resources (which can be offline at the moment), how will you do that?

  89. pep.

    No idea :/

  90. Ge0rG

    Okay folks, thanks for the feedback. I'll try to structure my thoughts first, then see how I can split them up.

  91. pep.

    I tend not to worry about deletion because I think it's just not possible

  92. zinid

    right, that's not an easy way, people inventing tombstones and dotted vectors and stuff like that

  93. jonasw

    deleting a message via LMC in MAM sounds like a terrible idea to me. this leads to inconsistent state between clients, because they might not re-sync old entries.

  94. zinid

    jonasw: disagree

  95. jonasw

    hm, you’ll have that anyways, no matter how you delete

  96. jonasw

    but something feels off about that approach.

  97. zinid

    if you keep a delete marker you can synchronize easily

  98. zinid

    damn, this is done in almost every key-value store

  99. zinid

    but this is harder for clients to implement...

  100. Zash

    Prosody MAM / archive code is mostly modeled to assume an append-only ordered list of messages

  101. zinid

    Zash: just like twitter btw :)

  102. zinid

    it's normal practice in high-load

  103. Zash

    Altho it's actually an ordered key-value thing, but the key-value-ness doesn't do very much

  104. zinid

    ejabberd uses SQL, so I don't care in fact, I'm just thinking that it would be great to have append-only for some usages

  105. jonasw

    LMC of messages before your last join are forbidden (via SHOULD) in the LMC XEP (0308)

  106. pep.

    jonasw, even if non-anonymous MUC?

  107. jonasw

    the XEP does not distinguish

  108. Zash

    MUC doesn't tell you if historic messages are from the same senders as those currently present.

  109. Zash

    MUC-MAM might tho, I think

  110. Ge0rG

    What's the current status of offline messages when a MAM-enabled client connects?

  111. Ge0rG

    Will they be dumped to the client after initial presence, either way?

  112. Zash

    Add that to the list of things we should figure out how they should interact

  113. zinid

    Ge0rG: you can disable them using flexible offline message retrieval

  114. Zash

    zinid: xep 13?

  115. zinid

    yes

  116. Zash

    You implement that?

  117. zinid

    yes

  118. zinid

    we can probably recommend bare minimum implementation for servers

  119. Ge0rG

    zinid: are there any clients making use of it?

  120. zinid

    Ge0rG: only ProcessOne customer's clients

  121. Ge0rG

    Yay.

  122. zinid

    yes, we recommend doing this :D

  123. zinid

    because there is no other standard way

  124. zinid

    but of course XSF can invent something :)

  125. Ge0rG

    The <purge/> command is prone to race conditions. Yay.

  126. Kev

    Ge0rG: And bind2 disables them.

  127. Ge0rG

    Kev: I hope we can make bind2 part of the solution to the problems I'm outlining.

  128. zinid

    Ge0rG: yes, races are possible, but not fatal, the server will not send you new messages anyway and you receive them via MAM later (so you don't lose them)

  129. Kev

    Ge0rG: Yes, or something like it (e.g. Dave's 'wrap bind2 up in sasl2' proposal).

  130. zinid

    xmpp2.0 is a better choice than bind2, sasl2 and others :)

  131. Zash

    Is xmpp2 a concrete thing yet?

  132. Zash

    Or is it just the concept of "lets re-do all the things from scratch"?

  133. zinid

    not concrete of course ;)

  134. jonasw

    there’s https://wiki.xmpp.org/web/XMPP_2.0

  135. zinid

    Ge0rG is making it concrete :D

  136. Kev

    Zash: I think I'm explicitly trying *not* to redo everything from scratch.

  137. Guus

    Kev: that'd make for a good disclaimer on that page

  138. Guus

    on top

  139. Guus

    bold

  140. Guus

    in <blink>

  141. zinid

    lol

  142. zinid

    drama

  143. Zash

    Is there anything on that page that's actually breaking compat enough to warrant a 2.0?

  144. Zash

    I mean, I imagine things like getting rid of 'jabber:client' and 'jabber:server' etc, and having a single unified namespace.

  145. Ge0rG

    Kev: I'm trying to redo from scratch the minimum amount of things so we can fix up our shit already.

  146. Ge0rG

    Zash: maybe it's only XMPP-IM 2.0

  147. Ge0rG

    my goal is not to break everything but to fix everything :P

  148. zinid

    bind and sasl are defined in rfc6120, so this cannot be solved inside xmpp-im solely (unless we accept bind2 and sasl2)

  149. Ge0rG

    zinid: bind2 can be a new XEP, without breaking anything actually.

  150. Ge0rG

    Redoing the message routing is much more tricky.

  151. jonasw

    Zash, I chose the name for that wiki page, and initially it wasn’t clear to me if we might have to override some ruling from the RFCs, basically warranting a 2.0

  152. Zash

    If you do things in the context of a negotiable stream feature, then I'm not sure I think that should be called XMPP 2.0

  153. jonasw

    Zash, that’s just a name anyways

  154. jonasw

    let’s call it a working title :)

  155. Ge0rG

    The name is the most important thing about a project!

  156. Ge0rG

    What about Session 2.0?

  157. Zash

    Ge0rG: I think you mean the logo, closely followed by the fancy website on a cool domain

  158. Guus

    The color is.

  159. Zash

    There's that old <session/> stream feature that's basically a noop everywhere I know

  160. zinid

    Ge0rG: there are other problems beyond message routing

  161. zinid

    Ge0rG: rosters, presences, all this shit is not modern anymore

  162. Zash

    Whut

  163. jonasw

    Ge0rG, Session 2.0 may indeed be a reasonable name

  164. zinid

    Zash: popular IMs don't even have presences, there is no point in them when everybody is online almost always

  165. Zash

    I don't think any of that should be removed, but I'd like message routing to be detached from presence.

  166. Zash

    Just because "popular IMs" don't show something front and center anymore doesn't mean it doesn't have its uses

  167. Ge0rG

    zinid: there is even a business use case for presence: synchronized DND

  168. zinid

    I didn't say it's useless, I said "not modern", meaning not used in popular IMs

  169. Kev

    I think lots of them have presence.

  170. Kev

    Slack, Discord, Whatsapp, Facebook all have presence.

  171. Zash

    And I'm not going to listen to arguments that boil down to "because popularity", if I cared about that I wouldn't be here.

  172. Ge0rG

    There is real value in presence, and that's actually something that works pretty well on mobile, outside of initial presence flood from your roster when you connect.

  173. edhelas

    you have two kind of presences usages in the clients, manual (set by the user) or automatic (set by the client itself)

  174. zinid

    yeah, but it seems like they transmit only "chat" status

  175. daniel

    zinid: do you happen to know who - if any - from the beam project is going to the mentor summit?

  176. zinid

    i.e. when I open an app, I become available, when I close the app I become unavailable

  177. zinid

    daniel: /me and Holger

  178. Holger

    zinid: I'm not going to the summit :-)

  179. zinid

    this is regarding ejabberd projects, I cannot say about other BEAM projects

  180. zinid

    ah

  181. zinid

    shit

  182. Holger

    I think Mickaël asked on the list and got no response.

  183. zinid

    I read it wrong way

  184. Holger

    So maybe nobody's going.

  185. daniel

    zinid: but you are coming, right?

  186. zinid

    no, sorry for confusion

  187. zinid

    I cannot leave russia, lol

  188. daniel

    That's too bad. Otherwise we would have had 3 xmpp related projects at the summit

  189. zinid

    maybe Mickael can go?

  190. zinid

    or Jerome? Chris?

  191. zinid

    but they are not mentors...

  192. Holger

    Trying to find his email.

  193. daniel

    If you haven't decided yet (and registered) then it's probably too late

  194. edhelas

    are we talking about the FOSDEM summit here ?

  195. daniel

    But they don't have to be mentors

  196. daniel

    edhelas: gsoc

  197. Holger

    zinid: Ah got it. No response indeed.

  198. edhelas

    oh ok

  199. zinid

    Holger: I don't even remember his mail

  200. daniel

    Have you never sent people to the summit?

  201. daniel

    It's a free trip to the US

  202. Holger

    zinid: It was on one of the 1,000 GSoC-related lists, maybe he forgot to add you to that one :-)

  203. daniel

    And each time you can roll the gitmo dice

  204. zinid

    no idea, I'm really not into this summit stuff, Mickael is usually managing this

  205. Holger

    daniel: Last year someone from some other BEAM project went.

  206. Holger

    zinid: gsoc-mentors@process-one.net on Tue, 19 Sep 2017 09:25:38 +0200.

  207. zinid

    Holger: I'm not subscribed ;)

  208. Holger

    Hah.

  209. zinid

    yeah, I'm a terrible mentor, I said that :)

  210. zinid

    I have a note: XMPP 2.0 Session Initiation The client and server must coordinate the required information for a sync as soon as possible: Authenticate Client sends a bind2 request containing: stream resumption id (optional, to faciliate Stream Resumption) last-known MAM message-id (optional, to achieve full synchronization) MAM request with a time-delta (optional, alternative to message-id if only the history of the last N time units is needed) initial presence (maybe?) MUCs to join (maybe?) The server automagically figures out whether to do a stream resumption or a MAM sync and provides according data to the client, generates presence broadcast accordingly

  211. zinid

    I think we're reinventing Matrix approach here in fact

  212. zinid

    not that it's bad

  213. zinid

    but what I see here is actually database synchronization between a server and a client

  214. Ge0rG

    zinid: I think it's good to treat session setup as a way to tell the client everything that changed since the last connect.

  215. Ge0rG

    zinid: exactly, xmpp based database synchronization.

  216. zinid

    Ge0rG: yes, but it looks overcomplicated, in normal situation you just need to send a point from where to download

  217. zinid

    and I also think MUCs and one-to-one chats should not be treated differently

  218. zinid

    like in matrix, hehe

  219. zinid

    not sure why we need stream resumption, the messages are in MAM already

  220. zinid

    seems redundant as well

  221. edhelas

    zinid, don't forget the Pubsub/PEP synchronisation as well

  222. edhelas

    that's wht we were looking into https://xmpp.org/extensions/xep-0312.html

  223. Ge0rG

    zinid: because session setup is much more expensive than resumption, and you will lose outgoing messages without the latter

  224. edhelas

    when I'm loggin in I'm spammed by hundreds of PEP/pubsub notifications for things that I already had before

  225. zinid

    edhelas: well my idea is to have a "routing block", it can be a room or one-to-one chat or a pubsub-eventer where you can subscribe and unsubscribe, that's it

  226. zinid

    edhelas: you're spammed because the desing is shit :P

  227. edhelas

    the design, or the implementation :p ?

  228. Ge0rG

    zinid: I'm not a fan of MUC MAM, but I try not to reinvent everything.

  229. Ge0rG

    Maybe it's a good idea in the grand scheme to have all MUCs synchronized to all devices by default.

  230. Alex

    Announcement : Board & Council elections 2017 https://wiki.xmpp.org/web/Board_and_Council_Elections_2017

  231. jonasw

    Alex, nice work :)

  232. goffi

    Alex: s/2014/2017/

  233. Alex

    fixed :-)

  234. goffi

    :)

  235. Alex

    now you can add your names :-)

  236. SouL

    :D

  237. Alex

    or recruit the people who you think will do a great job in those roles

  238. Guus

    Can we simply add those? 😈

  239. Ge0rG

    Alex: yay!

  240. Ge0rG

    It would be interesting to see "nominations"

  241. Guus

    Likely: Boardy McBoardface and possibly all guys from Matrix.

  242. jonasw

    looking forward to see who runs for board and council.

  243. Ge0rG

    I'd elect Boardy McBoardface. For Council.

  244. dwd

    A vote for Boardy McBoardface is actually a vote for David Attenborough, though.

  245. jonasw

    how that?

  246. Ge0rG

    Maybe because of https://www.change.org/p/jo-johnson-sir-david-attenborough-to-change-his-name-to-boaty-mcboatface

  247. Zash

    David McDavidface?

  248. Ge0rG

    Darth Zash.

  249. Ge0rG

    dwd, Kev: so I'm trying out a new presentation form: https://op-co.de/tmp/whats-wrong-with-xmpp-2017.pdf

  250. edhelas

    when is this conference planned ?

  251. Ge0rG

    edhelas: this is the slide deck for a fictive conference.

  252. zinid

    Ge0rG: nice list ;)

  253. Ge0rG

    zinid: I knew you'd like it.

  254. mathieui

    Ge0rG, "MAM + MUC = madness" why?

  255. Ge0rG

    mathieui: because you have to query individual MUCs for their archives, there are different incompatible versions etc.

  256. zinid

    Ge0rG: but isn't this a good idea? to query only what you need, e.g. when you login you receive a list of mucs with unread messages number, you don't need to query them all, only when a user opens the chat window/tab

  257. mathieui

    which reminds me I have to patch mod_mam_muc at some point too

  258. Zash

    ?

  259. mathieui

    Zash, muc archives are forever

  260. mathieui

    which is bad

  261. mathieui

    and also open to anyone, even someone not in the room

  262. mathieui

    so you can scrape remotely any public MUC for its whole lifetime

  263. Ge0rG

    zinid: maybe. Depends on whether you want a full-sync client or on-demand sync

  264. Zash

    mathieui: Pretty sure it respects members-onlyness

  265. mathieui

    Zash, yes, it does

  266. mathieui

    for members-only rooms, for which it indeed works like that

  267. Zash

    mathieui: I've considered making it optionally restrict access to eg members only, even in public rooms.

  268. mathieui

    the best way would be a muc configuration toggle

  269. Ge0rG

    See, madness!

  270. Ge0rG

    That ejabberd MSN bug is really bugging me.

  271. Ge0rG

    Oh, it's different now.

  272. jonasw

    I see what you did there.

  273. Ge0rG

    I didn't do anything!

  274. jonasw

    can we re-trigger a website build to update https://xmpp.org/extensions/ ?

  275. jonasw

    (two new XEPs)

  276. Guus

    Kev, can you give me that privilege in hub.docker.com please?

  277. SamWhited

    jonasw: Do you mean on Docker Hub or on EOS? It will happen automatically after a while I think; pretty sure Kev put it on a cron job.

  278. SamWhited

    I can trigger a rebuild on Docker Hub if that's all you need (I think?)

  279. Guus

    I put it in a cronjob

  280. Guus

    Sam, yes please

  281. Guus

    the cronjob will only check for a new docker image

  282. SamWhited

    oh, sorry, I lied, I don't have my credentials on this machine, sorry

  283. Guus

    jonasw: find a typo, submit a PR, I'll merge :D

  284. moparisthebest

    Guus, add or remove a space? :P