[Zope3-dev] Pluggins vs Application Definition

Jim Fulton jim at zope.com
Sat Feb 11 16:50:43 EST 2006

Some recent discussions on the distutils-sig mailing list have
helped me to understand some issues related to the ways we
extend the Zope application server.  Traditionally, in Zope 2,
you extended Zope by "dropping" product packages into a special
"Products" package.  This was very convenient in many ways, but
doesn't always provide enough control or visibiity to what's
going on.

In Zope 3, we went with a more explicit installation mechanism,
in which people had to explicitly cause a package's ZCML files to be
loaded for it to be used.  We added a mechanism to make this easier,
by simply dropping a file into a special directory, package-includes,
so an installer wouldn't have to fool with pointy brackets.

I've noticed that at Zope Corporation, for our customer projects,
we tend not to use package-includes. We prefer to explicitly include
packages we use directly oin our application ZCML files.  (As
applications,  may be composed of several layers, we may include
things at multiple levels.)

In thinking about this, I realized that there are two different users
here with different concerns:

- Application developers need to build an application.  They will
   generally want fairly tight control over what goes into the
   application.  For them, it's valuable to say in an explicit
   way what they want.

- If the application is extensible, then application users
   will want to be able to extend the application by adding
   "pluggins".  If application users are not technically
   sophisticated, or, more importantly, not technically interested,
   they peobably would prefer to just drop something into a special
   directory and be done with it.

In summary, I think we need *both* approaches, as they serve different


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