I've been playing with a new tool from Mozilla called Ubiquity. The best way to explain it is that it's a fixed grammar command line interface for the web. This basically means that there are certain verbs or commands that can be applied to pages or selections on those pages.
If we think back to the days of DOS and Unix command lines the primitive operations where things like: DIR, COPY, CD, TYPE, MORE, etc. In Ubiquity the commands are things like MAP, EMAIL, CALENDAR. Of course anything can be a command.
The interesting thing about Ubiquity is that it allows command scalability. You could have thousands of commands or more and the interaction model stays the same. The problem with command line interfaces however is that the person has to adapt to the grammar of the command line. If the person doesn't know the syntax of the commands they won't get much done. The Ubiquity demo looks great but when I installed it and tried to add a map to my email the commands that I might try first "add direction" or "insert map" don't always sync with the commands that Ubiquity understands.
This tends to be a problem with any fixed grammar system. It forces the user to speak like a computer. The high level intention is great but the problem is that normal people don't have fixed grammes. They say thing that are unpredictable.
Ultimately we would love to be able to say what we want and have the computer figure it out. The problem with this is that it's a very hard problem. The only company I know that has shipped a product that tried to do this is Microsoft with it's Clippy feature::
Unfortunately clippy didn't really work out. The character that was meant to encourage users to type questions in a normal and human way ended up disappointing users with unpredictable results. It was as if the only button you had as a choice was "I'm feeling lucky."
Ultimately I think Ubiquity is a great start. Even a finite interface grammar language is better then none at all. Some of the basic commands could certainly make it into a shipping product. In many ways Ubiquity is an open way to create a command library.