Windows to Have Better CLI
MickyJ writes "The command line interface to the Windows Server OS will be changed to the new Monad Shell (MSH), in a phased implementation to take place over the next three to five years. 'It will exceed what has been delivered in Linux and Unix for many years', so says Bob Muglia, a Senior VP at Microsoft." More from the Tom's Hardware article: "The language in Muglia's comment offers the first clear indication that WMI may be yet one more component being left behind, as Microsoft moves away from portions of Windows architecture that have historically been vulnerable to malicious attack."
Number three could be expanded to: "ditch for new immature code which will take 3-5 years to implement new technology when completely workable alternatives exist and could be easily adapted." Should it really take a company with Microsoft's resources to take 3-5 years to implement a new scripting language? Are the permissions system that broken that it takes so much effort to plug the holes? Should I stop begging the question?
It's not "vaporware"; It actually exists. You can get in on the beta for free.
x claim -- right now, from what I've seen, they would have been far better served to go with bash. (Excepting of course their license issues.)
Yeah, I actually looked at some of the sample code before posting. The "vapor" part is the in-three-to-five-years-this'll-be-better-than-Uni
Actually, MSH has been available for public beta (if you're enrolled in MSDN, anyway) for quite some time now -- I've been using it on my Windows XP box at home just to test it out. In general.. yes, it's actually quite good, and up to the standard of Bash for most tasks. It's a huge step away from the WinXP command prompt, and represents something of a climbdown for Microsoft, who said they would be moving away from the CLI in future OSes. In addition, it may amuse the /. readers (it certainly amused me) that the Microsoft names for commands have nearly all been aliased to their UNIX equivalents by default. Obviously, Bill doesn't expect his names to stick. ;)
Isn't this just a case of: "Those who do not understand UNIX are condemned to reinvent it -- badly". -- Henry Spencer.
Soon they'll be storing config in files, and have a CLI only version of their server.
Get your own free personal location tracker
right now, from what I've seen, they would have been far better served to go with bash.
What makes you say that? My (limited) understanding of Monad is that it can do UNIX-style text piping and regular expressions and awk and all that candy in addition to the object-oriented stuff.
And the object-oriented stuff shows some potential. Being able to pull data from a pipe much more easily (e.g. without a regular expression). Much saner sorting. Blah blah blah.
This is what the impression the Channel 9 demo video gave me, at least.
Free of Flash! Free of Flash!
IIRC, the main difference that MS is touting over traditional *IX shell environments is that pipelines can exchange typed data instead of simply text.
It's an interesting idea, though I'm not sure that I'd call it earth-shattering. This is an interface that applications need to support.
I think that the main way that they could offer value over the *IX world is by providing an lower-learning-curve-shell. Traditionally, this is how Microsoft has managed to offer value over Unix.
I'd like to see the *IX world get a fully-blown DAG-of-programs data stream processing environment, instead of just a linear pipeline. Gegl (the GIMP redesign) does this for graphics, but there's no reason that this can't be a feature that shells provide and something that works with data other than image data.
(Technically you can do this in Unix today with named pipes, which the Windows world sadly lacks, but it's not as nice and transparent as it could be.)
Actually, I guess you could do this with the mingw port of netcat in Windows...hmm...but even less transparent.
The shell that MS had for a while wasn't great, but the virtual terminal absolutely sucked. It was slow, laggy, required you to use the mouse for common operations, didn't follow accepted selection convention, hard-wrapped lines when copying text out of the thing, didn't grow the scrollbar as the scrollback buffer grew, lacks tabs, and about eight million other problems. That, I think, is one of the biggest things that they could improve.
Any program relying on (nontrivial) preemptive multithreading will be buggy.
Bla Bla Bla waste resources. Did you ever look at the system monitor and see what the difference in resources are if you have a transperant window is?
I havent seen any difference. Transparent shells are acutally quite usefull. When I am reading documents on how to install a program I never installed before I usually have the webpage open and when I am typing in the text I can see the Website threw the shell and make sure I am typing it in correctly. (because I am a bad speller it is usefull) also it is quicker to type then cut and paist a lot of the time. espectilly when you need options that may be on the screen but not part of the example.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
what I find the strangest, it that they need so much time to develop it... they have such a pile of cash, and have used it before to pump out software at breakneck speeds (and actually break their neck as with internet explorer) to crush competitors. The fact that this CLI will take so long to develop means that either they don't take it seriously and won't invest big bucks, or means that they take it very seriously and don't want to screw it up again. but even in the last case : the proposed planning is a very careful one
When will I end this grieving ? When will my future begin ?
There are two and a half things that bug the hell out of me with the current CLI:
1. The tab completion behavior (the 'half' part of my 2 1/2 gripes is sometimes you have to fiddle with a registry setting to turn on tab completion). A unix shell (well, the one I'm used to, not even sure which) will complete only up to the point where its unique, and then I can hit Ctrl-D to see possible completions. A lot more predictable than tabbing through all completions that might fit what you've typed...the distinction between "characters I typed myself" and "characters showing up because I'm cycling through" has no visual cue, even though it completely controls what files get shown.
2. up arrow behavior. It took me a while to finally "get" the logic of Windows...if you type command A, then command B, then command C, then arrow back up to B and run that, pressing down will then take you to C and up will take you to A. I think that it's meant to cover a long sequence of commands that you do over and over, so you don't have to keep uparrowing, but just pressing down once per repeated command, but its much harder to keep a mental model of.
Both of these things are classic Window's trade off of predictability for perceived "user friendliness". I think hackers often prefer predicitability and ease of mental modeling, since they can always make it easier by some scripting or whatever.
On the other hand, I like that I can add "\.." to the end of a filename and get to its directory. That's something that seems logical to me that Unix shells don't generally do.
SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
"Reducing scripting privileges may break some existing Web applications, especially intranet apps geared for enterprises."
This is interesting though: Internet applications are catching on, Firefox marketshare has scared Microsoft a bit, and what do they do in response: Fix their security holes by taking away features which now give them a lead in companies?
I would rethink that one it I were head of MS IE division.
My wife's sketchblog Blob[p]: Gastrono-me
zsh is fubar w/regards to unicode.
and they don't even care to fix it.
therefore zsh sucks.
But will they swap \ for / ? THAT's what I want. The entire cosmos now uses /. er... '/'. ...though I suspect the entire cosmos DOES use /. to blather about their preferred operating system and how kids in trenchcoats are being oppressed by jonkatz or... something...
Monad scripts can pipe out and pipe in objects
This is trivial to implement with a programming language that supports serialization, esp. if it can serialize to stdin/stdout.. In Objective-C, it's a simple matter of objc_open_typed_stream(stdin, OBJC_READONLY); and objc_open_typed_stream(stdout, OBJC_WRITEONLY); and read:'ing and write:'ing to the stream.
Truth be told, Linux does a pretty lousy job of integrating the shell into the GUI as well. Shell programs should support the mouse, should respect theme color preferences and should use the X clipboard for copy and paste. There are many other ways in which the CLI could benefit from a closer integration with the GUI.
I have written a shell that uses the X clipboard for copy and paste, available here, but the other features are still missing. I hope to support using the mouse to select completions from the tab completion list in the future as well.
Try out fish, the friendly interactive shell.
Flash-forward to Windows 2000/ XP, and Microsoft apparently accomplished a miracle, producing a version of Windows that would literally run and run, and was still fairly nippy. Meanwhile, the writers of Linux Desktop Environments were discovering that it's very easy to be fast and light when you don't do much, or aren't particularly user-friendly, and that increased functionality almost always comes at the price of bloat.
So these people saw two pillars of the superiority of Linux (speed and stability) snatched away from them. The truly curious thing is what happened next: instead of being spurred into action by this new competition and addressing these concerns on the Linux side, these people instead simply went into a state of denial, and refused to let go of these cherished (and rapidly shrinking) areas where Linux once scored over Windows. Read through any anti-MS slashdot article on any given day and count the number of horribly outdated criticisms of Microsoft you see (BSOD's; bloat; Clippy(!)) - as a passionate believer in F/OSS, it really grieves me to see people behaving like this, rather than aiming to improve Linux to the state where it once again has many advantages over Windows.
Flash-forward to now, as one of the other areas in which Linux scores over Windows (a UNIX command-line is an awesome and enjoyable tool to use; the Windows command line, by contrast, is a rubber hammer with nails in the handle :)) may well be snatched away, and we see the same thing: people are hoping against hope that Microsoft foul it up, because if they don't another area of Linux superiority disappears, along with another shred of their self-esteem. This, I think, is why people care, and why they do not wish Microsoft well in this project, however helpful it may be to the common good.
I haven't looked at the specs, since I don't work much with windows servers anymore, but I'm curious: one of the major advantages with UNIX boxes is that most of the software you work with has some sort of CLI, or at least has hooks that can read data produced from the command line.
.NET classes - will we finally be able to hook into more applications and actually do useful things at the command line now, or will this mainly benefit programmers who are trained in OO concepts rather than sysadmins?
Windows, on the other hand, has always been particularly bad about that - most apps don't have any support for that sort of thing. Scripting in the windows world has been fairly pointless. Sure, a lot of sysadmin tasks can be performed using the command line, but limitations in the shell make that a pain in the ass. CMD.exe isnt' anywhere near UNIX shells as far as programmability is concerned, and windows lacks the plethora of command line shell enhancing utilities (i.e. sed, grep, etc.) that makes the UNIX shell environment so useful?
This is talking about using COM and
Those who can't do, teach. Those who can't teach either, do tech support.
Ah, Multics... Now there was an OS that would be really useful these days. It was possible to define security layers so that you couldn't even access your own files without being in the exact right security access level. It would be really funny watching the FBI trying to extract personal information from a properly configured Multics system, where you don't even know what the security levels are called, let alone have access to them...
i saw an early alpha over 2 years ago. I was blown away.
:/ The early alphas were releasable, imo. Especially compared to cmd.exe, which is squarely awful :)
Note that prior to joining MS, i did admin and development work on linux, solaris, irix, and even hp-ux. i know my way around a unix shell pretty well. I started making noise a few years back about how awful cmd.exe is and how we need a real scriptable admin experience. Some people said "go check this out". I was blown away at what they already had.
There are some things about MSH that are really, really good. I'm looking forward to it. I'm frustrated that a lot of the early momentum it had seems to have fizzled and its now bogged down in "product development"
My opinions are my own, and do not necessarily represent those of my employer.
Bill Gates said "Goodbye" to the Command Line at the introduction of XP. According to him, we did not need it anymore. So Bill, what's up with that?
... they can avoid completely changing it with every new release.
/etc ten years ago are likely still there now, and they likely have the same names. You want to find a log file? First stop is /var/log.
:-)
The one thing I like most about using the unix/linux cli is that the stuff I learned in 1995 (my first encounter with Solaris) is still useful today.
It may be a steep learning curve, but you don't have to throw out everything you know with each new release, the way a GUI often forces you to. If you stick with the command line for a few years, it's an investment that pays off in greater skill.
For example, most config files that were in
Every time a new version of MacOS or Windows comes out, it seems there's always some little check box -- which you need checked to accomplish your task -- that's been moved to some obscure option in a dialog in a control panel that's *different* in every release. Or they've figured out a "better" (read: different) way to do what you need, which means a new control panel, or an entirely new model of doing the same task.
It's like Home Depot (a large warehouse-style hardware/home improvement chain in the US): it took me years to learn where everything was in one of their massive wareshouse stores. Once I learned the layout of the store, it simply wasn't worth my time to shop at a competitor (like Lowes).
Now, of course, Home Depot is remodeling all its stores to be more competitive with Lowes, and thus killing my whole rationale for going there in the first place!
They appear to be looking for an identity.
Well, that's what happens when your the McDonalds of operating systems.
Sure it fills you up temporarily but you don't want to make a steady diet of it or it will kill your business.
The same company who has been trying to kill *nix for years, now says they have a better command line shell.
Sure, one that gives hackers more access to OS critical API's I'm sure.
These are the same people who can barely build a microkernel implementation, can't create a multi-user OS in the last 25 years who now, magically, will have a better *nix than *nix.
The market isn't going to buy that. Neither will any of the real analysts.
When I say 'real' analysts, I'm not talking about the C(ZD)-Net type Microsoft Zealots who worship Microsoft and proclaim that every product that comes out of Redmond is G_d's gift to mankind either.
How many times are you going to buy the line, "It's going to be better next time and better than anything else out there." Even if it were true, five years is too long a time frame to wait for anything. Chances are, it will be like their "korn shell":
"Question 5) True Story? by travisd (travisd_no_spam@tubas.net)
Was the story about you embarrassing a Microsoftie at a conference true? Specifically, that he was insisting that their implementation of ksh in their unix compatibility kit was true to the "real" thing and trying to argue the point with you. The argument ended when someone else finally stood up and informed the speaker who he was arguing with. ...
Korn: This story is true. It was at a USENIX Windows NT conference and Microsoft was presenting their future directions for NT. One of their speakers said that they would release a UNIX integration package for NT that would contain the Korn Shell.
I knew that Microsoft had licensed a number of tools from MKS so I came to the microphone to tell the speaker that this was not the "real" Korn Shell and that MKS was not even compatible with ksh88. I had no intention of embarrassing him and thought that he would explain the compromises that Microsoft had to make in choosing MKS Korn Shell. Instead, he insisted that I was wrong and that Microsoft had indeed chosen a "real" Korn Shell. After a couple of exchanges, I shut up and let him dig himself in deeper. Finally someone in the audience stood up and told him what almost everyone in the audience knew, that I had written the 'real' Korn Shell. I think that this is symbolic about the way the company works."
Friends don't help friends install M$ junk.
There is an apocryphal story about someone from MKS and an MS flack giving a joint presentation on their UNIX toolkit for Windows.
During the bit about KSH an old guy at the back kept piping up with comments like "that feature wasn't implemented properly" and "that doesn't conform to the specification". Apparently the MS flack expostulated a lot and try to cast doubt on the old guy's qualifications. It was only then that it was pointed to him that the person making the comments was David Korn.
- They took the code from a project called Mosiac
- They made a deal with a company called Spyglass to use their source code from Mosiac
- The deal was for a small quarterly payment and a big percentage of sales of Internet Explorer
- They screwed both Netscape and their partner Mosiac by giving it away for free - undercutting the competition and avoiding all royalties to Spyglass - putting them out of business also.
So maybe they just could not find any BSD based CLI or naive proprietary company to screw out of a good CLI? You have to admit though - that is quite some business innovation - Bill's pure genius at it's best. I heard Spyglass finally got a few million out of their lawsuit. It just amazes me that people don't remember these things.I have come to a conclusion that one useless man is a shame, two is a law firm, and three or more is a congress -J Adams
While I look forward to any improvement over cmd.exe (heh, like that's hard), I have no doubt that MS still "doesn't get it". Unix systems have developed on a foundation since the 70's and the command line is still a preferred interface to many (including myself). Shells typically do not do much in themselves, they act as a _simple_ glue. A shell takes the collective enviornment of small utilities and gives you the power to harness them all together and accomplish just about anything. Is MS going to implement 1000 small utilities? No, because MS has a "do it all" philosophy.
As such what they will do is invent ANOTHER scripting language with a CLI interface for users. There is a difference between a scripting language and a shell, but I don't think MS can (or will) tell the difference. Scripts do some things well, shells do other things well. Scripting in a shell is good because it takes your native interface and allows you to automate it. Is MS seriously going to tell us that the CLI is the way of the future?
So basically we are where we are now, but with a more capable shell. I'm sure many of us people using Jscript can't wait to move down the chain from the second-teir citizenship we endure from MS's half hearted support of Jscript as a scripting language. And what happens when we cannot do a task in MSH? Same thing we do now, bunch of work arounds and cludges because something is not installed by default.
While I aplaud MS for trying to make windows not suck as much, the CLI is Unix turf and windows attempt at stabbing into such an enviornment will be half hearted at best. Windows needs a shell badly, but not another scripting language. Just look at how hard it is to change permissons on a directory. A nightmare to do in VBscript or Jscript, and really painful to do with cacls (such an intuitive name). MS can't bear the simplicity of chown / chmod.
Since you're writing out ObjC objects, can my perl script read your stdout from stdin? (I'm guessing: no, unless you write some routines in perl that will let it read your serialization format. Repeat for ps, sed, awk, grep, etc until you find you've hacked all of shellutils to be OO.)
.NET language). The point of Monad is that it is a OO shell+shellutils.
>> Monad scripts can pipe out and pipe in objects
> This is trivial to implement with a programming language
Monad has nothing to do with a programming language per se, although the examples use C# (you can just as easily use any other