[Zope-dev] implementing zope.component 4.0

Lennart Regebro regebro at gmail.com
Wed Dec 2 10:15:55 EST 2009


Unifying adapters and utilities gets us nowhere.

If we remove the distinction between an adapter and a utility we are
simply left with the concept of "component". Then we have components,
nothing else. Components are objects registered base on what interface
they implement, and can be looked up based on that interface.

But then in the registration we have two types of components. Those
who simply implement an interface, nothing more. Then we have those
who implement and interface and also adapts one or more interfaces to
the implemented interface.

Well... then we have adapters again! So the unification quickly
exploded. Conceptually we have components that adapt, and therefore
clearly are adapters, and we have components that do not adapt, and
therefore are not adapters. Currently we call those components
utilities.

When there is such a clear and distinct conceptual difference between
adapters and utilities, why would we try to murk that distinction by
pretending that non adapters are a special case of adapters, when it's
obvious that that's exactly what they are not. "Null-adaptation" is a
contradiction in terms. It requires adapters that does not adapt. It
can only lead to complete confusion.

The ZCA is hard enough as it is to understand. This discussion was
about making it easier. If we want that, we can not unify adapters and
utilities in the public API.

-- 
Lennart Regebro: Python, Zope, Plone, Grok
http://regebro.wordpress.com/
+33 661 58 14 64


More information about the Zope-Dev mailing list