[Zope-CMF] Re: Reference Engine Componentization

Philipp von Weitershausen philipp at weitershausen.de
Wed Jan 18 12:27:01 EST 2006


whit wrote:
> sorry for the cross post, but I know there are a number of other
> reference engines out there and I would like to get input as we look
> at moving the AT ref engine being a component.
> 
> here is a rough list of steps:
> 
> 1) move current storage of references to use IAnnotations for new
> content / reference classes. Create a layer of indirection, making
> reference storage a configurable option.
> 
> 2) refactor UID storage to use IAnnotations

I don't think neither references nor UID capabilities have to do with
annotations. In fact, Zope 3 doesn't use annotations for either one:

- UID capabilities: Zope 3 has the intid utility which allows one to
assign any object a unique integer id. This should be adopted for Zope 2
and I think it would be fairly easy to do wrt persistent objects (as the
ZODB is the same)

- Extrinsic references: AT lets us add extrinsic references of one
object to another. A Zope 3 implementation for this kind of references
based on key references (zope.app.keyreference) is available in the ZC
sandbox repository: http://svn.zope.org/Sandbox/zc/extrinsicreference/.
With a bit of cleaning up and some docs I think it could very well
become zope.extrinsicreference for Zope 3.3.


Something that the CMF and Plone *could* start using annotations for is
metadata such as DublinCore. In particular, every time some code is
accessing DublinCore metadata, it should be changed to adapt to
ICMFDublinCore first, even if that adaption might be a null-adaption for
now (meaning, for now CMF content types always provide ICMFDublinCore).
Note that ICMFDublinCore, despite its name, is part of Zope 3.

> 3) implement IReferenceable to replace Referenceable mixin, implement
>    IReference to coexist with Reference class

By "implementing" IReference / IReferenceable you probably don't mean
the interface itself (there isn't much to implement) but the necessary
adapter logic that lets us get rid of the mix-in. I think the default
adapter should use the reference "engine" based on key references.


Thank God we have GenericSetup coming along, otherwise the ZODB upgrade
script would be pretty nasty ;)

Philipp



More information about the Zope-CMF mailing list