Yesterday, David Williams posted on ITWire’s Linux Distillery an article about how Linux is keeping Microsoft honest. The real meat begins with a discussion about Windows PowerShell, Microsoft’s newest scripting language. ‘New’ is a relative term, as Williams points out that the scripting concept is not only a very old one, but that the punch cards of computer lore could be considered the first form of scripting. Williams points out that the Windows trend of ‘dumbing it down’, creating GUI tools to replace thousands of keystrokes, may be reversing. The focus of PowerShell, a CLI, is to replace thousands of mouse clicks with scripts. Williams continues with the revelation that PowerShell is becoming ‘entrenched’ in Microsoft’s server offerings, including a headless, GUI-less mode for Windows Server 2008. He attributes this shift in design philosophy to Linux.
I think this is great news for Windows, because as systems grow, especially online offerings, effective system management depends on efficiency. Ultimately, this means automating as many maintenance functions as possible. With Linux and other *nix platforms, this has never been a problem, but the Windows CLI has been fading into obscurity for many years now. The DOS shell sat right on top of the kernel, but beginning with NT, the ‘command prompt’ became just another application that had to operate through various other layers, such as the oppressive NT HAL, diminishing its power. Moreover, the range of CLI utilities remained unimpressive. Thankfully, products such as MKS Toolkit, Cygwin and Sourceforge’s UnxUtils have helped to fill that gap.
Let’s not forget that the CLI is useful for far more than executing OS-related functions. In my experience, all the best software applications offer a CLI interface. I implement systems that help IT managers manage the activities of their staffs, including helpdesk and other customer issue management suites, source code control and software media distribution centers, and project/programme management repositories. I always look for software that provides a Unix release, even if the target platform is Windows. Why? Unix-based applications almost always include a CLI which is almost always ported to the Windows release if one exists. Not only is the CLI of great use to me from a user’s and administrator’s perspective, but I know that the existence of a CLI usually indicates that the software has tested more thoroughly. If an application has been designed well, then the CLI functions call the same underlying subroutines as their GUI counterparts – this allows the vendor to easily write (and more importantly, to execute) scripts for regression and load testing. Nightly smoke tests of new builds are possible without the maintenance of complex GUI-based test harnesses. Don’t misread me – the GUI must be tested, just not to the same extent as when the GUI is the only interface available.
Where’s the FUD? For years, Windows zealots have denounced Linux for being arcane, hard-to-use, and backward. Heavy reliance on the CLI for administration was cited as a failure to progress (through obstinacy, ignorance or both). Now, it appears that Microsoft is admitting that a powerful shell is indeed useful, forcing its fanboys to dine on crow tartare.
The return of a powerful shell is a step in the right direction for Windows! Is this really due to Linux? I wouldn’t be surprised.