-
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 named-modes specification #484
base: master
Are you sure you want to change the base?
Conversation
A possible change: currently, the
to mirror the existing behavior, and to make it easier to handle optional parameters. However, if we change it to this:
It would allow spaces in the mask, as it is always the trailing parameter I don't want to do allow spaces in this spec (to make it easy to convert to MODE), but we may want to change this order so that we can easily allow spaces later in a new spec. What do you think? |
Co-authored-by: James Wheare <[email protected]>
Co-authored-by: James Wheare <[email protected]>
Any thoughts on requiring that servers MUST translate MODE to PROP for clients that have enabled the capability? This opens up the possibility of future greenfield clients that don't know about MODE at all. |
@slingamn maybe a separate cap to allow gradual upgrades? |
On second thought, nevermind. We don't need one more moving part. |
Here's an edgy take: I think we should preemptively make this specification syntactically tolerant of spaces in mode parameters. (They can still be semantically disallowed, especially for named modes that are the equivalent of an RFC1459 mode.) "Non-final parameters" are an ever-flowing wellspring of correctness issues. The backwards compatibility issues don't seem too bad: since the @emersion might have been joking but at one point he suggested using the tag value escaping syntax for this. What if we required all mode parameters --- in |
Sounds like an interesting idea. I would actually like the entire wire protocol to move towards something like that, leaving the |
What about a single PROP change per line, so we can always use the space character instead? It can simplify implementations on both ends and doesn't have much of an overhead |
I don't have strong feelings about this but it seems suboptimal. I feel like everyone who would implement this has ready access to a tag-value (un)escaping implementation, no? |
It mostly just "feels wrong" to me. But why not. It may not be usable as-is everywhere though; as current implementations can assume serialized values don't contain Though I also like "single PROP change per line" because it simplifies implementations on both ends. No strong opinion either way. |
This is a spec that has been in the making for a while, and it's finally ready for review.
It is inspired by InspIRCd's namedmode module, though they are unfortunately not compatible.
In terms of implementation, I wrote a proof-of-concept as a third-party InspIRCd 4 module that I hope to productionize when this draft is accepted.
Finally, as this is a pretty complicated spec, please avoid sending copyediting comments right away, this is probably going to be a very long thread with many changes.
rendered view