Many commenters on my previous posts have already guessed what sort of naming standard I’m going to propose, or have suggested very similar ideas of their own. (I’ll take that as a sign that my idea is a natural evolution of the Ubiquity interface and not a controversial mutation.) Here’s the standard I propose:
- Multiple words are allowed, separated by spaces.
- The first word must be an actual verb.
- It’s OK for more than one command to use the same initial verb.
- The name should describe what the command actually does as specifically as possible.
- The name should not be longer than needed to fullfil these requirements.
To make this possible will require several changes in the way Ubiquity parses input and in the way it subscribes to command feeds.
I’ll get to those changes in a minute, but first, here’s a representative sample of what commands from the standard feeds would look like using this standard:
To review my previous two posts:
Ubiquity needs a naming standard.
The standard must provide an attractive alternative to hyphenated-phrase-command-names. It must allow unambiguous command names, which means it must support multiple words in a command name. It must provide namespacing, and reduce competition for common verbs. The parser must be able to split up the words so you can enter them in any order that makes sense to you.
As if those weren’t tricky enough requirements, I’m adding one more: It must not increase the number of keystrokes that the user has to type to invoke a command.
For example, if part of the standard is “must start with a verb” — so that the “weather” command was renamed to “check weather” — it would be very bad if the user had to actually type “c-h-e-c-k–w-e …”. That would be forcing the user to do more typing for little or no gain. We need to make sure that the user can still type just “w-e-a” and have it complete to “check weather”.
Yes, I want a natural language interface, but that doesn’t mean I think we should be enforcing a strict grammar on people at the cost of efficiency. In real life people speak in fragments all the time, or start and stop in the middle of sentences, so a humane interface should allow the same.