[Zope-dev] RFC: Python/Zope Interfaces - More ZCatalog ;-)

Chris Withers chrisw@nipltd.com
Wed, 29 Nov 2000 14:31:59 +0000


Jim Fulton wrote:

> > It is a very good thing to have the specification very near
> > to the implementation -- as a permanent guide to the
> > implementor.
> 
> Firtunately, modern displays allow multiple side-by-side
> windows. ;)

G400, two displays :-)

> > It is even better, when big parts of the
> > specification becomes part of the executable code
> > (as is the case for Eiffel's pre- and post-conditions).

:-((

I'd much prefer smaller lightweight interfaces with as little 'code' in
them as possible...

> > Or, to say it differently, it is more essential
> > the a system's documentation describes faithfully what is
> > rather than what should be (but is not).
> 
> I disagree alot. I'd rather have clear documentation of intended
> behavior, rather than have the documentation change based on
> implementation decisions.

Yeah! ZSearch (thanks Michel, I did know about it but didn't express my
point very well ;-) seems like a good example of this to me. The
_interface_ deosn't seem to exist, just several implementations and no
actual documentation. I wonder if the implementations all have the same
functionality? They would if the interface was a contract...

> Please note that these points were argued extensively on the Python
> types-sig a couple of years ago.

What was the outcome?

Michel wrote:
> > However, until Catalog has a defined _interface_, I'm not even going to
> > think about starting :-S
> > 
> > Anyone know when that's likely to happen?
> 
> A couple of years ago. (hehe - sorry, had to). 

Well, sorry to correct you, but there isn't an _interface_, or at least
one that's published. 

> The Z Search Interface
> is well defined (not well documented)

ie: there isn't an interface, there's just similar (I bet they're not
identical) implementations in ZSearch, Catalog, ZSQL and ZNetwork
(whatever that is ;-)

> The 'Z Search Inteface' object is one tool in particular
> that uses it, perhaps you can in imply the interface from that since it
> is not documented.

As I said earlier, I totally agree with Jim that a weak interface like
this isn't a lot of use. What happens next time someone tweaks the
catalog and changes the functionality? Does that mean the interface has
changed? How can all the seperate implementations keep up?
I actually tried to make Squishdot implement the Z Search Interface when
I moved to using the catalog, but it appeared at the time that ZCatalog
didn't actually work properly with Z Search anyway. All of which kindof
illustrates my point :-S

The main thing for me is that the implementation is documented
somewhere, which it isn't. Of course, it'd be much better if it was a
proper interface as is being discussed here. Mindyou, it'd also be great
if python had native interface support. What does Guido think about
that?

cheers,

Chris :-)