[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