When doing multiple follow-up LMCs, do I reference the original message id or the follow-up message id?
vanitasvitaehas left
Ge0rG
> A single message may be corrected multiple times by subsequent edits.
The XEP doesn't quite tackle that explicitly
jonas’
Ge0rG, the original
Ge0rG
Aslo should a client allow both?
jonas’
IMO, no
Ge0rG
I think yaxim will overwrite the stanza ID with the correction's ID.
Ge0rG
I mean a _receiving_ client
Link Mauve
poezio does the same.
Ge0rG
so poezio will correct the last correction and not the original message?
Ge0rG
So it means I need to support both?
Link Mauve
The semantics are defined as replacing the message.
Link Mauve
This includes the id.
Ge0rG
Who promoted that shit to Draft?
jonas’
Link Mauve, only payloads though
Link Mauve
We have a linked list of older versions in the case the user wants to see a previous version, but we don’t recognise the old id as part of the discussion anymore.
jonas’
> It is expected that the receiver SHOULD then treat the new stanza as complete replacement for all the payloads received in the original stanza.
jonas’
> for all the payloads
jonas’
the @id is arguably not payload
Link Mauve
Ugh, I guess I missed that.
pep.
Would it be possible to get stuff, fliers/stickers/stuff to put on the table to say "Here is the XMPP assembly" (that I can maybe build with stickers myself)
pep.
for the CCC
Ge0rG
pep.: SCAM team?
pep.
scam@ ?
pep.
https://signup.c3assemblies.de/assembly/982f5ea6-fcea-4c1e-965d-8ef478149ac0 ! (wondering if others can see that)
rionhas left
rionhas left
rionhas left
rionhas left
rionhas left
lnjhas left
alacerhas joined
alacerhas left
alacerhas joined
guusdkhas left
guusdkhas left
guusdkhas joined
rionhas left
guusdkhas left
guusdkhas joined
alacerhas left
danielhas left
guusdkhas left
guusdkhas joined
rionhas left
rionhas left
guusdkhas left
guusdkhas joined
lumihas left
lskdjfhas left
lhas left
lhas joined
lhas joined
lskdjfhas joined
j.rhas joined
404.cityhas left
blablahas left
Alexhas joined
Holgerhas left
vanitasvitaehas left
vanitasvitaehas joined
Zashhas left
404.cityhas joined
j.rhas joined
Zashhas left
Zashhas joined
Zashhas left
Zashhas joined
Zashhas left
Zashhas joined
moparisthebesthas joined
Ge0rG
jonas’: how does JabberCat handle that correction-of-correction?
jonas’
it doesn’t implement LMC yet
jonas’
but in my mental model I was expecting to see the original ID
Ge0rG
lovetox: which message ID does Gajim referene on a correction of a correction?
Ge0rG
Conversations also corrects the last ID and not the original one
jonas’
meh
jonas’
then we’re doomed
guusdkhas left
guusdkhas left
guusdkhas joined
Zash
Doooomed
flow
or we could make a list of the pros and cons of the different approaches and after careful evaluation aggree on exactly one
jonas’
flow, that sounds good
jonas’
Ge0rG, would you care to take it to the list?
Ge0rG
jonas’: you are lagging
jonas’
sorry :)
rionhas left
Ge0rG
I should keep a list somewhere of my questions to standards@ that never got answered
jonas’
Ge0rG, you got an answer!
jonas’
(but the list is probably still processing it)
rionhas left
rionhas left
flow
he said blockchain!
jonas’
:)
rionhas left
MattJ
I'm surprised it got through the spam filters
jonas’
hah
lhas joined
matlaghas left
rionhas left
moparisthebesthas joined
rionhas left
Ge0rG
> he said blockchain!
ITYM Smart Contracts
rionhas left
lskdjfhas left
moparisthebesthas left
lskdjfhas left
moparisthebesthas joined
lskdjfhas joined
waqashas joined
rionhas left
Alexhas left
!xsf_martinhas joined
Alexhas joined
lovetox
Gajim corrects the last message
lovetox
i always thought its pretty clear what that means
lovetox
protocol wise the last message that was sent out by the client
lovetox
not what the user may think was the last message or what the UI shows him as last message
jonas’
that’s also a nice rationale
lovetox
this all does not change though that the XEP allows to correct every message
lovetox
not only the last
lovetox
its just a recommendation
jonas’
requiring to correct the original @id and forgetting about the correction @id makes not-last message correction consistent though
Marandahas joined
jonas’
otherwise you can make a tree of corrections :)
jonas’
(well, you could also specify to forget the original @id and only keep the corrected one to fix that tree)
lovetox
i always thought this works good, you basically make a linked list of messages, every message references the one before with a correction
daniel
I forget the old one
jonas’
also, lovetox, daniel, to standards@ please
jonas’
otherwise Ge0rG is sad that he doesn’t get on-list replies ;-)
daniel
lovetox: so just to be clear about. When you correct for the second time you correct the id of the previous connection not the original one?
lovetox
yes
daniel
*Previous correction
Marandahas joined
lovetox
the last message protocol wise
Ge0rG
daniel: you are still listening, right?
lovetox
the last message i sent out
daniel
Then four clients independently made the same decision
daniel
That seems pretty clear to me
daniel
I mean we can clear up the xep
jonas’
yes please
Ge0rG
BLOCKCHAIN!
jonas’
I would’ve implemented it differently
Ge0rG
but jonas’ is right, this implies a tree and not a list
daniel
Not if you forget the old one
daniel
Which lovetox and I are doing
Ge0rG
but if we always reference the original, this is a star topology
jonas’
flattened by timestamps
Ge0rG
daniel: "forgetting" is an important point BTW, what if you only have the last N messages, and the original is N+1
Ge0rG
and are you keeping the timestamp?
daniel
Not sure about timestamps
jonas’
Ge0rG, then you already know which IDs you can ignore :)
daniel
I think I might use the new timestamp
daniel
But I can check later
Ge0rG
in yaxim, the correction timestamp overrides the original one, moving the LMC to the bottom of the chat
lovetox
Ge0rG, you cant know what message i want to correct
lovetox
i send you a message with a reference to an id
lovetox
and you correct that
lovetox
you have to pre prepared to get a message referencing the last message you received
daniel
Can I propose YMC again
jonas’
YMC?
daniel
Yolo message correction
daniel
Anyone can correct any message
jonas’
oh dear
Ge0rG
lovetox: I lost you.
lovetox
i dont know why you care what message i correct
lovetox
"the original" or some other message
lovetox
when implementing that i didnt spend one thought about what messge another clients wants to correct and if its a original or not
jonas’
lovetox, the question is then how you decide what is displayed, maybe?
jonas’
I don’t konw, I can’t follow
lovetox
message comes in -> has id ref -> look is that id the last message for that client -> yes -> overwrite that message in gui
jonas’
which would break if your interpretation of what constitutes the "last message" diverged from everyone elses (which it doesn’t)
Marandahas joined
jonas’
i.e. if everyone (except you) agreed that replacement does not create a new "last mesasge" and thus would be using @id of the original message, you wouldn’t be able to handle re-corrections at all (because your flow would discard it because it’s not hte "last message")
jonas’
and this is why it’s sensible to think about this
lovetox
correct
jonas’
you just got lucky that your intuition matched that of others :)
jonas’
(mine didn’t)
lovetox
in my opinion this is a easy to follow rule that every client can check
lovetox
the last message i received over the wire
lovetox
every other definition depends on what you do with your UI
lovetox
what you show the user
lovetox
what you do in your db
jonas’
not really
jonas’
also
jonas’
by that argument
marchas left
jonas’
do you allow corrections after you have seen Chat STate Notifications from a client?
marchas joined
jonas’
or Chat Markers
jonas’
which are also messages
lovetox
thats not what i meant
jonas’
but it’s the same thing :)
lovetox
obviously we talking about stuff that has a body
jonas’
not that obvious
lovetox
my point is
jonas’
you could treat corrections as meta-message just like CSN or Markers, apply its effect (replace previous messages payload) and not include it in the "messages" array.
jonas’
it is not that obvious, is all I’m saying
lovetox
how should i know that if i reference a id that is 3 messages back, is till the last message for your client?
jonas’
dinner
jonas’
because you don’t include the corrections in your list of "messages"
rionhas left
rionhas left
404.cityhas left
guusdkhas left
lovetox
> A single message may be corrected multiple times by subsequent edits.
lovetox
for me this is just stating that this is possible
Ge0rG
lovetox: your ML message is as ambiguous as what you write in here. I can't follow you
lovetox
what is ambiguous?
Ge0rG
lovetox: in terms of the two examples you provided to Андрей, which one is Gajim sending out, and which one of those it understands when receiving?
lovetox
that post was a question to the list
lovetox
and not to answer your question
lovetox
see my other ML reply to answer your question
Ge0rG
lovetox: but your answer to my question also didn't answer my question
lovetox
whats not clear about it?
lovetox
how can the "last message that is sent over the wire" be ambiguous
lovetox
?
Ge0rG
lovetox: so you reference the id of the last correction?
Ge0rG
or rather, previous correction
lovetox
yes
lovetox
i dont see the value in the other approach, instead of just checking the last message, you would have to check all messages between the original and the last correction
Zashhas left
lovetox
you must check that all these messages are corrections of the original, otherwise you would have to deny the correction
Ge0rG
how will Gajim handle a received message correcting the original ID?
lovetox
it denys all messages that dont reference the last message that was received
lovetox
deny meaning its displayed not as correction
Ge0rG
thanks
lovetox
thats my idea of it, i never put it to a test in gajim though ^^
lovetox
my idea how the code should work, and what it actually does are sometimes not the same thing
!xsf_martinhas left
goffi
Hello. In XEP-0198 what happen if client specify a prefered maximum resumption time ("max" attribute) and server specify an other one? I don't see the point of having 2 different values (except if the server has a default value and overwritte it by client prefered value, but nothing like that is specified).
sonnyhas joined
guusdkhas left
Holger
goffi: The client can specify a desired value, but the server decides.
goffi
Holger: OK thanks, in this case the formulation in the XEP is bad, it states "he <enabled/> element MAY include a 'max' attribute to specify the server's preferred maximum resumption time.", it's not preferred value, it's authority value: the one which will be used.
Marandahas joined
Andrew Nenakhovhas joined
Holger
goffi: Revision 0.7 had this:
> the <sm/> element MUST include a 'max' attribute that specifies the longest allowable time period for session resumption (in seconds).
https://xmpp.org/extensions/attic/xep-0198-0.7.html
Holger
I guess in the end it's not really interesting for clients. I guess they'll usually just try to resume as fast as possible, and they must be prepared to handle a <failed/> resumption no matter whether they're within the 'max' time period or not.
lovetox
yeah, i dont see how this is useful for the client
moparisthebesthas joined
moparisthebesthas joined
Andrew Nenakhovhas left
Andrew Nenakhovhas joined
blablahas left
lumihas joined
rionhas left
labdsfhas left
Link Mauvehas left
krauqhas joined
krauqhas joined
Link Mauvehas joined
danielhas left
SamWhitedhas left
Andrew Nenakhovhas left
labdsfhas joined
danielhas left
danielhas left
danielhas left
goffi
Holger: it's interesting for client to know when the session can be deleted.
goffi
I don't think it's really interesting to specify, as the server have authority anyway, but knowing when the session ends is useful, and it should be a "MUST" and not a "MAY" in my opinion (in <enabled/>).
Andrew Nenakhovhas joined
Marandahas left
danielhas left
Holger
goffi: At least with ejabberd, the timeout for a given session can change after <enabled/>, so I'm not sure ejabberd could adhere to such a MUST clause.
goffi
Holger: how does it changes ?
Holger
The server can be configured in a way that enabling of push notifications increases the timeout drastically. And then when an actual push notification is generated, the original timeout is restored. Stuff like that.