Split Capabilities: Making Capabilities Scale

Karp, Alan alan_karp@hp.com
Wed, 26 Jul 2000 11:25:36 -0700


> -----Original Message-----
> From: Norman Hardy [mailto:norm@netcom.com]
> Sent: Tuesday, July 25, 2000 9:05 PM
> To: Karp, Alan; 'Dan Bornstein'
> Cc: e-lang@eros-os.org
> Subject: RE: Split Capabilities: Making Capabilities Scale
> 
> 
> At 16:22 -0700 00/07/25, Karp, Alan wrote:
> >As I said in my first reply to Mark, if I know the full 
> interface, I don't
> >have a problem.  What you describe is exactly this 
> situation.  The "object"
> >is the state plus the behavior represented by the union of 
> all the facets,
> >not just the facet I hold.  Mark stated quite explicitly 
> that "no automatic
> >awareness is provided".  It is this lack of awareness that 
> prevents my
> >thinking of the facet as an object.  If von Braun is unaware 
> of a facet
> >allowing increment, and he treats the facet as an object, he 
> must assume
> >that any increase in the counter is due to a fault in the 
> counter mechanism.
> >
> 
> An interesting point. Someone must presumably know the total 
> behavior of
> the object inorder to employ it. Not all of the holders of 
> facets need do
> so, however.

If they don't, then I argue that they can't reason about the object.
 
> The increment facet of the updown counter may be delivered to the car
> counting agent at the garage entrance while the decrement 
> counter facet is
> delivered to the counter at the exit. The read counter facet 
> is delivered
> to the agent that drives the capacity advisory sign. Whoever 
> created the
> counter instance probably had to be designed with the total 
> function in
> mind. He is out of the loop soon after creation of the counter.
> 
> The minor facets are held by programs that are very specialized. It is
> useful to know who to suspect if the counter gets too large.

That's my point.  I need to know the full interface to know who to suspect.

Hmmm.  That's gotten me thinking (always a dangerous thing).  If I know the
full interface, I can reason about the object even if I only have a facet.
However, I may not need that much information.  All I really need is
knowledge of the possible state transitions.  Thus, Werner von Braun doesn't
need to know that there is an increment method, only that the counter can
increase.  I can then reason about an object with much less information.   I
expect that it is possible to construct a formal definition of object along
these lines.

> 
> I wont fight over the word "object" but I think you have an 
> interesting
> distinction. It is clear that someone must know the whose 
> semantics of the
> counter, probably the designer of the program that creates 
> the instance;
> but the facets are then diseminated on a need-to-invoke bases.
> 
> I wrote a little note at
> <http://www.mediacity.com/~norm/CapTheory/ObExp.html> this 
> afternoon on a
> closely related subject.

I like the definition of object at that URL, but I don't see the problems
with Y and Z.  If I send a message to X, and X uses some complex processing
to satisfy my request, including invoking Z which may affect the state of X,
who cares?  Similarly, if Y can invoke a method that changes the state of X,
who cares?

I think the problem is that you're assuming that I know the state of X
before I send the message.  Unless I'm the only one who can change that
state, or if I can lock out changes, there's no way for me to have that
knowledge.  If you assume that the initial state of X is unknown to me
before I send the message, then I think your three rules hold.

> Norman Hardy  <http://www.mediacity.com/~norm>
> 

_________________________
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