[Zope-dev] Re: zcml entry points

Tres Seaver tseaver at palladion.com
Sat Oct 20 13:07:21 EDT 2007



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Lennart Regebro wrote:
> On 10/20/07, Martijn Faassen <faassen-oFAYkll9/VISWr57yraSmw at public.gmane.org> wrote:
>> I'd say it is a general concern of a framework to try to avoid how often
>> you need to repeat yourself. Right now you to use a Zope 3 package you
>> need to do the following things:
>>
>> * list the egg in your setup.py dependencies
>>
>> * load the ZCML required
>>
>> * import it in your code
> 
> True. But they do different things.
> 
> 1. Says "download and install a component"
> 2. Says "configure a component"
> 3. Says "use a component"
> 
> Or something like that.
> 
> I must say I kinda prefer the method of including the ZCML from the
> application zcml, where it is used, than having it magically included
> by buildout just because it was downloaded and installed. This mainly
> because if I write a module that requires foo.bar.frotz to have it's
> zcml included, I think it's the job of my module to include it, not a
> separate buildout.
> 
> But I see your point as well, and maybe there could be made a
> difference in the buildout between modules to just be installed and
> modules to be installed and configured?

I'd rather see eggs designed to be used as plugins for a pluggable app
(e.g., Plone / Zope2 Products, maybe Grok add-ons) expose and entry
point in their setup.py, which would then be found and triggered
automagically by the plugin-aware application.

E.g., a stock Zope2 product, bundled as an egg, might expose the
following in its setup() call::

  entry_points={
     'zope2.product': ['Products.myproduct:initialize'[,
  },

Or maybe the product even exposes mroe than one kind of entry point::

  entry_points={
     'zope2.product': ['Products.myproduct:initialize'],
     'plone.quickinstall':
       ['Products.myproduct.Extensions.Install:install'],
  },

A Grok application might say:

  entry_points={
     'grok.module': ['myapp'],
  },

The entry points feature of setuptools was originall added in order to
support this use case (plugins / add-ons for a particular framework).


Tres.
- --
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHGjXJ+gerLs4ltQ4RAjsPAJ9XUPLazljd5m5GmJarLoLURXpAygCgpw31
7pBQ1xtoHbFY0H/EAJ7KJVE=
=ytRr
-----END PGP SIGNATURE-----



More information about the Zope-Dev mailing list