On Fri, Aug 9, 2019 at 11:28 AM <xxxxxx@ancell-ent.com> wrote:

And I forgot fifos, you don't need to make or know about them unless you're communicating with another process, right?

Yes, but that's arms-length communication, like local (aka Unix) domain sockets.  A single-process server can set up a FIFO in a known location to take input from diverse sources.  Unlike sockets, they have meaningful names, and conflicts are less likely.  Of course they are basically unidirectional, so if you want RPC-ish communication you need a socket, but often you don't.  Also sockets require special coding conventions on the receiver side whereas FIFOs have the file interface (see <http://doc.cat-v.org/plan_9/4th_edition/papers/net/> for the road not taken).
 
Ah, of course, and I can sort of see that for parent-pid, logging "who's responsible for my existance".

I think that's 80/20ed out.
 
Thus, and for simplicity's sake, I strongly advocate exposing the calls that these will use to simply set the line discipline to raw, maybe rare (completely left out of the SRFI, do we want it??), no echo and echo (orthogonal, I think), and cooked mode.

That's exactly what I've got now, although it should be refactored to treat cooked/raw/rare as equals.  Treating cooked and echo as the default and returning to it by dynamic-wind makes a great deal of sense to me.  That gives us two procedures:  (with-terminal-mode rare? thunk) and (with-no-echo thunk).