Commander S, a review

Commander S: the shell as broken glass

Tumescence

Like you, my dear reader, I was excited upon encountering the paper 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, scsh -- bringing the power of Scheme shell scripting to the command-line.

As with most things Scheme (allowing certain 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 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<TAB>
# 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
> <C-x o> <C-x p>         # 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
> <C-x o> <C-x p>         # 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.

Author: Jim <[email protected]>

Date: 2007/04/12 21:20:13