[Zope-dev] Dependencies for ZCML
Martijn Faassen
faassen at startifact.com
Mon Mar 16 09:30:15 EDT 2009
Hey,
Tres Seaver wrote:
[snip]
>> Doesn't that in some cases make tests harder to understand, as
>> lower-level APIs are in use that are not as recognizable as the
>> equivalent ZCML directives? (say, registering an event) Don't we place a
>> burden on the test writers to learn these APIs while they could use the
>> ones abstracted away behind ZCML instead?
>
> No. Relying on "real" ZCML in testing, as is using the "real"
> components is an anti-pattern: it makes tests fragile, couples the
> packages tightly, etc.
Huh? You can't be serious saying there is not extra burden on the test
developers if you require them to learn about the implementation of
various ZCML directives in order to write a test. The burden is in
learning how a view is registered, or how a subscriber is registered, in
order to write a test. You need them to break through the abstraction
that ZCML provides in order to write a test. It will also make it harder
to read the tests as the reader will need to share this understanding as
well.
You can't just go and say it's an anti-pattern without giving an
alternative, otherwise people will continue to use the higher-level of
abstraction for registration (i.e. ZCML).
[snip]
> I don't think "library" packages have ZCML in them at all, except as
> examples, because trying to reusing ZCML doesn't actually win
> unambiguosly over copying it.
Here's my position on this:
You take a hard-line purist opinion. We may want to take an attitude
like this for the Zope Framework libraries, eventually. We cannot just
do this by throwing out all ZCML from our packages.
Why not? Because the Zope community is in the business of providing an
integrated experience too (Zope 2, Zope 3 and Grok), like it or not.
(hold on, I know you don't care about this. I'm getting to this)
This means that we, as a community on zope-dev care about configuration
(no matter where it is maintained). Since we do, we should maintain and
test it. Since we're a community and care about compatibility it's good
to share the burden of maintaining and distributing this configuration,
instead of just ignoring this and deferring it to the individual projects.
Today, the "shared configuration" project is scattered over the
individual packages in individual zcml files that refer to each other.
If we want this project elsewhere, we need to take realistic, active
evolutionary steps to get there, package by package. We can't just drop
the ball on this, as we have projects depending on this information.
I know you don't care one bit about such projects yourself. You just
care about the libraries.
Fine, but you'll have to acknowledge that other people *do* care about
this project. They have frameworks and applications to maintain that
need the configuration scattered through the Zope Framework code base
right now.
I've heard your purist opinions in this area before. It's not very
helpful in the way presented. If you want us to buy into your opinions
you'll have to make them more attractive to us, and you know about our
concerns as a community.
Regards,
Martijn
More information about the Zope-Dev
mailing list