For CLIs - most reasonable commands either have a `-h`, `--help`, `-help`, `/?`, or what have you. And manpages exist. Hunt the verb isn't really a problem for CLIs.
And furthermore - aren't there shells that will give you the --help if you try to tab-complete certain commands? Obviously there's the issue of a lack of standardization for how command-line switches work, but broadly speaking it's not difficult to have a list of common (or even uncommon) commands and how their args work.
> For CLIs - most reasonable commands either have a `-h`, `--help`, `-help`, `/?`, or what have you. And manpages exist. Hunt the verb isn't really a problem for CLIs.
"Hunt the verb" means that the user doesn't know which commands (verbs) exist. Which a neophyte at a blank console will not. This absolutely is a problem with CLIs.
Discoverability is quite literally the textbook problem with CLIs, in that many textbooks on UI & human factors research over the last 50 years discuss the problem.
"Hunt the verb" can be alleviated to some degree for programs that require parameters by just showing the manpage when invalid or missing parameters are specified. It's highly frustrating when programs require you to go through every possible help parameter until you get lucky.
I think this is a naming problem. CLI is usually the name for the interface to an application. A Shell is the interface to the OS. Nonetheless agree with your post but this might be part of the difficulty in the discussion
that’s the ambiguity that I think is tripping the discussion up a little. Also the idea of a CLI/Shell/Terminal is also quite coupled to a system, rather than services. Hence the whole ‘web service’ hope to normalise remote APIs that if you squint hard enough become ‘curl’ on the command line
But the point is none of that is intrinsic or interesting to the underlying idea, it’s just of annoying practical relevance to interfacing with APIs today
Per the thread OP, nobody pretends that CLIs do not need a manual.
Many users like myself enjoy a good manual and will lean into a CLI at every opportunity. This is absolutely counter to the value proposition of a natural language assistant.
Yes. But I think the point is a good one. With CLI there is a recognition that there must be a method of learning what the verbs are. And there are many traditions which give us expectations and defaults. That doesn’t exist in the chat format.
Every time I try to interact with one of these llm gatekeepers I just say what I want and hope it figures out to send me to a person. The rest of the time I’m trying to convince the Taco Bell to record a customer complaint about how its existence itself is dystopian.
For older tools, sure. Newer tools eschew man pages and just offer some help flag, even though there are excellent libraries that generate manpages like https://crates.io/crates/clap_mangen or https://crates.io/crates/mandown (for Rust, but I am sure most languages have one) without requiring you to learn troff.
Newer in maturity though, I'd say, no not like 'modern' tools vs. only vintage tools have them. It's just not something people tend to consider early on I think, but popular stuff gets there. (For one thing, at some point someone points it out in the issue tracker!)
All of this is true. “Invitation to guess” is the key phrase in my comment. CLIs present as cryptic, which is a UX _advantage_ over chat wrappers because the implied call to action is “go do some reading before you touch this”.
An AI wrapper typically has few actual capabilities, concealed behind a skeuomorphic “fake person” UX. It may have a private list of capabilities but it otherwise doesn’t know if it knows something or not and will just say stuff.
It really needs to be 100% before it’s useful and not just frustrating.
> but there is no invitation to guess, and no one pretends you don’t need the manual
which is basically what you're saying too? the problem with voice UIs and some LLM tools is that it's unclear which options and tools exist and there's no documentation of it.
Siri does have documentation: https://support.apple.com/en-ca/guide/iphone/ipha48873ed6/io.... This list (recursively) contains more things than probably 95% of users ever do with Siri. The problem really boils down to the fact that a CLI is imposing enough that someone will need a manual (or a teacher), whereas a natural language interface looks like it should support "basically any query" but in practice does not (and cannot) due to fundamental limitations. Those limitations are not obvious, especially to lay users, making it impossible in practice to know what can and cannot be done.
If you like deleting all your files, sure. LLMs, especially small ones, have far too high a propensity for consequential mistakes to risk them on something like that.
I was thinking more in context of interactive help that will just find and display relevant manual info (to get around the problem of "it remembered wrong") rather than vibe coder favourite of "just run what you hallucinated immediately"
The lack of an advertised set of capabilities is intentional so that data can be gathered on what users want the system to do (even if it can't). Unfortunately, this is a terrible experience for the user as they are frustrated over and over again.
- almost every search field (when an end user modifies the search instead of clicking one of the results for the second time that should be a clear signal that something is off.)
- almost every chat bot (Don't even get me started about the Fisher Price toy level of interactions provided by most of them. And worse: I know they can be great, one company I interact with now has a great one and a previous company I worked for had another great one. It just seems people throw chatbots at the page like it is a checkbox that needs to be checked.)
- almost all server logs (what pages are people linking to that now return 404?)
- referer headers (you product is being discussed in an open forum and no one cares to even read it?)
We collect so much data and then we don't use it for anything that could actually delight our users. Either it is thrown away or worse it is fed back into "targeted" advertising that besides being an ugly idea also seems to be a stupid idea in many cases: years go by betweeen each time I see a "targeted" ad that actually makes me want to buy something, much less actually buy something.
Very well written, I'm wondering when current "cli haxxxor assistant" FAD will fade away and focus will move into proper, well thought out and adjusted to changed paradigm IDEs instead of wasting resources. Well, maybe not completely wasting as this is probably still part of discovery process.
All chat bots suffer this flaw.
GUIs solve it.
CLIs could be said to have it, but there is no invitation to guess, and no one pretends you don’t need the manual.