-
Guus
Has anyone worked on an approach that would allow you to terminate XMPP TLS on a load balancer, rather than on an XMPP server itself? With duplication of some certificate material, that's probably easily doable for BOSH and websockets - but StartTLS?
-
Zash
Only in my head.
-
MattJ
IIRC the old stuff for nginx could do that
-
Kev
It's easy enough if you can cooperate.
-
MattJ
https://github.com/robn/nginx-xmpp
-
Zash
Hard if you want channel binding other than the certificate one
-
Zash
or client cert auth
-
Kev
Like I say - those things are easy if you can cooperate (and trust). But yes, they're hard if you can't.
-
jonas’
Guus, the xmpproxy thing by moparisthebest?
-
jonas’
https://github.com/moparisthebest/xmpp-proxy/
-
MattJ
Of course, I forgot (?) that can do starttls
-
Zash
Vaguely relevant new thing: https://www.rfc-editor.org/info/rfc9440
-
Guus
Oh, that's a lot more information than I anticipated receiving - thanks :)
-
Guus
Not using StartTLS but direct-tls / 5223 instead, that'd make things easier too, right?
-
Zash
Yes but no
-
Zash
No channel binding or cert auth, thus no s2s with Modern® servers :)
-
Guus
aye - I'm caveating my documentation that this largely applies to client-connections only (where SASL EXTERNAL is rarely used)
-
Zash
Channel binding is nice tho
-
jonas’
the readme of xmpp-proxy suggests that it works for s2s, too
-
jonas’
I wonder how that works (if it forces dialback or what)
-
Zash
Unless it uses the component client method
-
jonas’
uhhh
-
jonas’
that'd be nasty and awesome
-
jonas’
I think I considered using that in the past
-
Zash
But since I would like Dialback to go away, of course it will come back and become mandatory again, just like vcard-temp :(
-
singpolyma
jonas’: iirc xmpp-proxy works for s2s by needing a module on the server side to accept cert auth information and such from it
-
Guus
this one? https://www.moparisthebest.com/mod_s2s_outgoing_proxy.lua
-
Guus
(taken from https://github.com/moparisthebest/xmpp-proxy/#how-do-i-adapt-my-running-prosody-config-to-use-this-instead )
-
singpolyma
I think so
-
Zash
Looks like that only overrides where outgoing connections are directed, in a way that will only work with older Prosody.
-
Guus
A little further down, there's another prosody script
-
Guus
It's all lua to me. ;)
-
jonas’
singpolyma, that's outbound, not inbound
-
Guus
There is this reference in the text, suggesting that a module is being pushed to a more central repo: "Until prosody-modules is updated"
-
Zash
Just looks like things that override the security checks.
-
opal
> But since I would like Dialback to go away, of course it will come back and become mandatory again, just like vcard-temp :( i assume with s2s mandatory tls recommendation, servers would just verify one another's certificates and that's the proof of a legit connection?
-
opal
>Has anyone worked on an approach that would allow you to terminate XMPP TLS on a load balancer, rather than on an XMPP server itself? i have only ever terminated incoming connections but outgoing ones are still made via the jabberd
-
opal
kind of the harsh reality of a monolithic network daemon
-
moparisthebest
Yes xmpp-proxy validates client cert for incoming s2s connections (and supplies it for outgoing) and the prosody module exists to make it accept SASL EXTERNAL auth implicitly (because xmpp-proxy won't even connect to prosody unless it's already succeeded)
-
moparisthebest
https://github.com/moparisthebest/xmpp-proxy/blob/master/contrib/prosody-modules/mod_secure_interfaces.lua this is the sasl external one
-
nicoco
Kev: Wouldn't it be reasonable to amend `Last Message Correction` to allow edits being targeted at the `<stanza-id>` in MUCs? I think it's a bit of a bookkeeping nightmare with with replies, retractions, reactions, and maybe future XEPs. I have submitted one issue in relation to reactions for dino* and I'll submit a 2 additional ones soon concerning replies in the context of edits and . I suspect the dino devs are not the only ones who will get confused when they implement. Maybe with a namespace version bump? * https://github.com/dino/dino/issues/1468✎ -
moparisthebest
https://github.com/moparisthebest/xmpp-proxy/blob/master/contrib/prosody-modules/mod_s2s_outgoing_proxy.lua is the redirect connections one that also does it
-
nicoco
Kev: Wouldn't it be reasonable to amend `Last Message Correction` to allow edits being targeted at the `<stanza-id>` in MUCs? I think it's a bit of a bookkeeping nightmare with with replies, retractions, reactions, and maybe future XEPs. I have submitted one issue in relation to reactions for dino* and I'll submit a 2 additional ones soon concerning replies in the context of edits and MAM. I suspect the dino devs are not the only ones who will get confused when they implement. Maybe with a namespace version bump? * https://github.com/dino/dino/issues/1468 ✏
-
moparisthebest
I didn't realize I had linked ancient versions of the module from the readme :( thanks Guus
-
Guus
> Yes xmpp-proxy validates client cert for incoming s2s connections (and supplies it for outgoing) and the prosody module exists to make it accept SASL EXTERNAL auth implicitly (because xmpp-proxy won't even connect to prosody unless it's already succeeded) That means one should avoid having a way connecting to the server outside of xmpp-proxy, I assume?
-
moparisthebest
Yes, at least with how this module is written
-
moparisthebest
If you made it only do it on certain ports that would be an alternative
-
Guus
or maybe have something silly as a shared secret?
-
Guus
anyway, not the point. It's all pretty interesting. It's slightly veering off from my load balancing topic (assuming it doesn't do that), but interesting, nonetheless.
-
moparisthebest
Right now it only connects to a single backend TCP port, but that could be made to randomly connect to one of a list easily, or that port could be load balanced
-
Zash
Obviosuly the web solution there is to add a proxy that load balances
-
Menel
Isn't srv records already ready to use for load balancing? Records with the same priority would balance per relative weight
-
Zash
The web shuns SRV records
-
Menel
Would be too elegant?
-
Zash
Only adding more and more proxies can be an acceptable solution on the web
-
opal
i tried setting up a secondary prosody server using appropriate SRV records but i stopped when i realised that it might not even be a supported configuration yet (i'll have to check again though)
-
Guus
SRV records can be handy, but it doesn't play nice with HTTP-based solutions. Also, it is perceived as more static of a configuration than what some load balancers allow you to do.
-
moparisthebest
slap xmpp-proxy in front and you can do both c2s and s2s over websockets :)
-
Guus
`client --[websocket]--> xmpp-proxy --[tcp]--> load-balancer --> xmppserver` ?
-
Zash
Guus, you need at least two HAproxy intsances and three nginx in that to advance to the next level
-
singpolyma
opal: doing it with SRV is sensible, but prosody specifically you need to be *very* careful using anything but a single node and for most uses it won't work or will only cause pain
-
opal
yeah my idea was just to have the replica with read-only access to the database for auth, and that way it would serve as a limited-availability fallback where users could just not modify their roster or somesuch, which is acceptable
-
moparisthebest
Guus: that'll work *now* yes, if you wanted naive load balancing in xmpp-proxy it'd be easy to add (just take a list of backend and randomly choose one to connect to)
-
opal
if prosody can let me do that then i could set it up that way and have postgres replication as well
-
moparisthebest
opal: you mean a limited-availibility fallback where users can't message other users on the same server and nothing else works, don't do it :P
-
opal
you just lose MAM, right?
-
opal
messaging is stateless after it's sent and as long as any plugins didn't hook into it
-
Guus
moparisthebest: I'm not explicitly looking for support. As I'm drafting Openfire documentation, I'm wondering about possible load balancing setups - this being possibly one of them - a bit of an outlier, maybe, but perhaps useful to someone.
-
opal
omemo has a few extra steps involved but i'm not too worried about that either
-
opal
i've run prosody with a downed postgres db, all it did was make sure i couldnt log in when i got disconnected
-
opal
i could still talk fine
-
moparisthebest
opal: but if you have prosody server A and B that both serve example.org and alice is on server A and bob on B they can't message each other, and outside servers will only be able to message one of them, it'll be a confusing mess
-
moparisthebest
Guus: sure, still something for me to think about so thanks :)
-
singpolyma
moparisthebest: well, the idea is to only use B if A is down
-
opal
moparisthebest, the intention is that server A is down, but yeah, i can see that scenario being unavoidable regardless (when server A comes back up and people don't disconnect from B)
-
moparisthebest
singpolyma: sure but you can't do that with only srv records
-
opal
so prosody would definitely need support for that :)
-
opal
definitely a split-brain problem inherent in xmpp, idk if backup xmpp servers ever were implemented properly? with mail it's a no-brainer, since mail supports relaying fine
-
singpolyma
For the "a comes back up" case you could kick everyone off B manually. But yeah, edges abound that's why I said. E careful✎ -
singpolyma
For the "a comes back up" case you could kick everyone off B manually. But yeah, edges abound that's why I said be careful ✏
-
opal
mhm
-
singpolyma
If your server supports internal multinode coordination (such as ejabberd or jackal) then you can probably do this much more easily
-
opal
ohh ejabberd handles this ok... i had weird luck with that before, but i could definitely look at how it's implemented there
-
opal
"that" being "switching from prosody to ejabberd"
-
opal
so i switched back :p
-
Kev
You need to consider what type of redundancy you want, because it greatly affects how you implement the clustering code. E.g. some servers are just quorum-based, and a node is either in quorum and available, or not (I think jackal probably works this way, as it's etcd behind the scenes, I think), other servers (e.g. M-Link) degrade down to single node operation with eventual consistency, so that e.g. two sites that lose connectivity can continue to operate locally.
-
opal
"eventual consistency" seems like one of those things to introduce even more unpredictability to the end-user experience; i'd honestly rather have a "dumber" fallback in lower prio of SRV so at least people know when service is degraded (by receiving errors on certain operations)
-
Kev
Like I say - it depends what you want.
-
opal
call me too careful but thats my thought process, especially having had to deal with other areas of xmpp where clients get confused on one server :p
-
opal
yep
-
opal
i hear "my client cant decide which avatar to show" too often
-
Guus
Although Openfire-specific, I'd love some feedback on the load balancing documentation that I've drafted in https://github.com/igniterealtime/Openfire/pull/2224 - if only to confirm that I'm not writing absolute untruths, or to highlight something that would be good to add.
-
opal
oh Guus so openfire supports what we were talking about, nice
-
opal
i'm giving it a read
-
opal
https://github.com/igniterealtime/Openfire/pull/2224/files#diff-b9adf940bc94bbf75fb3c7174f963478a950e06f466e3e02cc3fb9709be9785bR60 superfluous apostrophe you cite your rfcs, srv priority example is right, the rest looks openfire-specific so you would know more about that than me, but yeah it all looks good
-
Guus
Thanks!
-
moparisthebest
xmpp-proxy doesn't do BOSH (yet?) only starttls, direct TLS, websocket, quic
-
moparisthebest
Otherwise looks good!
-
Guus
Thanks! No obvious omissions? It is hard to think of the thing that you're not thinking of...
-
Guus
(I removed the BOSH reference with xmpp-proxy)
-
opal
merge it lol
-
opal
additions will come
-
Guus
sure, nothing gets so much attention and maintenance as documentation! ;)
-
opal
oh believe me theres always one person lurking like a hawk and then they email you when you already know about it
-
opal
(im that person sometimes)
-
Guus
Happy to be on your list now :)
-
Guus
(it's merged)
-
opal
nice
-
lovetox
nicoco, about your corrections question, this would not work in MUCs without MAM. This also does not work in single chat. Why would you want a approach that works in all conditions (message-id) to change, where i suddenly have to consider the context
-
lovetox
i find this way worse from a implementation standpoint
-
lovetox
I compiled a table
-
lovetox
XEP-0308 (Corrections) Message ID XEP-0333 (Marker) Message ID / Stanza ID XEP-0444 (Reactions) Message ID / Stanza ID XEP-0461 (Replies) Message ID / Origin ID / Stanza ID XEP-0424 (Retraction) Origin ID XEP-0425 (Moderation) Stanza ID
-
lovetox
For Corrections, stanza-id makes not much sense
-
lovetox
you can always correct only your own messages, so if we want to move a way from message-id to signal that unique id is in use, origin-id would be better
-
singpolyma
Doesn't message@id be problematic in MUC because the MUC is in no way required to preserve the ID attribute to all recipients of a message?
-
lovetox
there is no reason to depend on server generated ids for the correction usecase
-
singpolyma
I thought that's the while reason replies etc talk about <stanza-id.✎ -
singpolyma
I thought that's the while reason replies etc talk about <stanza-id> ✏
-
singpolyma
I thought that's the whiole reason replies etc talk about <stanza-id> ✏
-
Kev
> Doesn't message@id be problematic in MUC because the MUC is in no way required to preserve the ID attribute to all recipients of a message? That was historically true, but isn't any more, unless I'm misremembering.
-
singpolyma
I thought that's the whole reason replies etc talk about <stanza-id> ✏
-
lovetox
yes this was changed in the MUC XEP
-
singpolyma
MUC xep requires ID attribute preservation now?
-
lovetox
and there is no relevant amount of servers in the wild that dont do this
-
singpolyma
So we can maybe remove the <stanza-id> stuff from other xeps also?
-
lovetox
About what XEP are you talking exactly?
-
lovetox
stanza-id was not only considered because of that problem with MUCs
-
lovetox
there are other reasons depending on the XEP
-
singpolyma
Reactions, replies, retractions, moderation
-
lovetox
did you see my table above?
-
MattJ
There was only ever (to my knowledge) a single (not open-source) implementation that didn't preserve message@id through MUCs, and it's my understanding that even that implementation changed many years ago. origin-id was created as a workaround for that, but stanza-id was not.
-
lovetox
retractions does not use stanza-id
-
lovetox
moderation is a good use case for stanza-id, because i moderate a message in the server archive
-
lovetox
its only MUC context
-
lovetox
there is no moderation in single chat
-
singpolyma
MattJ: biboumi also does not I bet, but that's not super relevant for these xeps
-
MattJ
<stanza-id/> used to be <archived by="server" id="0b359a68-2ca5-11ee-aa94-2f606f872410"/>
-
Kev
origin-in can (theoretically) just go away at this point.✎ -
Kev
origin-id can (theoretically) just go away at this point. ✏
-
MattJ
(in the MAM namespace)
-
Kev
But you still need other entities to be able to put an id on something going through, e.g. MAM.
-
MattJ
But then it was suggested that we should make the ids generic, beyond MAM
-
MattJ
Hence stanza-id
-
Kev
What Matt says :)
-
lovetox
Kev, i would argue origin-id is good because a client can signal he understand the concept of unique ids and uses it
-
MattJ
lovetox, might as well just say that every client using unique ids should put a certain prefix on the attribute value
-
singpolyma
We only have stanza-id because message@id isn't required to exist or be unique, basically. But some of these xeps could just say "if you implement this xep you need unique IDs" like corrections does
-
MattJ
That saves another element and confusion between all the different ids
-
lovetox
yeah if you design a protocol new
-
lovetox
now it would be a breaking change, to save a few bytes
-
lovetox
not worth it
-
lovetox
> We only have stanza-id because message@id isn't required to exist or be unique
-
lovetox
thats not true at all
-
lovetox
the server needs to assign its own id
-
lovetox
you cannot build a protocol where you hope that all clients use unique ids and insert this into your archive ..
-
singpolyma
How is that different from what I said?
-
singpolyma
The issue is that message@id may not be unique
-
lovetox
you implied that if there was a standard that says message-id MUST be unique
-
lovetox
message archives would need no stanza-id
-
lovetox
what im getting at is the word "required"
-
lovetox
it would make no difference if we write a standard and "require" it
-
lovetox
because there is no way to verify uniquness
-
singpolyma
We could debate that edge but for now it doesn't matter since the spec doesn't even require message@id to be present so it's pretty moot
-
lovetox
yes
-
singpolyma
But these newer xeps could require it
-
lovetox
there are XEPs that reference your own messages, they should use origin-id or message-id (if backwards compatibility is needed)
-
lovetox
there are XEPs that reference other peoples messages, and there in MUC its nice to use stanza-id because all messages are reflected by the server
-
singpolyma
But it would be nicer not to need to use stanza-id
-
lovetox
yes
-
lovetox
i think it would be best if they all switch to origin-id
-
lovetox
its nice though that stanza-id cannot be forged
-
singpolyma
They already usually use message@id for 1:1 and then for muc say "or maybe stanza-id" I think maybe we can just remove that maybe stanza-id part...
-
lovetox
i think in MUC, stanza-id, single context origin-id
-
lovetox
with stanza-id you dont have to think about clients faking id
-
lovetox
thats a big plus
-
singpolyma
Hmm. So the worry is that because you react by id only and not also sender what if a second sender does inb4 with same id? Hmm
-
lovetox
and in single context, it makes no sense to fake id
-
MattJ
FWIW I lean towards using the archive id for as much as possible, generally
-
lovetox
in MUC
-
MattJ
It's only a pain for the period of time where the sender does not know what it is
-
lovetox
in single context it makes no sense
-
lovetox
there is no gain in single context, only complexity
-
lovetox
there is no attack vector
-
lovetox
a contact that sabotages ids in single context, only sabotages itself
-
lovetox
and you can simply block him, and stop talking to him
-
lovetox
in MUC you can really get on peoples nerves and make chaos
-
singpolyma
I really hate that stanza-id exists at all, but I guess since we have it, now that this vector has been explained to me I understand the need better for these attachment in muc cases
-
MattJ
Why do you hate that it exists?
-
MattJ
You think message archives should be keyed by the ids chosen by third parties?
-
lovetox
i think by accident we are in pretty good shape actually with the XEPs
-
lovetox
all XEPs that reference other peoples messages, use Stanza ID in MUC
-
lovetox
and origin-id / message-id in single chat
-
MattJ
I think it might be okay to dislike some applications of it, but in my head it's <archived by="" id=""/>, and that's desired, but then it also happens to be a useful identifier for other things to reference
-
singpolyma
If I were starting from scratch yeah, sender chosen IDs with namespacing by sender. Basically like how we do with email
-
singpolyma
> all XEPs that reference other peoples messages, use Stanza ID in MUC Yes. This is just annoying for implemetation. But I understand why it is that way now ↺
-
lovetox
and XEPs that reference your own message, its fine to use origin-id/message-id because receiver will validate the sender anyway
-
singpolyma
For stuff I send to 1:1 is something like self-carbons out there to discover the mam id?
-
MattJ
No, but it has been on my radar for years as something that needs to exist
-
MattJ
An alternative that was discussed at some summit was deterministic ids, which I do find attractive, but I think it has too many edge cases
-
singpolyma
Like mam id generated from message@id for sender only?
-
MattJ
The suggestion was to do something like hash(stream_id + counter)
-
MattJ
That way the client and server both agree (in theory) on what the id of each stanza would be
-
singpolyma
Could do mam id of. message@id + resource gets you the same thing with no possible desync
-
singpolyma
If client negotiates something useful about promising to send ids of course
-
MattJ
That relies on the client sending unique ids
-
MattJ
Server developers have a (deserved, IMHO) distrust of clients' ability to do that :)
-
singpolyma
Yes. So client would have to advertise such to the server
-
singpolyma
Well, if your client lies all it can do is mess up your own archive of your own sends
-
singpolyma
Server can also return error on duplicate id
-
lovetox
but why consider this, if there is a possibility to make it not happen?
-
lovetox
hash(streamid + counter) is easy enough
-
singpolyma
> hash(streamid + counter) is easy enough This sounds like a way to make everything always broken ↺
-
singpolyma
Also, why hash? Just streamid + counter but counters are very brittle
-
lovetox
we use counters with streammanagement all the time
-
MattJ
Yeah, and clients get them wrong all the time :)
-
MattJ
(you can see this in the logs of most public servers)
-
lovetox
the server can simply send an error if he calculates a different id
-
lovetox
and reject the message
-
singpolyma
Different than what?
-
lovetox
server is at counter 10
-
lovetox
client sends counter 1
-
lovetox
server rejects, because client cant count correctly
-
singpolyma
Where is client sending the counter?
-
lovetox
no message is sent
-
lovetox
yeah true, nobody said that
-
lovetox
i assumed it
-
lovetox
we use it as message-id
-
lovetox
or something
-
singpolyma
Right. So just use message@id but only if it fits some rules we can quickly verify
-
singpolyma
Server returns error if you break the rules
-
singpolyma
Rules can be "no dupes" or "count right" either is fine by me. I like this general idea
-
singpolyma
Benefit to using counter (now we're getting crazy) server could use it as a SM assertion also
-
lovetox
the pain with this is always, that clients need to support the old behavior anyway
-
lovetox
but if you dont start you will never come to a place where you can drop it
-
lovetox
sounds good enough, can be negotiated at stream start, was there any concerns, or just nobody moved forward with this?
-
singpolyma
For sure
-
lovetox
oh it would be in the MAM Xep, so MattJ would be the author :D
-
MattJ
There was a thread on the mailing list somewhere about it (which of course I can't link to right now)
-
singpolyma
I like this because it also strongly encourages good message@id at the expense of not being able to use uuid if we do the counter thing
-
MattJ
Well, certain things that are currently deployed may break
-
MattJ
For example, anything that encodes meaning into id attributes, which isn't commonly done, but there are definitely things that do
-
singpolyma
Oh yeah, I do all the time, but not from client
-
MattJ
Also at least Prosody delegates choosing an archive id for a message to the storage backend, and this is in active use
-
lovetox
message id was just an idea, but as the mam id is only relevant for ourself
-
lovetox
there is no reason to not just simply add a new element where we communicate this
-
lovetox
OR
-
singpolyma
I don't think new element helps anything here. Yet another element with the same content in it
-
lovetox
hmm .. message-id is not only for yourself
-
lovetox
its for other people
-
lovetox
MAM id is only for yourself
-
singpolyma
But with this we can make them the same which is a big benefit
-
singpolyma
The issue is if as MattJ says you have a storage system that needs IDs to be a certain way (maybe wants them sortable or whatever) then this might not be an option
-
lovetox
why?
-
lovetox
the db does not need to use this id as its sort id
-
MattJ
In some cases it might
-
lovetox
it simply can apply a integer entity key to the row
-
MattJ
Not everything is an SQL database :)
-
lovetox
oh wait .... could this be our sortable mam id
-
lovetox
but where is the problem, any streamid + counter is sortable
-
lovetox
how can it be ever not sortable?
-
lovetox
ah stream id changes on every connect
-
MattJ
It's not just about being sortable, but that the server might encode information into the id
-
MattJ
also while we're on the topic: stream id is traditionally considered sensitive
-
MattJ
and without doing a full review of whether anything still depends on that, it ought to stay that way
-
lovetox
then dont use the stream id, and simply communicate a mam context id in negotation
-
MattJ
Sure
-
lovetox
was there not a new standard about sortable UUIDs
-
lovetox
take that + counter
-
lovetox
but at this point why even use UUID
-
lovetox
server can simply generate a sequential id on every connect
-
lovetox
perfect, a id that is convertable to a integer
-
lovetox
where is the downside to this, that solves so many problems
-
lovetox
even the one i talked about a few days ago with keeping the sequence with backwards mam queries
-
lovetox
ah .. no that was MUC
-
lovetox
though MUC can simply use sortable IDs ..
-
singpolyma
... why would stream ID be sensitive?
-
singpolyma
I agree we can use some other thing (resource, new mam ctx id) if needed, but that seems like an odd thing to be sensitive
-
lovetox
oh wait, this would not work at all, if we simply add a counter, it would only be sortable within our sent messages
-
lovetox
not the received ones
-
MattJ
singpolyma, it has at various times been used as a nonce-like value for input to various things, such as authentication
-
singpolyma
lovetox: correct
-
singpolyma
MattJ: ah, hmm. Ok
-
singpolyma
Alternative is to send down a message with same message@id and a stanza id child after mam recording. Or just be lazy and do full self carbons
-
lovetox
this would also serve kind of as acknowledge that the message reached the server
-
lovetox
like we have in MUC
-
MattJ
I've been leaning towards self-carbons for some time
-
MattJ
I tried to get it into the XEP before it was advanced (even as an optional feature), but it was generally opposed as the carbons protocol had been "stable" for some time
-
MattJ
and then I lost momentum
-
nicoco
Hum OK. Seems like, at least in groupchats, having everything relating to stanza ID when present makes more sense to me. I think I handle that correctly btw (happy to take reports if I don't), but > XEP-0461 (Replies) Message ID / Origin ID / Stanza ID In group chats, it's necessarily stanza-id according to the business rules. Are there cases where message id and origin-id are different?
-
MattJ
There shouldn't be, but who knows
-
lovetox
no, just cases where origin-id is not there
-
MattJ
I'm 100% behind dropping origin-id everywhere
-
MattJ
Whenever it is used you already have to deal with it being absent
-
lovetox
yeah and? thats called a migration
-
lovetox
with that argument we could never migrate to something new
-
MattJ
A pointless migration, because you can just stay with @id
-
MattJ
We just add an extra element for no reason
-
lovetox
no, because it does not carry the semantic that the client understands unique ids
-
MattJ
Why do you need that?
-
lovetox
its just nice, to legacy clients, to not confuse them with stuff that will break them
-
MattJ
If the client does not use unique ids, what changes?
-
lovetox
except we say such thing does not exist anymore
-
lovetox
then im fine with message id
-
lovetox
i guess it only affects corrections
-
lovetox
corrections is the oldes XEP of the bunch
-
lovetox
with anything newer we could expect client to support unique ids
-
lovetox
but yeah im fine with it, if we just say, fuck clients that dont use unique ids
-
MattJ
Right
-
MattJ
and in RFC6120bis we tighten up the wording for @id to make this clear
-
MattJ
Then we only have two ids again, the one assigned by the client, and the one assigned by the server (and both are useful in different contexts)
-
lovetox
XEP-0461 (Replies) XEP-0424 (Retraction) before they advance they would need to be changed, because the both use origin id
-
lovetox
that reminds me to use message-id when implementing those xeps, as they should anyway always the same as origin-id
-
lovetox
retraction particular makes not much sense if i think about it
-
lovetox
its about retracting my own messages, why would anyone shoot himself in the foot and use non unique ids, and then implement retraction
-
MattJ
It could be retracting a message sent from another client
-
MattJ
But if that client is using non-unique ids, it also won't have origin-id anyway, so retraction still wouldn't work
-
Zash
Id references ought to have some scope scheme for specifying which origin the id was set by
-
lovetox
MattJ, but that is exactly that case where it would be useful to know if the other client set a unique id
-
lovetox
otherwise i retract 100 message instead of one by accident
-
lovetox
i dont understand your argument that retraction would not work
-
lovetox
if i have a worst case client that sets the same message id for every message, and i retract that, it will retract all messages
-
Zash
lovetox, do you have some legitimate reason to do it like that, rather than limiting retraction/whatever action to the last message with a particular id?✎ -
Zash
lovetox, do you have some specific reason to do it like that, rather than limiting retraction/whatever action to the last message with a particular id? ✏
-
Zash
In SQL terms, some `LIMIT 1` and `ORDER BY` clauses would solve it, or `break` out of the loop that does the update.
-
Zash
Punishing whoever were being silly by reusing IDs instead of doing something weird like affecting many messages seems sensible to me.
-
opal
> in MUC you can really get on peoples nerves and make chaos after being on irc enough and being on networks / irc-ish protocols that dont support moderation, and also taking from nntp/usenet style moderation, i prefer better filtering tools over any sort of "group moderation"
-
opal
but thats probably a cultural difference from how others want it
-
opal
idk
-
opal
sometimes people dont know what they want til they have it
-
opal
soulseek is unmoderated too so people just ban/ignore whoever they want
-
opal
in that vein, most xmpp clients have a tough time ignoring a user in a muc even though it's as simple as blocking the muc@example.org/nick
-
opal
just isnt exposed properly in half of clients i used
-
singpolyma
opal: you want xmpp "killfile"?
-
opal
pretty much
-
lovetox
Zash, currently i JOIN the info if a message is retracted, so i dont think this is possible
-
opal
i'd leave my own MUC unmoderated if i could just easily ignore anyone lol
-
opal
even though it's a topical channel for my project
-
opal
im too old-internet to care
-
lovetox
opal, ignoring is a tool for a user, thats not moderation
-
lovetox
you need to think of stuff like, that your server archive fills with spam, other sources that access your archive, like weblogs, where readers then cannot ignore something
-
lovetox
not saying that its not a useful tool for a user, but i wouldnt say it does replace moderation
-
opal
i have radical views on moderation i'll just save my breath
-
MSavoritias fae.ve
yeah i think both approaches are key here.
-
opal
i do understand the point about archives being trashed but in my head i never trust a server more than any individual user
-
opal
thats how i would design communication protocols, thats all
-
opal
xmpp pre-dates me so i cant really say anything to change what we have now
-
opal
web-of-trust style filtering never took off anywhere either cus thats complex to implement in such a way where it's also intuitive at a ux level
-
opal
and, im not cocky enough to rush that and fill the gap yet
-
singpolyma
> web-of-trust style filtering never took off anywhere either cus thats complex to implement in such a way where it's also intuitive at a ux level Except Facebook ↺
-
opal
oh yeah, the Algorithm
-
opal
brb phoning up my buddy zuck
-
singpolyma
opal: how would you feel about a "local block" for muc that still shows the blocked person sent a message, but not what they said? So you know what people are reacting to, etc
-
opal
sounds like what discord does; and i mean, tombstone stanzas can definitely be sent regardless, so the client can choose to show a message or hide it depending on what the user wants
-
opal
when i ignore someone i personally want to pretend they dont exist
-
lovetox
the question for the developer is, should i still save the message
-
opal
yeah theres that too
-
opal
(reminds me of weechat /filter)
-
lovetox
would definitly make it a lot easier, but i guess most users would say: no
-
opal
yeah a lot of users want a more hierarchical experience cus its what theyre used to and theyre able to trust people more than i can
-
lovetox
and if no, then i have to design my whole application for that, constantly expecting that references to that message are received but its not existent and handle that gracefully
-
lovetox
i guess we have to anyway
-
lovetox
i have this block feature on my long list of things
-
opal
years ago i was toying with creating a chat protocol and then just had total burnout dealing with anything related to designing a communication protocol lol
-
opal
might toy with it later though
-
singpolyma
I personally find the tombstone UI less confusing, but yes it would also be slightly easier for me to build
-
MSavoritias fae.ve
> yeah a lot of users want a more hierarchical experience cus its what theyre used to and theyre able to trust people more than i can hierarchical and free for all are not the only choices though. a community can still make their space safe without having a single dictator or an oligarchy. ↺
-
MSavoritias fae.ve
and of course networks of consent and web of trust are another layer on that.