Martin Aspeli <[EMAIL PROTECTED]> writes: > Fred Drake wrote: >> 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. > > Glad we all agree. > >>> 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. > > 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 > directory. Now, they declare it twice in a file (presuming there's a > cheese shop release). That's a (small) step backwards > (duplication). Declaring it once would be a step forwards (no manual > download) > >>> 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. > > Maybe. I agree there should be an option not to do this, and many eggs > may choose *not* to use an entry point. For things like Plone add-on > products, though, it makes much more sense to have it be automatic. To > generalise further - if what you're installing is a high level, > cohesive product, with a UI and an install method and all the rest of > it, having installation be as simple as possible is a big win. For the > components further down the stack (e.g. the things that these high > level products are depending on!), having the processing be explicit > (via <include /> directives) makes more sense. > >>> 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. > > Maybe it's off by default, then, but I *know* this would make the > add-on products story in Plone easier: I've seen people struggle with > slugs, editing site.zcml is far tto scary, and you don't always have a > package that you own to include other things from. > > I suspect entry points would make life simpler for other systems that > used a similar mechanism for plug-ins/add-ons. However, I agree that > they're not appropriate for more fundamental libraries.
I'm new to eggs, but maybe both sides could be satisfied with an approach like extra_requires? 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? If not, maybe it's a worthwhile extension. I guess the abstracted idea would be some way to pass configuration directives to eggs as a part of requiring them. Ross _______________________________________________ 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 )