Filed in: Ideas.XMshL · Modified on : Fri, 13 Nov 09
XMshL stands for "XML shell", and is pronounced "ex em shell". An alternative name is YAMshL, "yam shell".
The grand purpose of XMshL is to bring some of the ideas from Windows Powershell to the *NIX world, but learning from its mistakes.
Standardised data exchange format. This is where the XML comes in. Powershell's "Everything is an object" mentality is very beneficial. However, what they really meant was: "Everything is an object... of a different type than you wanted". That means that casts abound you're often having to convert a string to an object. But the UNIX stance of "Everything is a string" leaves off "... that changes between versions of software and is largely left up to you to decipher the pattern". By standardising on XML as a data encapsulation format, we can spend less time mucking around with fragile, unreadable regexs and more time on accomplising things. This is the main driving idea behind XMshL
Standardised command names. Like Powershell, standard command names will be of the form verb-[adjective]noun. Aliases of common names will point to the standard names
Better, standardised argument passing. Arguments shall come in three flavours:
These would parsed into a YAML object and passed to the app.
A clear distinction between automatic and interactive modes. There will be some sort of way to signal programs that they are to run in "automatic" or "interactive" mode. In automatic mode, there should never be any prompting of the user for input, because the user probably isn't there. In interactive mode, a program is allowed to prompt the user.
Namespaces for environment variables. To avoid clobbering other variables, namespaces could be introduced.