-
Notifications
You must be signed in to change notification settings - Fork 77
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
Have commands supported by server in ISUPPORT and send those to server automatically #112
Comments
NOTE: I still think that client command should take priority over server commands. E.g. |
Commands that come available as you oper/deoper? Could cap-notify be used here? |
Isn't some of this specific to the mode of the channel? I'm a bit confused by this: I see a proposed solution, but I'm unsure of the problem being solved by it. Could you elaborate on why this is helpful?
But clients don't use |
The proposal I wrote was specifically because I was annoyed there was no automatic way to have a button for |
The probem is that there are many server side aliases, usually for services like /ns, /nickserv etc. that check that the target of command is U-lined to prevent passwords being sent to malicious user who is The problem with #111 is that when you typo a command including password, that is sent to server and this was suggested as alternative olution. |
That seems useful! I guess my issue with these discussion is the tying it to how the client is supposed to use the information. Thanks for the example. 👍 |
The example that started this is client not having |
Possible another way?: Only have the server inform clients about unstandard commands like server side aliases and those that aren't in RFC or IRCv3. |
Unreal already has the Authentication and registration of accounts, however, should have a standardized interface outside of |
👎 for using ISUPPORT from me. We (InspIRCd) have far too many commands to ever fit into ISUPPORT. 👍 on the general idea of informing clients about available commands though. |
How about a command that lists all of them, and advertising that in ISUPPORT? |
@Heufneutje something like A while ago I thought of a command description format which l'm not entirely sure is quite right (note that it's meant more to provide hints for GUIs, not so much to replace a |
So send them in two lines. Or three. |
@kythyria A client that performs input autocompletion and/or displays documentation in the user's language would need a complete localized syntax description and localized help text. Additionally, protocol-level commands may not always be suitable for users, who are often presented a set of commands with slightly different behavior and syntax (e.g., The actual issue isn't commands but services which have commands associated with them. Those services are what should be advertised, and the client can support them according to their documentation, including any described commands. |
You cannot send one token multiple times (you can but it has a different effect than what you have on mind). |
What we're discussing is a way to transmit that documentation, in a format that clients can actually decode. If you just advertise the service... that doesn't actually help, since this is about commands which the client doesn't know ANYTHING about. It would be fairly easy to add a
and retrieving that URI gives some XML version of my proposal. Or JSON, whatever. Something like this (this is more or less off-the-cuff; I don't know how to cleanly represent all of chanserv in that: <commandlist xmlns="http://ircv3.org/extensions/commandlist.html">
<command uicontext="channel-menu">
<displayname xml:lang="en">Detach</displayname>
<doc xml:lang="en">
Detach from the channel: Send a PART to connected clients, but don't
actually leave the channel, instead buffering messages
</doc>
<verb>ZNC</verb>
<paramlist>
<param type="fixed"><text>detach</text></param>
<param type="channel" auto-source="thischannel">
<name xml:lang="en">Channel</name>
</param>
</paramlist>
</command>
</commandlist> Anything with
My proposal covered that: the |
So, there are two distinct problems here:
I think one of the above should be split off to a separate issue. |
Well, this is how
I think localization of interface elements should be none of the server's concern.
I'm not on board with involving the server in a client's interface or the behavior of its user input parser. It seems like a shifting of responsibilities, turning the client into a dumb terminal in which the server is dictating user interaction. |
Given how many custom modes and commands various servers already have, I'd say that ship has long sailed; many things are done through If anything, it would be better if the server could teach the client how to properly present its features instead of having to a) hardcode them based on server type or b) point the user at web docs or HELPOP. It's a bit sad that almost no existing clients even provide easy management for custom listmodes (which have been announced in ISUPPORT for decades). |
Lack of standardization between networks is a problem, but surely the solution isn't dynamically constructing an input parser over the wire. Proper documentation and advertisement of feature sets that clients can adopt modularly is the better answer, in my opinion. |
Negative; RFC1459 limits the command token of a line to either a sequence of letters or 3 numbers, no symbols or the like are allowed. |
@robotoad So you're basically proposing that if I write a new module for ZNC, for instance, I have to at minimum configure aliases on every single client if they support that at all, and more likely actually modify said clients. Or if I'm a server developer or network operator and add a new function or alias, I have to get every single client my users use to be changed before they can even recognise the command exists, something that may not be possible given that the command may be quite niche. IRC clients never had a tremendous amount of logic in them. Besides, I meant this as hints rather than a MUST, and you're proposing we solve the problem... by not solving it at all. Requiring clients to hardcode support for each and every command is the current thing, and it's not working, else this issue wouldn't exist. We aren't proposing anyone change their parser. I don't know where you got that from, since it's a really dumb idea. What I was proposing is a way to indicate what parts of each nonstandard command can come from context, at the same time as where to add this to a GUI, if anywhere. @grawity You left out But yes. I only came up with the XML to add localised human-readable stuff to it; I'd much rather do it in-band (if this was XMPP, that would be in-band if there weren't already ways of doing this sort of thing). An in-band format is much nicer. |
In addition to ZNC-specific commands, ZNC also has alias module that allows defining custom commans on ZNC level that again are server side commands to whichever client is attached. Sorry, I forgot to say this earlier and I think this is important to know in this issue. |
Server-side aliases are not specific to ZNC... 2015-02-21 13:21 GMT-08:00 Mikaela Suomalainen notifications@github.com:
|
Unless I've misunderstood, what I see proposed is server-dictated client interfaces, specifically user input processing and GUI placement. I don't agree with intervening in client interface design, and I doubt it would see support from client developers. |
That is not something which is ever going to be feasible. Not when servers can define arbitrary commands.
Nobody is saying that clients should be rigidly forced to follow the servers instructions. A client could use the information in @kythyria's proposal however they want. |
@SaberUK Exactly. The sort of hints I intended are things like "this command is related to joined channels" ( Where, if anywhere, a client puts commands in its GUI is unspecified, other than "near built-in ones that have the same hint". In fact, my original motivation was to allow parameters to be implied when a command is typed, the way the first parameter of |
Please use something less heavy than XML for this. |
In my opinion, the existing client capability system is the appropriate solution for network extensions that introduce new message types. Relationships between commands as well as recommendations for presentation should be codified in a specification.
If the client is free to ignore most of the information and instead enable custom functionality for certain commands, then we're back to It's incorrect to conflate protocol-level message commands and user input commands, for reasons previously stated. This proposal appears to be rooted in concern over clients' handling of unrecognized user input. As a fallback, a client could check an unrecognized command name against |
How do you propose writing a specification to handle the fact that every major server implementation allows users to define arbitrary aliases which is a feature which is widely used by basically every single IRC network?
As previously mentioned, ISUPPORT is not nearly big enough to fit all server commands into. There is nothing in the ISUPPORT spec (or in existing implementations) that allows a single token to be split across lines if it does not fit into a single 512 character message and if you are going to define a new message you may as well include information about how the parameters are formatted to to allow clients to give hints to the user about how to input the command. |
I think they meant using multiple ISUPPORTs to send all the tokens, not to split a single token across multiple ISUPPORTs. |
@shawn-smith I don't think that is feasible considering you either have a set amount of tokens (in which case there wouldn't be enough when you run out) or you have to define a method of guessing the next token e.g. TOK1,TOK2,TOK3 which would require special ISUPPORT parsing and you may as well just define a new message for it. |
This is quite draft; I'm not quite sure some of the syntax is right. It tries to address ircv3#112.
Correct me if I'm not understanding your question; I don't see a problem with a network specifying a vendor-specific extension for its unique message types.
How will the hints be localized? What if a client has no user commands? Why the conflation of protocol messages and client text commands? |
Closing due to lack of support for proposal in #114 |
Mentioned on IRC, 👍 for me on this. Would love discussion to re-open. Can massively improve client capabilities (like adding autocomplete for non-spec commands) |
What was talked about #111 at IRC.
Someone else can probably also explain this issue better. Have something in ISUPPORT to list the commands that the server supports and their syntax, so clients can know that server supports those commands and send those commands to server directly without
/quote
. Primarily/nickserv
etc.The text was updated successfully, but these errors were encountered: