In principle, the functions "detachable terminal session", "terminal
session multiplexer", and "terminal with scrollback", and "translator
from a common VT100 superset to whatever the hell the user is using"
could be four separate programs.
Separate programs are not always better than wider options; which is better depends on the problem.Whenever one needs a way to perform a new function, one faces the choice of whether to add a new optionor write a new program (assuming that none of the programmable tools will do the job conveniently). Theguiding principle for making the choice should be that each program does one thing. Options are appropriatelyadded to a program that already has the right functionality. If there is no such program, then a newprogram is called for. In that case, the usual criteria for program design should be used: the program shouldbe as general as possible, its default behavior should match the most common usage, and it should cooperatewith other programs.