[Zope-dev] zope.security changes

Martijn Faassen faassen at startifact.com
Thu Jan 29 04:01:47 EST 2009


Hey,

Dan Korostelev wrote:
[snip]
>>
>> What about the other use case of <class>, i.e. declaring implemented
>> interfaces, as in
>>
>>  <class class=".foreignmodule.SomeClass">
>>    <implements interface=".interfaces.ISomeInterface" />
>>  </class>
> 
> +1. That's kinda strange to have it in zope.security.
> 
> I think, the better place to move zcml directives is zope.component,
> as it already depends on zope.security for the zcml support and the
> "class" directive also has component-related "factory" subdirective
> which declared in zope.component.

It's true <class> isn't purely about security. It's not purely about 
component configuration either, though.

Most of what 'class' is about is security-related, so it's using a lot 
of stuff in zope.security. If you look at the implementation, I think 
people would agree it's doing more security manipulation then it's doing 
component configuration. And I think we can at least agree zope.security 
is at least an improvement in location compared to their scattered 
implementation throughout zope.app.component and zope.app.security.

So, I don't think we'll be moving <class> (and then <module>) into 
zope.component this week during the sprint, and not just because it'd 
distract us from our main goal to reach layered dependencies.

I believe that zope.component relying on zope.security (if indeed [zcml] 
is enabled) is actually something that could be avoided if we moved the 
ZCML directive implementations from zope.component entirely. When you 
install zope.component without ZCML support, you get a reasonable 
dependency list actually installed. When you do use the ZCML dependency 
it starts pulling in a lot more, including quite unreasonable stuff like 
zope.publisher and zope.traversing. See this for more information:

http://plope.com/Members/chrism/pluginizing_an_app

I believe it'd be nicer to extract any ZCML related stuff from 
zope.component at some point and put it into zope.componentzcml or 
something like that. We could then decide to move the <class> and 
<module> directives in there as well.

Regards,

Martijn



More information about the Zope-Dev mailing list