Andrew Sawyers wrote:
On Mon, 2006-01-23 at 18:29 +0100, Martijn Faassen wrote:
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
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
It *may* be that this eventually leads to a world where it becomes
easier to turn off specific features of an application through ZCML.
Zope3-dev mailing list