Re: [Zope-dev] Re: zcml entry points

2007-10-22 Thread Martijn Faassen
Hey,

On 10/20/07, Dieter Maurer [EMAIL PROTECTED] wrote:
[snip]
 Zope 2 had (for products) all three things together.

 It was felt that this was a too tight coupling. Therefore, for Zope 3
 the paradigma explicit is better than implicit (a paradigma, that I
 personally dislike and find wrong) was used.

 Now, you want again more things to happen implicitly.
 In my view, this is natural -- but not in the Zope 3 spirit...

Sure, but while I fully acknowledge problems with the Zope 2 approach,
in my view we've gone a bit overboard at times with the Zope 3 spirit.
:)

There is value in thinking about compact expression. The great benefit
with Zope 3 is that we frequently actually *know* the aspects of what
we want to express compactly, as we tend to be expressing these
aspects separately.

I hope we can foster a spirit where after we have factored out the
independent aspects we can look at them again and make their
expression more compact, at least for whatever we determine is a
common case.

Regards,

Martijn
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Re: zcml entry points

2007-10-20 Thread Dieter Maurer
Martijn Faassen wrote at 2007-10-20 03:15 +0200:
 ...
I'd say it is a general concern of a framework to try to avoid how often 
you need to repeat yourself. Right now you to use a Zope 3 package you 
need to do the following things:

* list the egg in your setup.py dependencies

* load the ZCML required

* import it in your code

Investigating ways to reduce this sounds like a win from a framework 
perspective. Getting rid of the separate ZCML step would help as it'd 
make it more similar to just reusing an arbitrary Python package, making 
Zope less special in some ways.

Zope 2 had (for products) all three things together.

It was felt that this was a too tight coupling. Therefore, for Zope 3 
the paradigma explicit is better than implicit (a paradigma, that I
personally dislike and find wrong) was used.

Now, you want again more things to happen implicitly.
In my view, this is natural -- but not in the Zope 3 spirit...



-- 
Dieter
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Re: zcml entry points

2007-10-19 Thread Stephan Richter
On Friday 19 October 2007 21:17, Martijn Faassen wrote:
 Tres Seaver wrote:
  I may not *want* the other package's ZCML to be loaded:  some of its
  policies may not be appropriate for my application.  

+1. Happens to me all the time.

 Since this appears to be a rare case that is the exception, what about
 using the new ZCML exclude framework for this case? You need to know
 what you are doing, but this use case is for people who know exactly
 what they're doing anyway, right?

-1.

Regards,
Stephan
-- 
Stephan Richter
CBU Physics  Chemistry (B.S.) / Tufts Physics (Ph.D. student)
Web2k - Web Software Design, Development and Training
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Re: zcml entry points

2007-10-18 Thread Wichert Akkerman
Martin Aspeli wrote:
 Fred Drake wrote:
   
 On 10/17/07, Wichert Akkerman [EMAIL PROTECTED] wrote:
 
 A common issue we are seeing is that we have eggs depending on each
 other, but they still need to load the zcml from those dependencies
 somehow. As a temporary solution to play with the concept I added
 something simple to the plone.recipe.zope2instance buildout recipe.
   
 What's the problem you're seeing?  I'm not sure what you're trying
 to
 solve.  ZCML includes work just fine in the egg world.

 As long as you're referring to packaged ZCML using
 package=package.name in your include and includeOverrides
 directives, all is good.
 

 The main win, IMHO, is to avoid the requirement for people to install 
 slugs for third party products. Slugs suck - they are confusing to 
 explain and people forget them all the time. Buildout makes it a bit 
 easier, but it's still not a terribly good solution.

 For example, say you want to install oi.plum. You need to add the
 line 
 'oi.plum' twice - once under 'eggs' and once under 'zcml' in your 
 buildout.cfg. Forget the latter, and the package doesn't work
 properly 
 (or at all).
   

I see a different win. At the moment we are declaring dependencies in
two places: in the egg information and in the zcml files. For every
package I need I need to make sure its zcml is loaded, which means I
need to have a meta.zcml, configure.zcml and overrides.zcml which load
the meta, configure and overrides from all packages I depend on. I also
need to inspect every package I depend on to check if they have a meta,
configure or overrides.zcml, which in my humble opinion should be just
an implementation detail that I, as someone who is just using the zope
stack/framework, should not need to know about. Multiply that with the
number of dependencies you see in zope.* and you see this becomes very
unwieldy.

