-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add the EDITMSG extension specification. (now #425) #304
Conversation
If the server can pass along unvalidated data, then clients will need to do their own validation on every edit/delete message they see incoming anyway. Given that, the "this won't fail" sorta promised to the sending client doesn't hold true, and the "this is valid" guarantee that should be given to the receiving clients isn't given. It's completely unvalidated data, and as completely unvalidated data it should be a client tag rather than a proper tag in my opinion. If you do make the server validation mandatory, I don't like the required storage of message information on the server end (data which a great deal of them probably aren't storing right now). If you instead make client validation mandatory, there's no reason to involve the server in this imo, may be better placed to just make it a client-tag wholesale. |
Based on current discussions from the IRC channel, there are 3 possible ways of addressing the validation issue:
This offers the advantage of not requiring any form of server side logging, including metadata. The downside is that unauthorized edits are still passed to the client, as discussed in #304 (comment)
|
|
The main point against (and issue with) client-side validation is that how clients validate messages may not be entirely uniform across all clients implementing this spec. One way to avoid this is to just make it really, really explicit what sorts of validation clients should do. Rough draft, a specific section going over validation may read something like: Validating Message AuthorsClients implementing this specification MUST implement the For each channel a client is joined to, the client MUST remember which user and account posted each of the last 20 messages in that channel. Clients MAY remember more history than the last 20 messages if desired. When remembering which user posted a channel, clients MUST track users across nickname changes, and username and hostname changes if the very rough and still not specified super well, but something that's very clear like that will help alleviate the issues around the client-side validation |
Backwards CompatibilityThis is the main thing we're worrying about now, exactly how to provide backwards compatibility. Here's my take on the various ways to send messages, and the (main) combos of those types of message sending that we can end up with. Whether clients can see editsSome think older clients should always see every edit. Some think that older clients shouldn't be bothered with edits that aren't significant. For instance, if I change a fullstop to a comma and change the first letter of the following sentence, should the old client be bothered with the change? What about if I just change some whitespace around or remove an errant space that made its way in somewhere, or a duped character? Full PRIVMSG - full content as PRIVMSG bodyWhen edited messages are sent in this way, old clients will ALWAYS see the full message content again. This means they lose no context, ever, but particularly for longer messages it can get very spammy. PRIVMSG + Digest - full message content as edit-text tag, digest as PRIVMSG bodyWhen edited messages are sent this way, old clients will see the digest (generally, the client's intended to put some meaningful, cut-down version of the full message in here when possible). I'm wary of this because then we need to specify, or at least describe different ways of creating message digests from edited messages. TAGMSG - full message content as edit-text tagWhen edited messages are sent this way, old clients see absolutely no indication that any messages were edited. When the edit is worthless – a trailing space was culled, a duped space or letter was removed, etc, it's not an issue. If dodgy clients start getting messages past other users without the other uesrs seeing, that's dodgy. If clients don't correctly detect when an edit is worthless or worth conveying, this could mean lots of missed context for older clients. Combinations
|
As a note, I also wrote up a proposal for message modification around the time @MuffinMedic put this PR in, which you can see here: Feel free to compare, contrast the differences and take into account the discussions in here. |
I read through both of these proposals and I'm liking the way @DanielOaks' looks. Been hoping for a protocol-supported way to hide particularly unsavoury spam for a while. My immediate thoughts:
|
A lot of the discussion has been on how Considering the |
Yeah I think the proposal(s) were written before TAGMSG was a thing, but definitely makes sense to switch them over to use it like you say. |
If they don't support |
I don't see any capabilities in the proposal, so server wouldn't know (other than if they support message-tags in general) |
|
There's been a lot of chat on IRC about this today - specifically about how to achieve authentication for editing/deleting without the server having to store any backlog. One suggestion that got wide support: construct There's also been some musing about encrypting the The idea to put an account identifier in the |
A replacement for this PR is planned, based on the kick off document here https://gist.github.com/jesopo/ef44e928aeb1c893e722909608960b1b |
The description is broken. |
Updated and replaced by #425 |
Rendered view available here.