ircv3 / ircv3-specifications

IRCv3 specifications | Roadmap: https://git.io/IRCv3-Roadmap | Code of conduct: http://ircv3.net/conduct.html
http://ircv3.net
785 stars 79 forks source link

Unresolved issues with message redaction #537

Open jwheare opened 7 months ago

jwheare commented 7 months ago

This is a follow up from #524 which is being merged due to the unsustainable length of review comments and the fact that they're scattered everywhere, hidden and impossible to make sense of. There are a couple of things to clarify here, ideally they can be resolved before we update the website.

Non-blocking

spb commented 7 months ago
* Clear up the intention of this line, I'm still not sure why it implies that servers want to keep track of channel membership when determining whether to send REDACTs in chathistory.
  `` If a message is redacted while a client is not present in a channel, servers may send the `REDACT` command in a `chathistory` batch when it re-joins the channel. ``

I suspect this is because the chathistory spec says:

If the client has not negotiated the draft/event-playback capability, the server MUST NOT send any lines other than PRIVMSG and NOTICE in the reply batch

...and this spec is extending chathistory to permit REDACT as well. I would be inclined to suggest that chathistory should probably be changed to introduce a concept of 'history-safe messages' (or equivalent bikesheddable name) and allow other specs to define their message types as history-safe or not.

progval commented 7 months ago

Clear up the intention of this line, I'm still not sure why it implies that servers want to keep track of channel membership when determining whether to send REDACTs in chathistory. If a message is redacted while a client is not present in a channel, servers may send the `REDACT` command in a `chathistory` batch when it re-joins the channel.

I thought I had cleared that up already.

Client sees a message, disconnects. Someone REDACTs the message. Client reconnects, server sends the REDACT so that the client can hide the message as if the REDACT was received live.

jwheare commented 7 months ago

Unclear if you're talking about chathistory batch or chathistory request. But either way that's just normal behaviour. For a request, you get all messages you request, presumably since the last time you were in the channel. For the on join batch, there is already a built in lossiness to it. I don't get why redactions have to be treated specially here.

progval commented 7 months ago

I did mean the on-join batch. And that's a suggestion to server authors in a non-normative section, they don't have to do it.

jwheare commented 7 months ago

Just change it to: Servers MAY send `REDACT` commands in [`chathistory` batches](https://ircv3.net/specs/batches/chathistory) sent to clients on joining a channel (link in the footer if you wish)

I believe the original question about this was here https://github.com/ircv3/ircv3-specifications/pull/524#issuecomment-1564789080 but I really don't think we need to specify or imply any special casing for REDACT that isn't already the case with PRIVMSG etc. If just raises more questions and puts a stumbling point on implementors when reading this part of the spec.

progval commented 7 months ago

Sold