What I think would be interesting would be some strongly-coupled CLI-GUI interactions. For instance, let's take Word as a start. What if you could swap to your CLI and say "load letter template" and it would walk over to Word and do that for you in the GUI? Or in Excel, instead of clicking through the charting wizard, instead have a CLI that lets you configure the options at will?<p>I think that would be the next greatest thing in non-mobile What I think would be interesting would be some strongly-coupled CLI-GUI interactions. For instance, let's take Word as a start. What if you could swap to your CLI and say "load letter template" and it would walk over to Word and do that for you in the GUI? Or in Excel, instead of clicking through the charting wizard, instead have a CLI that lets you configure the options at will?<p>I think that would be the next greatest thing in non-mobile UI design. (But I'm a heavy CLI user, so I'm kinda biased.)
Typing in a particular phrase in the Google search box won't delete all of your mail and files, so you could think of it as a "safer" or "immutable" shell.<p>CLI in contrast can modify things, not just give you back information.
I am one of those people who thing that CLIs are not user friendly. The premise - giving a computer instructions via Natural Language (NL) - is very sound. However, the way CLI is done right now (from the ground up) - is broken. The most obvious example - why are CLIs ASCII-based? I want to pass around objects - "ls" should only give me just that, an array of objects (which can be serialized for output in any graphical way, including ASCII). There shouldn't be any ASCII flags or switches - those (if really needed) should be an array of objects as well.
Another example, piping, something that UNIX proponents are quite proud of, is a good concept, but it isn't perfect. I can't even count the number of times I wanted to pipe an output of one program to multiple others, or pipe multiple programs into one. The list goes on and on.<p>CLI is the best tool that exists at the moment for a few things, but I definitely see how there could be a superior, semi-graphical, non-"scrolling-ASCII-buffer" alternative.<p>Note: I have tried Linux as my main OS for almost a year, I've done extensive dev under Linux, customized the hell out of my .profiles and *rcs, etc. Still, I see it as flawed. If someone comes up with a sane CLI, I'll be the first in line.
The biggest difference between, bash and, for example, Google, Quicksilver, etc, is the level of fuzziness that they will accept. With Google, you can enter damn near anything you want, and it will accept it and try to do something sensible. With the shell, you get cryptic errors if you have a small typo.<p><pre><code> ls foo(bar)
</code></pre>
doesn't list files that look like foo(bar), it says "bash: syntax error near unexpected token `('". It has no method of easily discovering that 'ls' means 'list files'. And typos can potentially harm data.<p>None of this means that the command line is useless or a bad idea, but it does make it relatively unfriendly towards newbies. Even if the concept is more intuitive, the current incarnation can be scary.
What seems to be getting lost is that "user-friendly" has the word "user" in it. And "user" is relative to the situation.<p>A Formula 1 car is not designed for novices, but it gives the driver maximum control in a very high-stress situation. I would suggest that the interface is as "friendly" to the intended user as millions of $cash and hours of research can possibly make it.<p>The CLI is the result of 30-40 years of similar evolution, and the fact that it has survived this long, and mutated in the helpful ways mentioned by the article, would similarly suggest that many users find it useful. I know I do, and I'm a user.
The command line may be efficient, but it is far from intuitive.<p>I work with command line tools every day, and I am still constantly searching Google and man pages whenever I need to do something outside of my normal flow.
Twitter is effectively a CLI. Posts that start with "D" form a direct message rather than normal status update. You can also issue other commands which follow people, edit your profile, and more.<p><a href="http://support.twitter.com/articles/14020-twitter-sms-commands" rel="nofollow">http://support.twitter.com/articles/14020-twitter-sms-comman...</a>
"You type something in, and the machine either executes your command, or goes “I have no clue what you just said, did you by any chance mean XYZ?”"<p>What sort of wizardry is this? My shell (BASH) does not say "did you by any chance mean XYZ?" It stops after saying "I have no clue what you just said" and then stares at me like I'm an idiot.
Good, as far as it goes, but misses (IMHO) the biggest advantage of the shell, which is composability. In the shell, you can interleave and connect any actions you have access to. In the GUI, programs can typically only interact in ways explicitly supported.