Thomas Munro <munro at ip9 dot org>
Back to my software page
Physical teletypes (TTYs) and their successors video terminals were the main interface between humans and time-sharing computers from the sixties through to the early nineties. The early 8-bit personal computers and kit computers of the late 70s were arguably closer to terminals than to the mini-computers they connected to, in terms of CPU and design, and one very popular application for these (and indeed all subsequent) personal machines was terminal emulation. Emulating the DEC VT100 (which implemented an ANSI standard set of control codes) became the stardard way connecting to Unix machines and bulletin board systems (although in another galaxy IBM used and still use EBCIDIC based 3720 emulation for their mainframes). As internetworking with TCP/IP spread, the telnet protocol (and then rlogin, and then ssh) gradually replaced the physical serial link, and the X Window system created a new class of terminal based on overlapping graphical windows. One of the most frequently used applications on X systems to this day is xterm (and derivatives) which is essentially a resizeable VT102 emulator.
So why do modern users of GNU/Linux, *BSD, Solaris, Irix, MacOS X and other Unix-derived operating systems (in spirit or in source code) use their 19" flat screen 1600x1200 32-bit colour displays to run an emulator of a green screen 9600 baud DEC VT100 from 1978? I believe that the anwser is this:
Text is language, and language is an incredible faculty with which man can express ideas vastly more complex and abstract than can be expressed through pictures and electronic rodents alone.
Language and text have quite a lot to do with the philosophy and aesthetics of Unix. Unix's tidy world of things like processes, files, pipes and sockets and programs is tied together by textual language and commands interpreted by shells. The resulting system is simplicity itself - nothing is hidden from you or dressed up in the interests of marketing. It is a large family tree of systems designed by computer scientists and enthusiasts for use by computer scientists, researchers, businesses and enthusiasts. In many cases the source code is available, and compilers and manuals are installed. All of the services that came into existence in the Unix environment (email, the web, shared printing, FTP, gopher, telnet, talk) and many others (databases, data processing and calculation systems) are simple processes that can be used or configured through simple shell commands using a text terminal over a low bandwidth network link. With a terminal (or emulator) you can easily configure a new software package on a machine on the other side of the world, using a set of small simple tools that each perform some small task. All of these things are accomplished through the use of language - programming languages like C define the operation of a computer program, and higher-level shell scripts and commands control the configuration and interaction between these programs. The result is minimalism, harmony and zen.
Bill Joy developed vi as way of editing source code that was less painful than ed, when at home connected to the university with a slow modem (although strangely, various people have since invented some more painful ways, leading to holy wars). A file called /etc/termcap described the capabilities and codes of each model of terminal. Then Ken Arnold made a great library for abstracting this database of terminal control codes called curses and, with two others, a game called Rogue. Since a computer is not very useful without vi, I don't trust operating systems that don't come with a vi implementation (or for that matter, source code and a compiler) - they probably have dodgy motives. The most useful computer program in the universe is vim.
In the introduction to the first edition of the C Programming Language, K&R wrote, "... [C's] absence of restrictions and its generality make it more convenient and effective for many tasks than supposedly more powerful languages," and I believe that the same can be said for text-based user interfaces when compared with graphical ones (although graphical user interfaces are perfect for many tasks - don't get me wrong, I am not actually a luddite). I should admit that I wrote this rant while fondly thinking about my experiences developing curses-based applications on Wyse terminals connected to machines running SCO System V in the early and mid 1990s. Thank you for putting up with this journey of nostalgic rubbish. Long live the text terminal!
This pointless rant accompanies my equally pointless curses-based Space Invaders clone call Ascii Invaders. The end.
$Id: text-rant.html,v 1.1 2002/07/21 22:43:23 munro Exp $