There's always a lot of fussing about how the command line scares people, how if you have to do something on the command line then something is horribly wrong. This attitude has resulted in the dumbing down of the various GUIs for Linux, as if Linux will ever be able to compete with Windows or OSX for the content consumption market, or as if it would be a *GOOD* thing to turn Linux into the crappy knock-off cheap alternative to a real OS. I don't see how anyone with the intelligence to engineer an OS or a UI could be motivated by such a dumb goal.
I don't want to say what Linux should or shouldn't be, but occasionally I have flashes, glimpses of something awesome that it *COULD* be, and I wish I had the skills to make it or even articulate clearly what I'm seeing. I'll try here.
In selling Linux to newbies we're always afraid to show them the command line, and so no one has worked on developing a better shell. As a result, the shell is some monster out of the 1980s. What if all the expertise in user interfaces was turned on developing a better command line? (The fish shell is a step in the right direction; the OS X Terminal also has some nice features, such as drag-dropping files into it.) Where you interact with your computer by typing commands, rather than by pressing buttons? It isn't so unnatural. As I read in some post here a while ago, people have been talking to each other to get things done for millenia, but we've only been pressing on things that look like candy to get things done for a few years. On Star Trek, they instruct their computer verbally. And yet UI designers insist that our interfaces have to be entirely visual, because the CLI has been done in such a user-unfriendly way in the past.
The command line is powerful because it is a language; in languages you can build an infinity of possible sentences by combining words according to grammar. In Unix, you can make your computer do pretty much any complex task by chaining together other small programs. There is no comfortable visual metaphor I am aware of that enables this infinity of possible tasks. In a GUI, you have a finite amount of space on the screen, a finite number of buttons to press. In a CLI, you have an infinity of options that you can build up if you know the language. In my work, I do a lot of text processing; I make up new pipelines every day and I can't imagine any way of doing that in a GUI.
But the command line is still a dinosaur. It doesn't have to be that way.
This is my as-yet-fragmentary, inarticulate dream. Imagine if you type "ls" at the command line, and instead of a bunch of color-coded names of files (wow! color! on a monitor!?!?!? how high-tech!) you get thumbnails, so you don't have to open things individually to see what they are. And maybe those thumbnails stay at the top of the terminal, in some unobtrusive form, as you do your complicated renamings or whatever, so you don't have to keep typing "ls". What if you had the option of clicking cool.pdf OR typing evince cool.pdf? Or, if you don't remember that your pdf reader is evince, what if you could just type "open cool.pdf" and it would use $DEFAULT_PDF_THING? What if every program had a little terminal on the bottom where you could tell it what to do, in case you prefer to talk to your computer instead of press predefined buttons?
I don't know if I've articulated this clearly--I think about it quite a bit, in my spare time. The last thing I want to see is the command line wrecked by trendy UX crap. Rather I want to see the real work on usability brought to bear. Linux doesn't have to be the next OS that limits you. Linux can be the OS that makes it easy to build new things, to do things no one has done before. Steve Jobs said that computers should be like a bicycle for the mind: it enhances what you can do, it lets you go farther to places you hadn't thought of before. And he seemed to fulfill that idea in things like HyperCard before dumping it in favor of turning people into content-grazing animals with stuff like the iPad.
Linux can be the bicycle for the mind, the thing that makes it easy to create, to build new things that haven't been done before, and for me at least the power of Linux for those tasks is in the VERBAL INTERFACE of the command line, as opposed to the limiting visual interface of, say, Windows. Windows, OS X, iOS, Android, whatever, they're all going in the direction of limitations, of allowing people to consume the limited content that exists in the world. OS X is a little better since it's so developer friendly, but it also shuns the command line in the same way Linux does.
This isn't just to say that Linux should be for power-users: Linux should CREATE power users. After years and years of miserable trial and error, I have become proficient enough with the command line that people ask me how to do things. It was extremely difficult to learn. It doesn't have to be that hard. The command line interface, because it is a verbal interface, is what enables a computer to have infinite potential. Maybe there needs to be a new shell, like what I was describing above, or maybe a scripting language that's more obvious to computer-know-nothings. But the potential there, and it is in the command line, not the GUI.
Developers! Don't be embarrassed by the command line! It is strength, not weakness, and not even Apple realizes it. Stop trying to dumb down Linux, in pursuit of users you think are dumb--even the dumbest people are pretty smart, and get bored of just sitting around consuming "content". Let's make Linux the bicycle of the mind by embracing the command line.