[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