Identity et al (was Re: [E-Lang] Authority -- what is its dual?)

Mark S. Miller markm@caplet.com
Mon, 22 Oct 2001 09:51:16 -0700


At 08:41 AM 10/22/2001 Monday, Jonathan A Rees wrote:
>In the meantime, please try to answer my question of which AYCDISAM
>language / framework to use as a basis of discussion - one that is
>simple, formal, and can be used a launching pad for explorations of
>the important issues - i.e. needn't be replaced when new issues need
>to be addressed.
>[...] Let's pick a particular semantics (satisfying
>AYCDISAM) for the concurrent case so that we're not talking past one
>another.  I was going to propose an operational semantics of CBV
>lambda-calculus plus asynchronous message passing and state (maybe the
>actors "become" primitive), but hadn't worked out the details.  Act I?
>FCP?  Toontalk?  Pi-calculus?

Dean may find it awkward to do so, so I suggest Kernel-Joule with Energetic 
Secrets.  Joule has done a better job than any of these other that I've 
grokked at arriving at principled answers to the questions we're currently 
wrestling with.

About the above qualifier, the systems above that I've grokked:

lambda calculus itself
Act-1
FCP
Toontalk

I don't know what CBV is.

I don't grok the Pi calculus, and it's not based on message passing anyway, 
but on rendezvous.  Rendezvous is probably necessary to deal with resource 
use explicitly, although the Pi calculus does not.  Which brings us to:

The *only* general purpose systems I know that deal with resources in a 
principled way http://www.agorics.com/Library/agoricpapers/aos/aos.4.html 
are KeyKOS and EROS.  (In these, "message passing" is indeed rendezvous.)  
EROS's may be more principled (KeyKOS can't really allocate specific cpu 
time, although there's a story), but KeyKOS is the only one whose semantics 
of resource allocation I believe I fully understand. But if there's a reason 
to switch to EROS, I can handle it.

The way Joule and E have always planned to bring in principled handling of 
resources (budgets, throttling, eviction, extensible exhaustion policies 
(keepers), etc) is to imagine running a Joule Tank / E Vat inside a KeyKOS / 
EROS Domain.  Resource use within a Tank/Vat/Domain is a commons, and 
therefore entities within can freely deny service to other cohabitants by 
exhausting resources.  But such a unit as a whole only consumes explicitly 
allocated resources, where the right to allocate and use follows strict 
capability discipline.  Therefore, *within* this formal system, these
entities cannot successfully mount resource exhaustion attacks on each 
other.  (Ping attacks and such have to be solved elsewhere, like DSR 
http://www.agorics.com/Library/dsr.html, but let's leave that for another day.)

In any case, let's see how far we can get talking just about Kernel Joule with 
Energetic Secrets before we need to imagine Joule embedded in KeyKOS / EROS.


Just to reiterate how all this is relevant to E: In my head, E is a 
compromised form of Joule, and I understand E's semantics by derivation from 
my understanding of Joule's.  The issues raised here are as important for E 
as for Joule, but can only be understood well by understanding them first in 
a simpler system -- such as Joule.


        Cheers,
        --MarkM