-
pep.
https://xmpp.org/extensions/xep-0060.html#publisher-publish-error-forbidden Any clue what "insufficient privileges" mean in this context? Can a publisher of the node have insufficient privileges?
-
jonas’
if you're no publisher, yes
-
pep.
But as a publisher?
-
pep.
Can one edit/delete other publisher's items for example? Is there such restrictions available?
-
jonas’
what's the actual question?
-
jonas’
a client always needs to be prepared to handle authorization errors
-
pep.
Trying to see what's currently available for moderation on pubsub
-
jonas’
depends on the implementation.
-
jonas’
services can do whatever they like
-
jonas’
(as long as they return the appropriate responses)
-
pep.
That's always a great answer in a standard :P
-
jonas’
'60 is quite flexible in that regard
-
pep.
Ok, maybe there's some way for servers to advertize capabilities in this regard, so that clients don't need to do trial and error and can avoid providing UI when the feature isn't there or stuff like that
-
MattJ
Products vs protocols and all that. The XEP defines a protocol, there are many ways to use it. There is nothing specifically written anywhere about moderation in pubsub, but that doesn't mean it's not possible, and it might be a good idea to write it.
-
pep.
I'm planning to have a look at that in the "near future"
-
flow
pep., I think this is a prime example for a case where the error response should contain a more refined description of its cause
-
pep.
flow, maybe. I do think (as I said above) that a client should be able to know beforehand it's not authorized to
-
pep.
Of course there can be both
-
jonas’
pep., agreed though.
-
jonas’
it would be good if you could disco#info a node and get a list of all your permissions on a node✎ -
Kev
There's assorted places in XMPP where you can't tell if something will succeed until you try, and it's ... not great.
-
jonas’
it would be good if you could disco#info a node and get a list of all _your_ permissions on _that_ node ✏
-
flow
maybe, I am not sold on that
-
pep.
Kev, yeah.. I've seen the last thread on the list about reactions :P
-
flow
that appears to be a case where it is better to ask for forgiveness than permission
-
jonas’
flow, disagree
-
pep.
flow, tell the user that
-
jonas’
that's terrible for UIs
-
pep.
^
-
flow
fair point
-
jonas’
nice for machine-to-machine, but not good for human interfaces.
-
Kev
"Thanks for writing out your thesis. I'm afraid you're not allowed to submit it."
-
flow
I wonder if we should design a generic protocol pattern where an operation can be marked as "dry-run" (or "don't do it"). so you can check if you would be allowed to do it
-
pep.
flow, but then you'd need the content of that operation to be available first?
-
jonas’
flow, trying all possible optinos in a UI when showing it is very inefficient
-
flow
pep., the content does not matter if it is a dry run
-
pep.
it may
-
flow
ok, depends on what you classify as content then
-
jonas’
flow, banned words, length limitations, ... there are lots of ways even real content may matter
-
jonas’
but also parameters like which item ID you are retracting
-
flow
well the item ID could by the correct one
-
flow
and for the other parameters you mentioned: those are probably also not discoverable otherwise
-
pep.
They could be made available via disco
-
flow
you probably can't take everything into consideration, there is a certain tradeoff
-
pep.
Well a spec is a living document right? :P
-
pep.
Surely at some point you'll have an error, and that's where indeed good description of the error is necessary
-
pep.
(and i18n)
-
flow
I think i18n is secondary to the refined description (but sure can't hurt)
-
pep.
As it's likely to be shown straight to the user, I think it's absolutely necessary
-
jonas’
flow, ... how is it secondary?
-
jonas’
that ^
-
pep.
Now of course between what one feels is necessary and implementations progress, there's always a gap
-
flow
I believe such refined descriptions cause typically more confusion in case of the average user
-
flow
as in non-tech safy
-
jonas’
even more important then to know ahead of time whether a thing is allowed
-
flow
right
-
flow
I wasn't considering the human UI aspect in this discussion (for some reason)
-
nicoco
about MAM: do clients actually implement support for <fin stable='false'>, eg, by re-fetching MAM periodically until stable='false' disappear? cf paragraph just above https://xmpp.org/extensions/xep-0313.html#sect-idm46316171986560
-
MattJ
"they should"
-
MattJ
I suspect they don't :)
-
MattJ
It's quite a lot to ask of a client
-
nicoco
it's probably hard to get a proper UX around that indeed
-
pep.
Typo in the paragraph btw: "it the server could return best-guess results", "it"
-
pep.
(or I don't understand the sentence)
-
nicoco
it's quite tricky for slidge to guarantee stable MAM results for legacy networks that allow message editing (and re(tr)actions…) but I guess always replying to queries with stable=false would be very very very ugly anyway. fastening collation would help a lot, but I hope to figure something out before (if?) it's worked out :(
-
Kev
Always replying with stable=false is the right thing to do, though, if the results aren't stable.
-
MattJ
The universe is unstable
-
jonas’
do not look up false vacuum decay unless you need more existential angst
-
jonas’
(speaking of "universe is unstable")
-
nicoco
I would be more cautious: _our perception of_ the universe is unstable ;)
-
MattJ
Just serve clients stable results, and if they change... just tell them it's only their perception that is unstable
-
MattJ
But all this to say, more seriously, that I think some pragmatism is required
-
nicoco
sounds like a plan to me! you hated my bug reports already? hold on, it's about to get worse :P
-
MattJ
If you serve results and say they are stable, and they later change, the client may not update them. You might or might not care about that.
-
Kev
Lots of clients don't have to care about this stuff, because they fetch on demand, but anyone who wants to do a full-MAM-sync client and wants to support clustered servers that can operate in a split mode have to care.
-
MattJ
We have the same problem with Matrix bridges
-
MattJ
Since the history can change at any time
-
jonas’
> Lots of clients [citation needed]
-
Kev
Ok. Some clients.
-
MattJ
It's different to a clustered XMPP instance knowing that the past N entries in the archive haven't been fully replicated and confirmed
-
MattJ
In such a setup, both client and server using the 'stable' flag correctly can still achieve consistent synchronized history
-
Kev
Right, but even in a situation where no queries are ever stable, it's useful to flag that to a client, isn't it?
-
Kev
So that the client knows it can't use a "sync once, and then just catch up" strategy.
-
MattJ
Yes, I would agree that if the server judges that clients should not cache the results, it should always set stable=false
-
pep.
Would the server flag a full response btw, or would it only flag parts of it? If it knows only a subset is unstable
-
nicoco
agreed about pragmatism. I should just ignore reactions/edits/retractions of old messages, and be happy with only "live updates". guaranteeing proper ~infinite history sounds like a lot of trouble for something that most likely won't matter. the reason I want to implement MAM is just to make groups usable on mobile…
-
MattJ
But I can then understand that clients might just ignore that flag
-
Kev
> But I can then understand that clients might just ignore that flag Sure, clients can do what they like based on the properties they want.
-
MattJ
What's not going to happen in most clients, is implementing two different sync strategies, and choosing between them on a per-query basis
-
Kev
Sure.
-
nicoco
>Would the server flag a full response btw pep. full response, since it's in <fin> I think?
-
MattJ
A client that does the "right" thing, paired with a server that always returns stable=false would be somewhat problematic
-
Kev
I'm happy enough that clients choose to ignore the edge cases if they want to. As long as we give them the information to do the right thing if they so choose.
-
MattJ
It almost suggests we need a third flag
-
Kev
> A client that does the "right" thing, paired with a server that always returns stable=false would be somewhat problematic Not necessarily. Doing the right thing with stable=false only means not treating it as a source of truth, which means refetching it next time you want that segment of the archive.
-
MattJ
"temporarily unstable" (try again in a bit) or "permanently unstable" (do whatever you want)
-
Kev
Permanently unstable is probably a property of the whole archive that could be advertised.
-
nicoco
isn't there some overlap between what "permanently unstable" entails and what the fastening collation xep tries to do?
-
Kev
Is there?
-
Kev
"Unstable" means that there may be messages missing from the middle of your results.
-
Kev
And the fastening collation is a way to indicate on results that later stanzas have been applied to change somewhat-meta-data.
-
nicoco
from my (very narrow) point of view, there is some overlap: I can't say stable="true" because of this msg metadata changes
-
Kev
But you can.
-
pep.
nicoco, it's another message, not a message that has changed
-
Kev
Or, at least, the collation stuff shouldn't affect it. All that should affect stable/not is whether messages might be missing from the returned sequence.
-
nicoco
>another message, not a message that has changed indeed. every "metadata event" (edits, reactions, ...) is indeed a new message stanza in XMPP. that does not map to what most networks do where the MAM-equivalent returns collated results only.
-
Kev
And that's fine.
-
Kev
And that's what collations allow XMPP to act like.
-
nicoco
>whether messages might be missing from the returned sequence the overlap is here? if a MAM server serves collated results, it's because they don't want to serve all "metadata edit events" but only the current state (probably as optimization for storage and network IO)
-
Kev
Well, no, I don't think that's true.
-
Kev
If your MAM archive serves✎ -
Kev
If your MAM archive serves fastenings as normal messages, they're in sequence. If it doesn't, they're always missing. ✏
-
Kev
I think unstable-ness is completely orthogonal to serving of collations.
-
Kev
(While accepting I could be wrong)
-
nicoco
> If your MAM archive serves fastenings as normal messages, they're in sequence. If it doesn't, they're always missing. I'm having trouble parsing this. Could you expand a little? 🤯️
-
Kev
I'm saying that your MAM archive will either serve up messages that are a fastening, or will not serve up messages that are a fastening. Whichever way it chooses to do, which messages are returning a particular period (stable=true/false) is unaffected by subsequent fastenings being processed by the archiving server.
-
Kev
s/returning/returned for/
-
nicoco
> The third form, "collate", presents each traditional IM message, as "simplified", but within the result includes summary information about the fastenings (and pseudo-fastenings) encountered. what I meant by overlap was: if a server serves "summary information about the fastenings", clients should always treat it as "stable=false". or doesn't that make sense?
-
nicoco
I mean that by nature, the "summary information" is unstable (like the universe)
-
Kev
I think I understand your point, but I don't agree with it entirely.
-
Kev
If you want to render that message again, you'll want to refetch the collation, yes. But you do at least know that the message itself is there, that no new messages have been inserted before it, etc. You can render a page from your local cache, for example, and fill in the fastenings as they come in from a subsequent query.
-
Nicoco
Kev: I understand. from a client's perspective it is different in this regards. Thanks for the replies. "Not all stanzas are born equal" could be the subtitle of the fastening collation spec.
-
Kev
Or "It seemed like a good idea at the time", which applies to much of XMPP :)
-
pep.
Retractions with <body/> included are really not user-friendly.. "This person is retracting a message that they may have not wanted you to see, so we're going to repeat it", or "This person has retracted a message that was taking quite some space, so we're going to repeat it because it's good that you can see it once more"
-
pep.
That's really all this makes me think about :/
-
rom1dep
Hey there, I'm having a fuzzy memory of someone mentioning ad-hoc commands being implemented by some fork of Conversations, does that ring a bell, and would anyone know which client that might be?
-
MattJ
rom1dep, Cheogram
-
MattJ
Conversations fork, has ad-hoc commands
-
rom1dep
Sounds like it might be it, thanks a lot MattJ 🙂
-
Beherit
https://cheogram.com/
-
Nicoco
pep.: about retractions, would you rather see no message at all for clients that don't support it?
-
pep.
I wonder. I think yes. Maybe at the most "The user retracted a message", to say they did something, but without context it's probably useless so..