First proposal: what should LispOS feel like?

Mike McDonald
Wed, 30 Apr 1997 13:09:18 -0700

>Date: Wed, 30 Apr 1997 12:30:15 +0200 (MEST)
>From: Martin Cracauer <>
>To: Mike McDonald <mikemac>
>Subject: Re: First proposal: what should LispOS feel like? 
>Mike McDonald writes:

>> >OK, the system boots into whatever normal state is defined. A typical
>> >picture might be:
>> >- all network interfaces has been brought up, including routes.
>>   I want these inside my lisp world.
>You want the whole networking framework in Lisp?
>That's certainly doable, although a lot of work.
>The Unix implementations of network interfaces and protocols are
>hacked-in anyway, they are not part of the normal driver
>structure. The hardware driver have a clean abstraction.
>For my needs, I'm certainly satisfied to use the current TCP/IP stacks
>and manipulate it using functions to call syscalls, though.

  Over the short run, yes, use the Linux versions. Eventually, replace
them (when someone volunteers to write them! And when we're ready for
them.) with lisp versions.

>>   I already have one of these. :-) I'll send you my .ctwrm file that
>> gives me Select-E, Select-M, Select-N, Select-W, Select-D, Select-S,
>> and Select-T. (Select-L is on my home machine.) I use Caps-Lock for
>> the select key. Works great! 
>No go. I use Capslock for backspace already :-]

  Ah, an ole Symbolics keyboard fanatic! My former coworker had me set
up his xmodmap to do that too. Anyway, that should free up the
BackSpace key then! :-) (Pick any key, it's user configurable.)

>Yeah. As soon as you pull services (like networking) from the kernel
>into Lisp, you probably want this Lisp world to be the same you're
>running you userlevel stuff in.
>We have to clarify which kernel services to provide from Lisp.

  Eventually, I'd like to see everything except the device drivers be
implemented in lisp. But that's a long, long term dream.

>>   I vision is of a single user machine. (What percentage of Unix
>> machine do you think actually have more than one real user on them at
>> any time? I'd bet it's much less than 10%. And Windows machines? Zero?)
>I think our goals can be integrated.
>My machine is running a Unix kernel and I use the kernel-provided
>Networking. I can use several Lisp worlds accessing networks, no
>problem. Manipulating the networking stuff can only be done by using
>Unix syscalls from some Lisp api.
>You have one world running as root. You interface your world to
>the network hardware drivers and provide networking yourself. 

  Don't we end up with a lot of duplication (code wise) witht these
two worlds? It'd be nice if we could somehow designate portions of the
code as static and sharable. Then both worlds could share the common

>Of course, there is currently no way to use a network hardware driver
>from a userlevel process, but it isn't difficult. The whole BSD
>networking stuff is not that complicated.

  Hmm, BSD 4.3 (4.2??) used to support raw sockets, which is
essentially what you'd want if you were going to implement a protocol
stack in user land. I have no idea if either FreeBSD or Linux provide
such an interface anymore.

>This is, BTW, another reason to prefer FreeBSD over Linux. The 4.4BSD
>networking framework has an excellent description in Richard
>W. Stevens "TCP/IP Illustrated", while the Linux folks constantly
>reimplement the whole networking.

  That they do! Until we start messing with this kinds of OS services,
I think it should be possible to do the developement work under both
OS's. I prefer Linux because I want to be able to use ACL for
developement until CMUCL is ready.

  Mike McDonald