Posted on | January 5, 2008 | No Comments
A dozen or so people have written in to ask me what happened to GRSH (Gridnix Shell), our souped up version of dash with special built-ins for ease of clustering. I took the repository down, I’ll explain why.
GRSH started out using the POSIX compliant mini shell, dash, which is distributed under the less restrictive BSD license. Our itch at the time was simply to modularize things like SRCE and the other programs in the cluster suite so that one simple shell/CLI controlled everything. This also allowed for the added functionality to be used in scripts without additional forks, since Dash parsed scripts so quickly, it was ideal. Since this was the first time any of us had worked on a shell, we picked the smallest POSIX compliant shell that we could find.
Dash already borrows some things from Bash (signames), but only links against the output of mksignames. Our enhancements simply added built-ins to dash (similar to printf, echo, etc), code mixing was not an issue. The point of the project at first was just to combine a bunch of modules into a proof of concept shell and later make our own from scratch. You could still distribute Dash under the BSD license, if you included our plugins and changed them, you needed only to make the source to the plugins available. Seemed sensible, but turned into a headache.
In order to be really useful, a lot more things would need to go into Dash such as support for arrays, tab completion and some other stuff. Its not that I’d have a big issue releasing those changes under the BSD license, its the fact that most of my code/snippet library is GPL. Therefore, its easier to stop now and start applying changes to a 100% GPL program. Again, its not politics, its logistics.
I’ve got the source to bash, busybox and some great programs that build an install root which I’m now slowly turning into a cluster-centric micro distribution, I hope to start releasing in the alpha stage by the end of June, 2008.
Dash was a great learning experience, the code is really easy to understand, no bloat, efficient and simple. Unfortunately, once we got past the point of just releasing modules in patch form, the license mixing got to be too much of a headache to manage.