There is a bit of a buzz these days about Microsoft’s new Monad shell. From what I’ve seen it looks like the basic model of Monad has some cool features: it is object oriented, can pipe objects between processes, and apparently has a neat model for displaying data. Most importantly, windows developers will now have a decent command shell — honestly, it’s a bit of a mystery to me how people have been able to live without one for so long. In this regard, Monad is very important; but it is important outside of the Microsoft world as well.
As soon as windows has a better tool, there will be pressure to get one on Linux too. People who have gotten used to Monad and have to go back to Linux will think “Bleh! Bash stinks!”, the same way that I think “Bleh! The DOS prompt stinks!” whenever I use windows. Some of those people will start writing their own new unix shells and then, I’m sure, the shell wars will begin: which shell will be the next big thing, the one to eventually replace bash as the default Linux shell. My prediction is that main battle of the shell war will be the war between the languages used for scripting the shells. It’s simple logic really: 1) a new shell needs a decent scripting language 2) many people will think that their favorite language is an obvious choice 3) the language communities will tend to support shells with their language 4) there we go.
Personally, I don’t care much about which language wins. What I do care about is the fact that the basic model for command line interfaces is still basically that you’re punching commands into a video terminal, a technology from the 70’s, using a teletypewriter (TTY), a technology from the 1870’s. Here’s one example of what I mean: even in the new hi-tech snappy terminal I have on my Mac, I can’t set the cursor by clicking on the line I’m editing! I have to use the arrow keys and move one character at a time! Another example: on all terminals I know, the only graphics interface is ASCII characters (with a few colors if you’re lucky). Come on, even emacs could do bitmapped graphics ten years ago! Why do everyone, including user interface gurus like Apple, feel that it is neccesary to replicate all the inconveniences of a teleterminal from the 70’s?
I hope the people who design the next big linux shell will give this some thought, because we can clearly do a lot better.