[Zope3-dev] Re: RFC: ZConfig and other formats for ZCML

Martijn Faassen faassen at infrae.com
Tue Jan 24 04:36:09 EST 2006


Andrew Sawyers wrote:
>      1. 
> On Mon, 2006-01-23 at 18:29 +0100, Martijn Faassen wrote:
[snip]

>>And the intended audience of ZCML is a very different audience - 
>>developers versus sysadmins.
> 
> I'd have to say, I belived quite the opposite.  There are specific
> references to Admins being part of the ZCML audience.  See specifically
> http://www.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/Zope3Book/zcml.html which says:  
> 
>      1. While the developer is certainly the one that writes the initial
>         cut of the configuration, this user is not the real target
>         audience. Once the product is written, you would expect a system
>         administrator to interact much more frequently with the
>         configuration, adding and removing functionality or adjust the
>         configuration of the server setup. System administrators are
>         often not developers, so that it would be unfortunate to write
>         the configuration in the programming language, here Python. But
>         an administrator is familiar with configuration scripts, shell
>         code and XML to some extend. Therefore an easy to read syntax
>         that is similar to other configuration files is of advantage.

Let's just say that I don't think ZCML is there yet... While I can 
believe a sysadmin can make changes in ZCML configuration on the 
specific advice of a developer, and in some other specific instances, I 
don't think ZCML in general is very transparant for sysadmins at all, 
and perhaps it shouldn't be. I do believe there's value in even the 
specific, limited instances of non-developers making changes in ZCML 
however, and also believe the situation is better than when you'd have 
to tell a sysadmin to go change some Python code.

> I would argue that the apache config is comparable to Zope 3's ZCML - in
> that, if I wanted to enable/disable some feature typically included with
> Apache, say CGI support - this is done in Apache's config files.
> Granted I understand there are some differences, but it is worthy to
> note that there is some cross-over between Apache's configuration file
> audiences and Zope 3's ZCML files and ZConfig (zope.conf).

I've worked with both ZCML and the Apache configuration language, and 
while I agree there is some overlap, ZCML is generally not about 
enabling/disabling features in my experience. ZCML as it stands is very 
much tied to application design, and a sysadmin can very easily break 
something fundamental by messing with it (imagine changing the name of a 
view, for instance).

In contract, of course a sysadmin can break the Apache configuration 
too, but generally no specific detail of an application is broken in 
that case. *all* URLs to an application may change, but typically not a 
single one.

So, I consider ZCML to be about application configuration, and Apache 
configuration to be about general server configuration. There are 
overlaps and grey areas, but the domains are quite distinct.

> More importantly to me (being one who is pushing Zope 3 in the
> Enterprise and recently supplying a summary of the online ZCML data to
> my fellow developers), what is the 'official' position if the Zope3 book
> on zope.org is wrong or who says it's wrong and why the change in
> positions?  This occurred to me when Stephan recently said something
> similar, but I'd forgotten where I had read otherwise.

I can't give you an official position. Instead, I'll go into some vague 
thoughts from me about ZCML:

After working extensively with ZCML in large applications, and seeing 
ZCML as a special kind of declarative programming logic, I have started 
to wonder about the reusability of ZCML. Zope 3 is good at the reuse of 
smaller grained components than Zope 2, but I noticed that when I *want* 
a larger component (including UI and the rest), a whole lot of ZCML will 
need to come along and quite possibly be adjusted for particular 
applications. Perhaps snippets of ZCML can be made to be more reusable 
somehow...

It *may* be that this eventually leads to a world where it becomes 
easier to turn off specific features of an application through ZCML.

Regards,

Martijn


More information about the Zope3-dev mailing list