[Zope3-dev] Adaptergeddon status and milestone plans

Jim Fulton jim at zope.com
Thu Nov 13 14:36:44 EST 2003


Adaptergeddon

   The "adaptergeddon" project is the largest part of implementing
   http://dev.zope.org/Zope3/ComponentArchitectureSimplification.

   It entains:

   - Support for multi-adapters, which are adapters from multiple
     objects to an interface. A multi-adapter factory takes multiple
     objects and produces a single object implementing an interface.

   - Refactoring presentation components:

     - Combine the Views, Resources, and Skins services into a single
       Presentation service.

     - Reinterpret Views and Resources.  Resources are request
       adapters.  Views are multi-adapters, adapting objects and
       requests together.

     - Views and resources are now adapters from a request
       type. Presentation types are no longer used for resource or view
       lookup.

     - Allow views and resources to be registered to provide
       interfaces, with or without names.

   - Allow registration of adapters (and view, which are also adapters)
     for classes as well as interfaces.

   In addition, I've taken this opportunity to change some aspects of
   the interface implementation and adapter strategies that I wasn't
   happy with.  For performance reasons, I had introduces some rather
   heavy-handed caches. I was worried about whether I would be able to
   maintain these caches in the presense of local adapter and view
   services and persistent interfaces.

   Most of the time spent so far has been on this interface and adapter
   redesign. The strategy was inspired by an idea from PyProtocols,
   which is to keep mappings (ie indexes) of specification (interfaces
   or declarations) and adapter info that allow interface relationships
   and adapters to be computed very quickly.

   I'm very happy with the refactoring so far. I think the architecture
   is much cleaner that it was before and Zope runs much faster.

   Here's what's been done so far:

   - Global adapter and presentation services.

   - Working adapter machinery to support multi-adapters, class-
     declaration-adapters, and local adapters.

   Here's what still needs to be done:

   - Local view and adapter services

   - Add support for mult-adapters and multi-views (views of multiple
     objects) to the component architecture APIs.

   - Extend ZCML directives to support

     o multi-adapters,
     o multi-views,
     o provided interfaces for views and resources,
     o adapters and views of classes

   - Change view registrations and use by bogus view names
     (e.g. _traverse) to use provided interfaces rather than bogus
     names.

   Of these, only local views and adapters need to be done before I
   merge the working branch (adaptergeddon-branch) back to the head.
   The other work can wait until after the merge. I'd be happy to have
   people help me with these tasks, but not until the merge is done.

   There are additional tasks to be done for:
   http://dev.zope.org/Zope3/ComponentArchitectureSimplification.

Next milestone

   My plan for the next milestone was to release it after
   ComponentArchitectureSimplification was done.  I originally thought
   that would be November 1. It is not quite a bit later than that and
   there's still a lot to do.

   I'm considering two possibilities:

   1. Release a milestone shortly after I merge the major adaptergeddon
      changes into the CVS head. I'm guessing that this will be around
      Monday.

   2. Hold off on the milestone until
      ComponentArchitectureSimplification is done. I suspect that that
      will add a week or two.

   My sense is that it's been too long since the last miletone release
   and that we should get the next one out sooner, rather than later.

   I'd still like to do another milestone release in December.  I'm
   going to be in Bangalore India from Dec 2 through the 21st. I was
   hoping to do that milestone before I left, but I think it will be
   more realistic to make the release while I'm there.

   (I also need to try to finish up the new-style extension-class
    project for Zope 2.8 in this timeframe. Sigh.)

   Thoughts?

Questions?

:)

Jim

-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org




More information about the Zope3-dev mailing list