Ensemble Terminal
Too often there is a cavernous divide in functionality between a system's graphical interface and the textual interface. More commonly, the textual interface is nothing more than an imposing command prompt. Users are left to manually learn commands and parameters, without context and assistance for expected parameters, available file operations based on security, etc. In general, current command line interfaces provide an uninteractive textual link to the system, just as files are treated as opaque bytestreams.
One of the model interfaces for this is the IBM OS/400 / i5 system interface, widely regarded for its general ease of use. While full commands are always accepted at any command prompt in the i5 system, most system operations and programs are available through a menu-based structure. Selecting these menu options could create the equivalent command line entries along the way, providing the user with an educational path to learn the system's direct commands. Command parameters can be contextual and object-typed. Thus if a person does not remember what parameters are available for the command, they can hit a function key or other sequence, pull up an entry box, and select the proper file objects, system resources, or other entry methods. The idea is equivalent to Visual Studio Intellisense or other programming IDEs' parameter completion abilities, but at the textual command line level. Likewise, file searches and listings would provide a live file list, which can be scrolled through, and available operations (based on security permissions) available through a popup menu.
This idea allows a novice user to get used to the system's text commands, while providing power users who are familiar with the command structure a direct command entry prompt.
In the same manner as the graphical interface, the textual interface should be sharable between users, and open textual sessions should persist in order to be accessed remotely. This is, in general, an evolutional extension of the popular "screen" utility, widely used in the UNIX world. A user should be able to log into a textual session, disconnect, pick the same session right back up in a remote location, and optionally have one or more additional users join them in the session. Other users should be able to concurrently interact in the session, possibly by providing different colored text on-screen to denote separate users. This allows for session collaboration, even in a GUI-less situation.