# -*- org -*-
#+OPTIONS: toc:nil num:nil
#+TITLE: Commander S, a review
* Commander S: the shell as broken glass
#+BEGIN_HTML
#+END_HTML
** Tumescence
Like you, my dear reader, I was excited upon encountering the paper
[[http://www.deinprogramm.de/scheme-2005/05-knauel/05-knauel.pdf][Commander S: the shell as a browser.]] Commander S, as described in the
paper, is "a new approach to interactive Unix shells based on
interpretation of command output and cursor-oriented terminal
programs." Better yet, it functions as an interactive front-end to
the Scheme shell, [[http://www.scsh.net][scsh]] -- bringing the power of Scheme shell scripting
to the command-line.
As with most things Scheme (allowing certain [[http://www.call-with-current-continuation.org][notable exceptions]]) and
going double for academic output, I expected impracticality in the
real world, yet to have a lot of fun poking around, getting some ideas
and maybe even, hope of hopes, hammering it into usability. The [[http://www-pu.informatik.uni-tuebingen.de/users/gasbichl/darcs/commander-s/][lack
of public release]] was barely a concern, given that the authors thought
enough of it to write a detailed paper expounding its virtues in the
present tense.
In short, I expected exactly what anyone might from a proof-of-concept.
** Essence
Unfortunately, it was not to be. Commander S crashes at the drop of a
hat, making exploration time-consuming and frustrating.
:> ls
:[Ah, works fine. A good start.]
:
:> ls filename with a space
:((syscall-error 2 "No such file or directory" #{Procedure 13576 #} "space" ---) . ...)
:
:> ls "filename with a space"
:((syscall-error 2 "No such file or directory" #{Procedure 13576 #} "space" ---) . ...)
:
:> ls "filename
:# the dungeon collapses!
:starting remote handler for condition(parser-syntax-error (end of file
:within a string #{Tracking-port #{String-input-port}}))
:
:# Okay, we'll restart the Commander.
:> ps
:I'm sorry jim, I'm afraid I can't do that. The following error occured:
: (call-error invalid argument number->string #f)
:
:> pwd
:> # Paste result to command line -- a noted feature
:# the dungeon collapses!
:starting remote handler for condition(error unknwon message
: in make-standard-viewer get-selection-as-text)
:Please connect to port 8888
:
:# Gah! Let's try another plugin.
:> printenv
:> # Paste result to command line
:# the dungeon collapses!
:starting remote handler for condition(error unknwon message
: in make-standard-viewer get-selection-as-text)
:Please connect to port 8888
Other issues include terminal handling which continually corrupts
the screen and forgets to add carriage returns, process output that
goes to a blank screen instead of the output ring, and hanging
background processes which force me to SIGQUIT.
** Anti-depressants
The Commander S concept is a fascinating one, but basic exception
handling and feature testing would encourage users to contribute. My
experience so far is that the shell is too fragile to bother hacking on.
#+HTML:
* COMMENT html style specifications
# Local Variables:
# org-export-html-style: "
#
#
# "
# End: