Split Capabilities: Making Capabilities Scale

Karp, Alan alan_karp@hp.com
Tue, 25 Jul 2000 08:42:20 -0700


> -----Original Message-----
> From: Mark S. Miller [mailto:markm@caplet.com]
> Sent: Monday, July 24, 2000 9:07 PM
> To: Karp, Alan
> Cc: 'Jonathan S. Shapiro'; e-lang@eros-os.org
> Subject: RE: Split Capabilities: Making Capabilities Scale
> 
> 
> At 02:58 PM 7/24/00 , Karp, Alan wrote:
> >Ahh, so that's the difference.  I was assuming that, as a 
> holder of the
> >decrement capability, I see an object that can only be 
> decremented.  In this
> >view, any increment is a side effect outside the object 
> model.  You are
> >saying that a holder of any of the foreseen facets is 
> automatically aware of
> >all the other foreseen facets, or at least those with 
> visible effects.
> >Thus, any action appearing in a foreseen facet is within the 
> object model.
> 
> No automatic awareness provided.  Also, in both examples, the 
> only thing 
> the holder of the decrement facet needs to know is that he can send a 
> "do/0" message to the object.  Nothing in this code implies 
> that the holder 
> of such a facet is able to determine that it performs a 
> decrement.  Were 
> this done is a Java-like statically typed language, both 
> increment and 
> decrement facets would be seen as being of type
> 
>      public interface {
>          void do();
>      }
> 
> with no further type information available.  
> 

Seems like an odd programming model where I say "do your thing whatever that
may be".  What would Werner von Braun say during a countdown, do() or
decrement()?  What would he say if he saw the count increase as he tried to
count down?

The conventional view of object is state + behavior.  I can't consider a
facet an object because there are behaviors affecting state that are
invisible to the facet.  I can consider an object to be state plus the union
of the behaviors of all the facets.

> 
> >This point raises an interesting question.  Knowing that an 
> operation is
> >possible makes a certain class of attacks possible.  Hence, 
> we want to
> >institute a policy of least information.  On the other hand, 
> it's not nice
> >to surprise your programmers, so we also want a policy of least
> >astonishment.  These policies are often in conflict, and 
> care is needed in
> >deciding which one to honor.
> 
> Of course, by changing the code, the provider of these facets 
> can provide to 
> the holder more information about what she alleges these facets do.  
> However, these claims are only claims.  KeyKOS wisely called 
> the query to 
> get an object's interface description "allegedType".

Granted they are claims, but the behavior has to obey the rules.  If it
doesn't, I can't use the object with any assurance.  The whole idea of OO is
to hide the implementation behind the interface.  Change the implementation
all you like, but if I think you're decrementing, and you're doing something
else, I've got a broken application.

> 
> 
>          Cheers,
>          --MarkM
> 

_________________________
Alan Karp
Decision Technology Department
Hewlett-Packard Laboratories MS 1U-2
1501 Page Mill Road
Palo Alto, CA 94304
(650) 857-3967, fax (650) 857-6278