[Zope3-dev] Re: a plan for widgets?

Alec Mitchell apm13 at columbia.edu
Mon Mar 20 18:28:05 EST 2006


On Monday 20 March 2006 13:29, Roger Ineichen wrote:
> Hi Stephan,
>
> > On Monday 20 March 2006 13:50, Tres Seaver wrote:
> >> So *don't use ZCML*;  use Python:  there is literally nothing which can
> >> be done in ZCML which cannot be done in Python.  I wish that folks who
> >> don't like / need ZCML would quit trying to dictate how the rest of us
> >> use ZCML.
> >
> > I agree with this sentiment. I really hate where ZCML is going. I tend
> > to like ZCML as an overview for the functionality of a package, so the
> > already simplified versions of the adapter and utility directive make
> > ZCML much less useful to me. And Philipp's quest to effectively removing
> > all nested directives disturbs me even more. I like the nesting; it
> > groups common things together and saves some typing. I also tend to like
> > writing new ZCML directives; it's easy.
>
> It's time to me for writing a statement about this before I start going
> a own way.
>
> After 3 years of daily development with Zope3, I'm sure the hardest part
> in Zope3 is to get a big picture from a application. A simplfication in
> ZCML and loose the informative character is really contra productive for
> this.
>
> This means to me that it becomes harder to read and understand the
> application at all. Of corse each single component and it's
> reagistration will be simpler with the new simplification, but that's
> not truh for the concept at all if this will end in 10 interface, 5
> adapter and 3 utility registrations!
>
> After reflect the simplification in some of our applications the ZCML
> looks like a big group of pinguin. Each of them look exactly the same,
> no visual sugar in it ;-)
>
> I don't like to go in the following direction with ZCML:
>
> <interface
>    interface="open.this.package.for.more.IInformation"
>    type="perhaps.I.m.a.skin.or.something.IElse"
>    />
>
> and
>
> <adapter
>    factory="nobody.knows.what.this.means.in.less.then.two.second"
>    />
>
> or
>
> <utility
>    factory="i.m.the.magic.Pure"
>    />
>
> For me it's defently easier to understand and get the big picture of a
> application if we have ZCML directives like:
>
> <mail:smtpMailer
>    name="192.168.0.1-smtp"
>    hostname="192.168.0.1"
>    port="25"
>    />
>
> then
>
> <utility
>    factory="for.configuration.info.see.in.Mailer"
>    />
>
> The situation right now is so ugly for me that I think we should add
> back the higher level ZCML directives again. Probably we should do that
> in a new "higher level" namespae so everyone could decide which concept
> he likes to use.
>
> Is somebody interested to work on a higher level ZCML directive
> namespace and help to support them?
>
> My Fazit is;
>
> It's important to have informative sugger in a configuration language
> like ZCML. Otherwise it get reduced to somewhat useless that I will hate
> to write but have to. The next step will probably be to move the
> configuration to pyhton at all. And then we really lose the component
> aspect and get back hardcoded concepts where everybody has to copy/past
> and customize. That's not the way I will go in the future!
>
> What do you think? Are I'm wrong?

Count me in on the "it's really nice when ZCML can provide a high-level 
overview of a package's structure" train.  It seems to me that "verbose" 
ZCML declarations are an incredibly compact way of providing this sort of 
valuable information.

Of course I'm not too fond of some overly-magical directives either, and I'd 
love to have a top-level <implements /> (perhaps in addition to the class 
level one, it's not as if there aren't other duplicate directives of this 
sort).

Alec Mitchell


More information about the Zope3-dev mailing list