[Zope3-dev] what is ZCML?

Jim Fulton jim at zope.com
Tue Mar 14 10:36:12 EST 2006


Jean-Marc Orliaguet wrote:
> Jim Fulton wrote:
> 
>> Jean-Marc Orliaguet wrote:
>>
>>> Jim Fulton wrote:
>>>
>>>>
>>>> Yup.
>>>>
>>>> BTW, a general thing to keep in mind:
>>>>
>>>> - Indirection and abstraction are inherently bad because they
>>>>   hide things. :)
>>>>   (This is a corolary of "explicit is better than implicit".)
>>>>
>>>> - But indirection and abstraction can provide benefits that outweight
>>>>   their inherent bad-ness.
>>>>
>>>> Whenever we consider ptoviding a high-level/automated facility, we have
>>>> to weigh the benefit against the inherient badness.
>>>> [...]
>>>>
>>>> Jim
>>>>
>>>
>>> yes, except that ZCML adds strictly no abstraction compared to what 
>>> would have been written in python.  It only "paraphrases" python by
>>> hiding lines of code.
>>
>>
>>
>> I was refering to high-level ZCML, such browser:page, browser:menu, etc
>> vs low-level directives like adapter.
>>
>> Jim
>>
> 
> I would say that they paraphrase more lines of code than the low-level 
> ones, but they fundamentally add no extremely valuable abstraction since 
> a page is an alias for a multiadapter, a menu registers utilities, 
> interfaces, ..

Wrong.  the page directive defines a class and combines multiple
configurations.  This is definately a higher level of abstraction.



 > . Anyway these are the ones that should be moved out of
> ZCML I guess since they are so site or application specific that it is 
> difficult to be reuse them as components in other setups.

Well, no.  They are not application specific.  Rather, we feel,
after getting experience with them, that the benefits they provide
don't justify the hiding they do of what's really going on.
The same could have been true if they were written in Python.

In fact, we have a similar problem with some of our Python menu
APIs, which automate too much and actually obscure what is really
a simple pattern.

Jim

-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org


More information about the Zope3-dev mailing list