So I turned things around: if I state in my egg information that I
require another package that means I need to have that package
available and functional. Which suggests that its zcml has to be loaded
before mine. And that is exactly what I am doing: adding an entry point
that allows a package to say in order to function I need to have these
zcml files loaded.

Wichert.

-- 
Wichert Akkerman [EMAIL PROTECTED]   It is simple to make things.
http://www.wiggy.net/  It is hard to make things simple.
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Re: zcml entry points

2007-10-18 Thread Jim Fulton


On Oct 17, 2007, at 8:04 PM, Ross Patterson wrote:
...

I'm new to eggs, but maybe both sides could be satisfied with an
approach like extra_requires?


Extras are evil.  See other posts of mine for explanations of why.


You could list oi.plum [zope.zcml] when
you require oi.plum *and* its ZCML and then it's ZCML would get  
loaded.

Is this easily possible with eggs and/or buildout?


easy_install has nothing to do with loading ZCML.  A recipe could do  
something, but extra-requires don't help in any useful way.


Jim

--
Jim Fulton
Zope Corporation


___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-announce

http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Re: zcml entry points

2007-10-18 Thread Chris McDonough

On Oct 18, 2007, at 8:17 AM, Tres Seaver wrote:

I may not *want* the other package's ZCML to be loaded:  some of its
policies may not be appropriate for my application.  I think that the
library vs. pluggable application distinction is valid here:   
maybe
you want to define an entry point in the egg which a given  
pluggable app

would use at startup time to configure all the plugins which exposed
that entry point.


This probably an indication that there are two (I know, that horrible  
number) types of packages:


 - packages which provide zcml sugar in the form of new directive  
definitions


 - packages which perform component registrations

It seems that packages which do only the former could be classified  
as a true library while the latter is more application-y.  It seems  
like in a perfect world, libraries should not need any  
configure.zcml, just a meta.zcml which contains little except meta  
directives.


Personally I think it would be more useful to remove policy-laden  
registrations from existing packages so they're more libraryish and  
move these registrations into site.zcml (or an entry point moral  
equivalent) than it would be to attempt to annoint the status quo as  
the right thing by implementing dependency graph traversal.


- C

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-announce

http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Re: zcml entry points

2007-10-17 Thread Fred Drake
On 10/17/07, Martin Aspeli [EMAIL PROTECTED] wrote:
 The main win, IMHO, is to avoid the requirement for people to install
 slugs for third party products. Slugs suck - they are confusing to
 explain and people forget them all the time. Buildout makes it a bit
 easier, but it's still not a terribly good solution.

Slugs are evil; agreed.  We never use them.  They were an accident of
the instance tree inherited from older versions of Zope, and how
that tree was re-interpreted for Zope 3.  They never worked well, and
did no one any favors.

 For example, say you want to install oi.plum. You need to add the line
 'oi.plum' twice - once under 'eggs' and once under 'zcml' in your
 buildout.cfg. Forget the latter, and the package doesn't work properly
 (or at all).

I actually really like this; I don't get the configuration for a
package unless I ask for it.  It's not unusual to want only the code
and not the default configuration for a package.

 If we had entry points, we could just load the egg. Internally, oi.plum
 may use include / as much as necessary to load *its* dependencies, but
 that's not something the user of the package needs to worry about.

Requiring a package doesn't say anything about how it's going to be
used; making an assumption about that is really bad.

 If Zope loaded entry-point ZCML automatically (maybe with an on/off
 switch in zope.conf for those who need more fine grained control) that'd
 be a pretty nice solution.

I suspect I'd always want it off.  Picking up configuration
willy-nilly is too dangerous.


  -Fred

-- 
Fred L. Drake, Jr.fdrake at gmail.com
Chaos is the score upon which reality is written. --Henry Miller
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Re: zcml entry points

2007-10-17 Thread Fred Drake
On 10/17/07, Martin Aspeli [EMAIL PROTECTED] wrote:
 Right - but you're building an application, and you're pretty
 experienced with Zope. A lot of Plone users just want to install a
 plug-in (a product), basically. Before, they just dropped it into a

It sounds like your concerns center around users of a
pluggable/extensible application (like Plone), rather than being
general Zope concerns.  It's certainly reasonable for an application
to want a plugin architecture that works that way.

Perhaps the development teams for the applications would be interested
in getting together and sharing a package that supports a plugin
architecture that works that way.  That would be a good place to share
effort without negatively impacting users who need bare-metal Zope or
the developers of applications that don't have similar
plugin-management requirements.


  -Fred

-- 
Fred L. Drake, Jr.fdrake at gmail.com
Chaos is the score upon which reality is written. --Henry Miller
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )