RANT_MODE=1: Current generation shells -- Will Microsoft Ever Fill The Needs of the Enterprise?
Meet the new boss, same as the old boss ... -- The WHO We Don't Get Fooled Again A good friend of mine recently pointed me to this blog entry by Joe Brockmeier on a subject that's dear to my heart: shell programming. In case you haven't heard, Microsoft is touting a new shell that's going to do some neat things for LongHorn when it ships in the very near future (2007). I've been somewhat fascinated by the whole "MSH" (Microsoft SHell) concept since hearing about it a year or so ago, so it was interesting to read Joe's take. The blog entry, however, has a rather misleading headline. It's titled "Next-generation shells - is Linux falling behind?", which prompted my title. You see, Microsoft hopes to be somewhere in 2 to 3 years that is at least on par with where Linux is today, and I don't believe for a second that for one, they'll be there (where Linux is today) or even that they understand the problem they're trying to solve with this new toy. But Joe's missing the point here as well. He does make some bold statements about Microsoft innovating some object abilities in pipelines, and how that's new -- and it may be for all that matter. The general tone of the piece, however, is quite misleading. Before I get started, let me explain that I speak from a base as an enterprise-class Unix and Linux engineer. I've got quite a few years behind me doing that kind of work and in general, I'm an automation freak of nature. First and foremost, enterprise-class data and systems management demands solutions that are available today -- not literally 2 to 3 years from now. It demands programming that can withstand the test of time. These solutions should be cross-platform, extremely standard and stable. Stability is something typically measured in years of service in non-interactive situations. It's a reputation that comes about, in other words, by dependence -- no amount of marketing hype is going to answer the bill here. Yes, as alluded to in the article, some people would point to the fact that backward compatibility hasn't changed in bash, and that new features (in their humble opinion) haven't appeared at that fast of a rate. For what it's worth, I disagree. Every time I load a new Linux system I find some new feature in the shell environment that's really awesome. These new innovations don't break the sound barrier, but make things incrementally better without breaking past compatibility (a common theme of this article). Color, for example, is a really common thing found in the utilities under Linux -- and that's just one dimension. I could blather on about all of the neat command line switches that add capabilities to typical Linux utilities all day -- but that would be missing the point. Here's where logic and reason really go south, in other words. Bash (and other POSIX shell's, such as the Korn shell) have been proven and capable solutions that adhere to a standard for years. The POSIX standard is actually bolted on top of Korn shell's 1988 specification. This means that it's theoretically possible to have shell code that's 15 years old today and still doing worthwhile work. In an enterprise-class setting, that's no small item. That is everything. Let's not also forget that enterprise-class operations require people with proven understanding and experience with these technologies. Who wants to be the one to beta-test all this new Microsoft garbage with enterprise-class data? So, no offense Joe (or Dana), but I think I'll take the capabilities out of the box for managing complex systems in large quantities that Bash and Korn shell offer today. I'll also leverage Python, Perl, TCL, expect, gcc and a host of other built-in languages, each suited for some portion of the job to do the stuff that needs to be done across multiple operating systems -- even Windows. Truth be known, it's possible to load Cygwin on a Windows box, with secure shell daemons and all, and treat it very much like another Unix box (using the "uname" function to determine what "flavor" of Unix you're messing with). This is way more valuable from a systems management perspective than some nifty new shell, in some nifty new operating system and written to some nifty new proprietary specification. What about the possibly of the MSH "standard" changing like a flag in the wind? What real standard is it based upon? In case anyone is wondering -- yes, I've actually been involved in the deployment of Cygwin in an enterprise class setting, at a fortune 500 company no less. Oh wait, there's more good Microsoft shell news! I get to wait until 2007 before it becomes stable and usable. I forgot that. And it's going to do what that I can't do today? Maybe do some exotic file manipulation with objects? The examples (XML and a spreadsheet as output) given in the article are possible with a decent awk or Perl script today. The output of a system command that contains some arbitrary data is now and for the foreseeable future, text. True, ASCII is a rather clumsy data mechanism, but often data doesn't come to you in neatly defined object packets -- data comes in a multitude of formats and you have to figure some way to clean it up to get to the core aspects that are hidden in there somewhere. Awk (a shell utility found on any Unix or Linux system deployed in the past 2 decades) does that nicely, and Perl can be used for the binary stuff. Systems information is typically not object data, from experience. It comes from any number of sources in various states of representation -- but almost anything can be reduced to a text stream of some kind, and that means we're back in shell territory. The shell provides almost 4 decades of refinement from multiple mindsets to deal with that text, and do useful things with it in the end. I speak from extensive experience here -- CSV spread sheets (an Excel data file import/export format) are easily created right out of any plain old shell today. I've been told (but never found a practical usage for it) that there are modules to directly read and write spreadsheets as well with Perl. The idea of needing some new Microsoft language to do this smacks of the usual proprietary madness that investing any time in their idea of management brings to the party. My verdict: It's not enterprise-class stuff, in other words, because it likely will never cross platforms easily, and for all of the other reasons outlined here. It's likely going to help people that are stuck with massive Microsoft-only platforms to support, and that may be a good thing for them. In 3 years. Maybe by then they'll have some community based development going so they can leverage some automation that runs in this new environment. It will likely be, still, a stark contrast to all of the automation and command-line stuff found in a typical Linux distribution right now. That automation has been going strong for how long? Decades, if you count all the Unix inertia. Given the fact that porting scripts and even executable code from these systems is extremely easy (even to Windows now that Cygwin is stable) makes investment in this thing a real long horn, er shot, I mean. Don't get me wrong, it's a great thing that Microsoft is finally listening to the command-line jockeys out there. People have, for years, stupidly assumed that command-line operations were "archaic" and that shiny new GUI's were the next big thing. Microsoft touted this as an advantage for a long, long time, and it's good to see them finally admitting that it was a big mistake to put all the enterprise eggs in the GUI basket. In order to gain the enterprise traction that they want, they're going to have to listen to administrative needs, after all. They're doing this, in my humble opinion, because they're seeing Linux take huge sections of the enterprise that they wanted for themselves. Please don't misinterpret the above statement either. GUI's are great for doing things that have been done before. They help new users of systems do extremely basic things and they make an awesome front-end to two dimensional tasks, like playing solitaire for instance. They're also good for fronting automated tasks that have been carefully refined. I love opening multiple Bash and Korn shell terminals with a GUI -- I wouldn't have it any other way. They suck like eggs for things that are ad-hoc, creative and large scale. In other words, they're not very good at handling things that are enterprise territory. You're not going to easily do something that's never been done before to say, 2000 systems, with a graphic user interface and no shell or shell-like code of some kind. That's been the big lie and the marketing siren's singing that falsehood have been many over the years. This new shell may be an object of beauty for some LongHorn users to admire. Will it ever have a POSIX standard like Korn shell or Bash? Will it ever run on a non-Microsoft based operating system? I think the answers to both of these questions are self evident. But we're talking about Microsoft, 3 years from now, and maybe by then they'll understand the power of playing nicely with everyone else. Maybe. In the mean time, a shell in the hand is worth any number of neat, shiny, vaporous objects in the bush. Paul (Fericyde) Ferris is a husband, father, Linux geek, and more. He is also an avid shell programmer with over 15 years of experience. His opinions are his and his alone. He reminds you that the truth will set you free ... but first it will (probably) piss you off. |
|
|
Comments (32)
Pauly, m'boy, get with the times!!!
Dean, Dean, Dean -- how can you say such things about bash and Perl and then talk as if _really_ you thought that the shell was beautful?!? You act like you're playing well with others, but I see through your little attempt at a jedi mind trick. Thought you'd slip it past me, but as usual I'm on to your mind hacking.
You aesthetic hackers are all alike. You crouch in the dust of your art galleries, nothing but the glow of a blinking multi-colored shell prompts and the smell of water colour paints to guide your way. You talk like you're in love with the technology, but it's all about look and feel over functionality. Go ahead and talk up the worthy-ness of Python and XML as objects of beauty -- those of us in the procedural world (the REAL world) know better.
One day, when you can't get your Python paint program to load with less than 256 meg of memory, you'll wish you'd paid attention to that nagging voice in the back of your head -- you know which one I'm talking about? Reason? It's a left-brained thing -- you're probably not familiar with it.
Then, THEN, you'll wish you'd stopped all of this portable insanity and simply used the ppm utilities to pipe the artistic data files to text format, so you could work on them with vi. But it will be way, way too late for that.
You and Toadie will probably get together in the Redmond infirmary, swap tales and pine for the good old days of text-based mail. Maybe then he can show you MSH and *SOME* command line action -- if he hasn't drooled himself to death by then.
--FeriCyde
You've been staring into the phosphors too long (Big hint: LCD's are the bomb these days).
I understand that you've stopped referring to pink,ring, middle , and index fingers, preferring to refer to them simply as a,s,d,f and j,k,l,;,' .
And -- so you'll know -- most people have thumbs, not space bars.
OTOH --
That is the beauty of the Unix way. You can be as procedural as you wish, and I can fling xml and hack on python to my heart's content.
There is no one and only best and blessed approach.
They'll never come to grips with that in Redmond.
Paul and dino argue like an old married couple. they yell fight, and argue using the dirtiest tricks you can dream of, but in the end say exactly the same thing for different reasons.
Don't ever change guys it's just to much fun.
I strongly, strongly deny that Dino and I fight like an old married couple -- it's more like a freshly divorced one, you ask me...
--FeriCyde
Paul and I do NOT fight!
Poor little Pauly (wanna cracker?) wouldn't stand a chance.
I toy with the boy, which does not make him my boy toy. (just in case you were wondering)
Dinotrac
BTW, where can I get some legal advice on these kinds of things -- know any good Lawyers, Dean??
:P
--FeriCyde
Does anybody?
;0)
At work the other day, 2 MS users told me separately that they didn't want to know the command line way of invoking something. They didn't want to know the name of the command or the arguments to it. They want a nice point and click interface.
One person was on winXP and was using a CVS gui with the CVS repository on a sun machine. She was having problems setting up the gui and I told her it was so easy to do it from the command line. Not interested.
The other person wanted to clone a hard drive and had bought True Image but was having problems. I showed him partimage on knoppix and he thought the interface wasn't nice enough. I also showed him the 'dd' command and he definitely wasn't interested in that.
But I'm sure MS will introduce something in their shell that will make MS weenies ask why doesn't linux have that. And the bashers will run and implement it. You know, like spaces in filenames.
- greg strockbine
Every newbie to systems management in the past 15 years or so thinks things like this (GUI's are "better" than command lines). They often revel in how smart they are to "see" this incredible insight. I say this because before that, there was only the command line for the vast majority of real heavy lifting.
I heard this the other day from an intern at work, whos' studying for what? Computer Science. He even complained about having to code in Java. Either he'll one day come around to the fact that the only creative work involves some form of script or code, or he'll find something non-computer related to do in computer science (management, procurement, quality control -- you get the drift). He might switch majors to something else (more likely for most, but this kid seems pretty bright).
It's not that GUI's are "better" -- it's that they're made for doing non-creative administrative work. Stuff that's mostly been done before with simple choices for how things that have been proven to work will behave after the final "next" or "ok" button is selected.
Oh I almost forgot -- I used the 4 letter word here to boot -- work.
Let's examine another four-letter-word -- "menu" -- it's no accident that the term refers to the same thing you get in a restaurant and in a GUI. It'd be unthinkable for you to ask the waiter "hey, can I jump back there and show the chef how it's done? Maybe instead of all of this french crap you have on here, let me make a decent Dagwood and some apple pie for desert? I know they're not on here but I know how to do it..."
There are two things -- 1) When you're in a restaurant, the whole idea is that someone else is doing the work. 2) You get what's on the menu, with slight variations -- rarely do you find a restaurant that will make anything you ask for with a menu item that says "Hey, just ask for anything, and we'll make it!".
But that does happen (very rarely -- I read of a case in New York), even so, because the people that run the restaurant are humans after all and because some chefs are super-human if you get my drift.
When it comes to the complexities of the operating system, and enterprise-class issues require that you master these things, you're going to only get as far as what a "typical" system administrator or user will get with a GUI. For example, possibly you need to make a complex change to something like 2000 systems, it may be that you can crawl through the registry with the gui, and delete some files (or add them), bounce the system (START/Shutdown/Restart in Windows).
You're in for a hell of a ride if you attempt this by hand. You have some management tools from Microsoft to help you, though. My guess is that there will be some vbscript (or equivalent, Perl can do stuff like this too) going by the end of the day. In other words, some typing will be in order.
Sure, you can console yourself (pun intended) by kicking the whole God-aweful mess off with their GUI-based control center, but who are you kidding by that point?
Command lines are not something more "archaic" than GUI's -- they're your ticket into the chef's domain, where you get to run the kitchen. The people that want desperately to control the way that the system works, but don't want to learn the inner workings of the operating system, don't want to be able to tell it what to do and suffer the consequences -- they're missing the point of the CLI -- it's not a "menu" after all. With a CLI, the system is asking you what you're hungry for, and telling you to make it. It's all up to you to think of where you'll go next -- or what you're going to "cook" up today. GUI's can't do that. They can offer you the menu, and if it ain't on there the waiter is clueless what to do.
Not everyone is suited to cook, and that's often bad news to people that want to be really creative with computers and software in general.
Hope I haven't pontificated too much here :)
--FeriCyde
I must say that this is the best comparison of CLI and GUI I've ever read. Next time someone says to me that GUIs are "better" than CLIs and CLIs are "archaic", I'll be able to give them a comparison that their little brains should understand. Restaurant menus vs. running the kitchen yourself, great metaphor!
And I'll try to remember to properly attribute this explanation to you of course :) .
Christophe Grandsire.
Cogent post on CLI v. GUI.
In this past year, I've had several on-the-job interactions with people who are working in Visual Studio with .Net . These, supposedly, are the "creatives". However, MS-Land works so hard to isolate developers from what's actually happening that I have found problems like:
1. A developer who couldn't figure out how to keep the same XML namespace when putting up his web service on two different machines. Very interesting predicament when you have a QA need to test using the SAME code, including XSL.
2. A developer who could not tell me the nature of a communication failure on his end. Mind you, I'm talking about basic HTTP stuff, nothing very esoteric, even though we were talking SOAP/HTTP. The problem was resolved by an internet search that uncovered a bug in the Microsoft http code that made it unhappy with apache 2.0. Of course, even that search was done on our end.
3. Just yesterday, I had somebody tell me he couldn't easily guarantee the order of sequenced elements in an XML document. Sigh.
Personally, I love GUIs. I don't spend enough time in the guts of my network to remember all of the little things. Menus are very handy for those tasks that you don't do very often and that amount, essentially, to choosing between A & B (or C ...).
However, computer types (as opposed to end users) should never be allowed to go near a GUI until they've actually learned a useful thing or two.
Other wise, the click in point and click will be yet another neuron switching off.
> Not everyone is suited to cook, > and that's often bad news to > people that want to be really > creative with computers and > software in general.
I would say this actually rarely happens for the following reason. If a person loves something with a passion, then the person will work (play) with that thing until he knows it backwards and forewards. People are usually successful in their labors of love. I would say it is more common for people to finally discover that they do not really love computing as they once thought, after the honeymoon ends. That's the real test of the love -- enduring with commitment for the first two years. Just doing it for the money, especially now, is prone to causing disappointment.
exotic file manipulations
Regards, Richard
That said, human readable is sometimes over-rated. Nice when you can afford, Not so nice when you can't.
For example -- at least given the state of hardware for the foreseeable future...can you imagine a viable human readable format for uncompressed full motion video. Shudders.
Of course, when we're hacking away at a keyboard, all of that middle-aged-guy stuff is overshadowed by the powerful aphrodisiac effect that programming has upon women...
--FeriCyde
PS: You're supposed to laugh now if you haven't...
Oh year, it's a terrible responsibility to deal with that. It's why all those sports stars are jealous of hackers.
I think it was just the other day that Peyton Manning told interviewers how much he wishes he had learned to program so that he could get all the hot chicks.
Dinotrac
Enterprise Data?!?!
> "data comes in a multitude of formats and you have to figure some way to clean it up to get to the core aspects that are hidden in there somewhere."
To engage in a serious conversation for just a moment here, enterprise data manipulation belongs in some type of a "data bus" of sorts. Most companies use various combinations of java application servers and message delivery protocols to accomplish this (WebSphere, Tibco, WebLogic, MQ, WebMethods, etc.) for their largest deployments, but why not for the smaller jobs too? It's overkill? It requires too much specialized development efforts? I say that these companies need to wake up, settle on an enterprise technology roadmap, and start moving. The concept of enterprise architecture is something that is in a deep slumber in most large companies in America (and overseas as well). If a reasonable direction is decided AND acted upon, we don't have to worry about some odd logfile adapter becoming obsolete with the next OS upgrade - it is already in an active development/maintenance cycle. If more companies would adhere to long-term strategies and industry best practices, us sysadmin's wouldn't have to worry so much about making a shell script that will outlive us.
Anyway, enough of my rants. I'm always behind the curve anyway - I'm writing about an article that was posted like a week ago and is already outdated. My bad!
-Tool
Listen man, you're always trying to abstract things to the next higher level, it's part of the deployment of your ego (This guy, for those of you reading and wondering why I'm in instant "mock-insult-mode", are friends).
Good points, though, what you're saying here. I wasn't speaking of data in the same sense that you are though -- you're thinking of enterprise data as manipulated by really mondo-cool (and expensive) distributed applications (a worthy effort for tools such as yourself).
But more "how the hell do I manage a jillion servers with God-knows-what problem today".
Those things are childs play for Linux. They were somewhat more painful ,but again, achievable due to vendor-specific tools -- not of the kind _you_ are, mind you -- things like openview and Tivoli. You get the drift. Oh, and I'm talking deployed the way they should be deployed...
Anyway, good point. Don't you have a toolmat to lie on or something, though?
PS: Welcome to LXer! --FeriCyde
Yah, slacker. I know what you're getting at. I'm just bitter that we are always thinking so small when we do our little grunt work and don't consider that maybe this neato script to enforce configuration management (cfengine http://sourceforge.net/projects/cfengine/ anyone?), could be useful in other areas from a high level. But somebody else on another team has to dream it up since they don't know about it. As you know, I'm all about competence, proficiency, efficiency, and synergy. Things Ferris know nothing about, bwahahaha!!!
Anyway, it's good to be with the lowest percentage of intellectual capital here with FerriCycle!
-Tool
You're lucky I don't write a shell script to replace you:
#!/bin/ksh # Script to replace the tool case $(echo ${RANDOM} |cut -c2-2) in [1]) echo I'm all about that! ;; [234]) echo You're such a tool!;; [56]) echo Don't be hatin!;; [78]) echo I'm going to beat you!;; [90]) echo No! You're the tool!;; esac
Actually, I just ran this, and it was so life-like (dare I say, Tool-like) that I halucinated a thin guy in a suit walking by.
Now that's efficient use of code!
--FeriCyde (note the lack of two 'r's, ok?)
But you're still the greatest in my book!
-Tool (note the intentional misspelling above - F e r r i C y c l e)
You have to escape the ticks ...
-Tool
p.s. this site don't work with opera... :(
Welcome to LXer chico :)
At least it's closer than Slashdot is.
The remaining ones are errors in the story postings, which I'm not really interested in fixed.
And what's up with the body tag being disallowed? So picky...
Dave
-Tool
I just know they exist. As I said they were all minor anyway.
Also note my personal home page breaks a few rules it'self. Okay maybe more than a few but it does work.
http://home.rochester.rr.com/degarmoind/Peragrin
Post a comment
A free account is needed to post. Write your comment here first: your text is kept in this browser while you sign up or log in, and is waiting for you when you come back.
Your message:Sign up and post (it is free) or Log in and post

No, wait...wrong context.
I am shocked that you remain so mired in the past.
Perl and awk tricks?
That's so -- so 2000!!
This mystical Microsoft shell is sure to look nice to the Microsofties (In fact, I just talked to Toadie, and he's almost slobbering over it), but it's sure to be yeat another Microsoft philosophy tool, meaning it is doomed to fall behind the curve.
The wonderfulness of the Bash (or korn or c or bourne or whatever) shell isn't all of the incredible programming that you can do with it. Truth is, I do almost no ksh/bash/awk/sed programming anymore. The day I started noodling with perl but the kabash on that.
But here's the thing:
I don't use perl that much any more, either. I do a lot with xml and with python, but I still use the bash shell as my launch point.
That's the beauty of the Unix shell philosophy. It tries to make the most useful functionality readily available, but, more than anything, it plays well with others.
And of course, there is the reliability thing.
Some of us care about that stuff, you know.
Cheers.