[movitz-devel] Re: Lisp OS

mikel evins mikel at evins.net
Wed Feb 4 21:39:13 UTC 2004

On Feb 4, 2004, at 11:17 AM, Klaus Uhl wrote:

> mikel evins <mikel at evins.net> writes:
>> This is not to argue that a Lisp OS should use the same sort of
>> abstraction; rather, it is to argue that Plan 9 demonstrates how far
>> the uniform application of a simplifying abstraction can get you. What
>> I'm interested in, in this context, is this: what are the simplifying
>> abstractions that are natural in Lisp? What Lisp features can collapse
>> the complexity of a modern OS into something as simple as, or simpler
>> than, Plan 9? Closures over streams, perhaps?
> I'm not a Lisp expert but what about objects? Everything in Common
> Lisp is an object, even classes. Could that be a "natural" abstraction
> for a Lisp OS?

I think that's not saying enough. Everything in Common Lisp is an 
object, that's true, but saying so does nothing to make sense of the 
perhaps complicated world of machine resources managed by an operating 
system. Plan 9 achieves a simplification of the way that human 
beings--programmers or users--interact with the machine by choosing a 
particular small set of objects in terms of which to represent a wide 
variety of resources. The abstraction they choose is not necessarily 
the right one for Lisp, but it works in terms of what they were trying 
to do.

Idioms that are natural to Lisp include variables and slots for 
containing things; lists for managing groups of things; (generic) 
functions for doing things. Just as an off-the-top of the head idea for 
discussion, imagine that each user of a Lisp OS gets a namespace with 
functions defined that return collections (lists? tables? databases?) 
of useful resources. For example, suppose that all of these expressions 
make sense to type at a listener (and that they presumably have 
corresponding direct-manipulation equivalents in a presentation system 
of some sort):

(open-documents :newer-than (yesterday))
(users :onlinep t)
(tools :for-documents-of-type :text)
(setf (get-contact "Joe Blow") (get-input-from-user :type :contact))
(invite (get-contact "Joe Blow")
		:session-scope :private
		:session-type :shared-read-write
		:session-lifetime :unlimited
		:include-documents (documents #<some-query>)
		:security #<some-security-protocol-specifier>)

Most of these examples are similar to things we were trying to do in 
the Lisp version of Newton. The exception is the last one, which 
represents some sort of concept of ownership and permissions that can 
be selectively extended from one person to another, to include some 
specified set of machine resources.


More information about the movitz-devel mailing list