> Lisp machines/environments did this 25+ years ago.
> Everything is an s-expression is even more fun than
> everything is a file!

the advantage that the file metaphor has is that it has a
small fixed number of entities (at one level). all the operations
on those entities have intuitive and well-defined meanings.

this means you can write useful software that operates only
in terms of those operations.

if i'm writing a service, it is *not* usually expressed
most naturally as a set of file operations. if one is
providing an API within a given framework (e.g. C, Java RMI, Lisp, TCP/IP)
then the natural tendency is to map one-for-one
operations on the service to entities in the API.
for instance a Java RMI interface will tend to have one
method for each operation on the service; a TCP/IP interface
will define a protocol where each message corresponds similarly.

by forcing developers to express a service in terms of
a small number of primitive operations, we automatically
gain compatibility with anything else that uses those operations.

of course the danger with doing this is that it becomes
too hard to express important parts of the service's interface;
that there's no easy and obvious way of setting up the mapping.

the beauty with 9p, as i see it, is that the operations provided
by many kinds of service can be mapped quite closely and intuitively into
9p operations. and that those operations themselves naturally provide
multiplexing at several different levels, and are efficiently implementable.

Lisp provides a very expressive framework, but it's too rich.
its very richness is an obstacle to the problem that 9p
solves - the component-level connection of software components.

Reply via email to