Split Capabilities: Making Capabilities Scale
Karp, Alan
alan_karp@hp.com
Wed, 26 Jul 2000 13:51:04 -0700
> -----Original Message-----
> From: Mark S. Miller [mailto:markm@caplet.com]
> Sent: Wednesday, July 26, 2000 1:13 AM
> To: Norman Hardy
> Cc: Karp, Alan; 'Dan Bornstein'; e-lang@eros-os.org
> Subject: RE: Split Capabilities: Making Capabilities Scale
>
>
> At 09:05 PM 7/25/00 , Norman Hardy wrote:
> >The increment facet of the updown counter may be delivered to the car
> >counting agent at the garage entrance ...
>
> I love this example. However, Alan's objection that
> "increment" is a more
> informative message name than "do" still applies so far.
> First, I'd like to
> make clear that my example was not intended as an example of good
> programming style, but a demonstration of a case that can
> occur in any of
> the capability systems under discussion. Programmers cannot
> be forced to
> give their programs meaningful message names.
The message name "increment" is no more meaningful than the message name
"do" to someone who does not speak the language. I used the term
"decrement" as something that Werner von Braun could interpret as reducing
the state variable by 1. The actual name is irrelevant. I could just as
easily have said "do", but then I would have had to explain the resulting
state transition.
My point was that I can reason about the object only if I know how its state
is allowed to change. Herr von Braun believes that a counter initialized to
10 will reach 0 before he decrements it 11 times. (It may be less than 10
times because someone else may also be decrementing the counter.) If the
counter does not reach 0 before the 11th decrement, von Braun will be
puzzled unless he knows that there are operations that can increase the
value of the counter.
This gets back to a comment in my earlier note. An object is state plus
behavior, but behavior is not the same as interface. I believe that
interface is simply one way to describe behavior. Hence, I can reason about
a facet as an object if I know the object's behavior. I don't need to know
its interface.
>
> If the consider the two ActionListeners above as two facets of one
> composite, then it's clear that they map the same
> message-name/order-code to
> two different behaviors. In KeyKOS, EROS, Joule, and E,
> these facets can be
> forseen (I don't know about Droplets or the E-speaks). In
> KeyKOS and EROS
> they can be two capabilities (using two different data-bytes)
> on the same
> domain.
E-speak uses dispatch tables to map method invocations. However, any client
can request any method. Whether or not the request gets satisfied depends
on the capabilities presented. In e-speak DR 3.0, these capabilities are
certificates listing the allowed methods and map quite naturally to facets.
In e-speak Beta 2.2, the capabilities are resources that the engine uses to
extract strings that the object interprets as permissions. The effect is
the same as facets, but I doubt that anyone would come up with that term
from the description of how things are done.
>
> (snip)
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