[Grok-dev] Re: the projects in progress
Martijn Faassen
faassen at startifact.com
Mon Feb 25 09:22:12 EST 2008
Hey,
Martin Aspeli wrote:
[snip]
> plone.salt doesn't exist yet, though - Wichert has a prototype under a
> different name, and I think others have played with this too (Whit,
> maybe?). I'm wondering if it makes sense to have the "salt"
> functionality as a part of the z3c.autoinclude package, since they are
> reasonably similar and may benefit from sharing some code.
I think it would fit very well in z3c.autoinclude. I think the
functionality fits well with the purpose of "auto inclusion", and as I
already mentioned, there's a lot of infrastructure that you should be
able to reuse.
[snip]
>> With z3c.autoinclude-like functionality you could make this smaller
>> (note the name change :):
>>
>> [z3c.plugin]
>> target = plone
>
> Does this functionality exist right nor, or are you saying we could
> extend z3c.autoinclude to do this?
Not at all, it's just a proposal. :) What I meant is that I was basing
the ideas on the experience we had designing and writing z3c.autoinclude.
>> This would then dig up meta.zcml and configure.zcml from the current
>> package. The only information necessary in the entry point is a
>> specification of what it actually claims to plug into. You might want
>> to consider making 'target' a dotted package name to actually give it
>> namespacing.
>
> Certainly looks nicer. ;-) I think having separate meta and configure
> tags is probably unnecessary in the majority of cases.
I think that in by far the majority of the cases automatically loading
both would be fine indeed.
I think should someone want control, they should go the original way:
include these things manually in an instance's site.zcml. How to allow
this control?
The only way I see is to have a way to here should be a way to turn
*off* inclusion of a particular plugin. I think the ZCML exclude
directive (which is available in an extension) could be used for this.
This use case bears some thinking about as it's a problem we don't have
for autoinclusion of dependencies. With plugins, the setup.py of the
plugin is stating it wants to be included after all, and just the act of
listing the package will make its ZCML be loaded by default.
> It probably also makes sense to allow an optional syntax where different
> *.zcml files are used as the starting point for different platforms. For
> example, a package that has optional Plone support may have a plone.zcml
> that's the starting point for Plone, a zope.zcml that's the starting
> point for plain-Zope, etc.
Yes, this sounds useful. You might be able to get by with a convention
that is driven by the directive though - i.e. the includePlugins
directive can be instructed to load other things instead of the default
configure.zcml and meta.zcml. This means that the package's setup.py do
not need to list any of these things explicitly. I think that having
such a convention makes for more easy to recognize structures in plugin
than if you let people come up with their own mapping (plone:
plone.zcml) in setup.py.
For Grok we have the (not-yet-implemented) 'tagging' idea that serves a
similar purpose - you mark particular components with tags using a
directive so that they can be explicitly included or excluded.
>> With a bit of cleverness you could then make the include statement
>> shorter too (note my putting this into the 'zope' ZCML namespace and
>> changing the name of the directive...):
>>
>> <includePlugins target="plone" />
>
> Cool. I'm not sure whether it's kosher to use the 'zope' namespace for
> things that are not part of Zope 3, but this would of course be even nicer.
Yes, good point. We've done it with z3c.autoinclude already. "Part of
Zope 3" is becoming a somewhat diffuse concept anyway. :)
>> This sounds like nice functionality and we might cooperate on the
>> implementation of such a package. z3c.autoinclude probably already
>> includes much of what would be needed (including quite hairy test
>> infrastructure), and it might make sense to simply extend that
>> package's functionality with the new directive and entry point
>> functionality.
>
> That makes sense to me too. Are people (who? You? Uli?) happy for us
> (who? me? wiggy? hannosch?) to do that (in a branch)?
Uli hasn't worked on this functionality yet. But I'd be happy to see
this being done on a branch, and I'd be happy to discuss the technical
details and review the changes too - just let me know when you need my
help. I'm sure Ethan and Robert who worked with me on this during the
snow sprint won't object either.
Regards,
Martijn
More information about the Grok-dev
mailing list