Existing command shells (for example GNU/bash), are historically based upon a command-line interface. While being powerful and flexible by allowing the composition of small simple programs into larger pipelines, they are notoriously hard for novice users to use.

Kevlar was designed to provide solutions to the major usability issues discovered with existing shells. These are detailed further in our Final Report (section 1.1).

  • Consistent help - The ability to find help about programs in a predictable and consistent manner.
  • Program discovery - The ability to locate programs to perform a particular task quickly, intuitively and easily.
  • Argument validation - The ability for a program to check before it is run that its arguments are in fact valid.
  • Flexible piping - The ability to allow the output of a program to be piped to the input of a previous program (creating cycles) and to split and join pipes up as necessary.
  • Typed pipes - The ability to disallow the creation of nonsense pipelines by not allowing pipes between inputs and outputs that are of incompatible types.
  • Spatial representation - The ability to lay out a pipeline of programs in 2D space in a way that makes sense to the user (as opposed to the 1D space presented on a typical command line).