Re: What is defensive consistency?

zooko <[email protected]>
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
On Nov 2, 2007, at 1:36 AM, David Wagner wrote:

> In the case of a single object that is intended to be defensively
> consistent, I can think of three kinds of defensive consistency:
>
> a) Every method call stands on its own.
...
> b) All method calls to a single instance of the server are assumed to
> come from clients with a common interest.  Thus, if the server is ever
> invoked by a caller that fails to establish the documented  
> preconditions,
> then that server instance is released from all obligations from  
> there on.
> (Of course, other instances of the same class are not released from
> their obligations.)

This is the pattern that we are using in the tahoe project [1].

The contract that a server has with a particular agent is  
encapsulated into an object (hosted on the server), and the server  
gives that agent a reference to the object.  Then the natural scope  
of defensive consistency is that object.

Make sense?  It feels right to me.

> c) The server object might build some special method of  
> authenticating its
> clients.

This gets into the question of "tracking the bases of the reference  
arrows" (i.e., who is the caller), vs. "tracking the pointy ends of  
the reference arrows" (i.e., which object).  I think there are some  
unsolved puzzles in there, but in the main, object-capabilities tend  
toward the extreme of  "all tracking is tracking of pointy ends and  
not bases".  See Horton [2] for an example of how that extreme stance  
approaches the problems fo which other people use the bases of arrows.

Regards,

Zooko

[1] http://allmydata.org
[2] http://www.erights.org/elib/capability/horton/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.