[Zope-CMF] dev question on CMFDefault.__init__.py

Tres Seaver tseaver@zope.com
21 Oct 2002 11:29:16 -0400


On Mon, 2002-10-21 at 19:57, hazmat wrote:
> On Monday 21 October 2002 07:22 am, Tres Seaver wrote:
> > On Mon, 2002-10-21 at 09:02, Mark McEahern wrote:
> > > [Florent Guillaume]
> > >
> > > > As one datapoint, the main body of __init__ is called at module
> > > > initialization, which is very early. initialize() is called by Product
> > > > initialization, which is done later by Zope.
> > > >
> > > > But I don't know the precise details of ZClasses initialization (and
> > > > frankly the less I hear about ZClasses, the happier I am).
> > >
> > > Here are a couple of concrete questions I have:
> > >
> > > 1.  On line 110, a module level variable is created to store globals, but
> > > then it's not used:
> > >
> > >     cmfdefault_globals=globals()
> > >
> > >     Why is that assignment even there?
> >
> > So that other modules can import it, and use it to find where on the
> > filesystem the CMFDefault product lives.
> 
> i've always wondered why this doesn't use package_home to leave the actual 
> path, instead of saving a reference to the globals... any particular reason?
> all the things that take globals, take a path prefix as well.
> 
> at this point its probably moot, as its already been sacrificed on the alter 
> of backwards compatiblity.
> 
> <snip>
> 
> >
> > > [hazmat]
> > >
> > > > many things are non obvious when your using talking about zclasses,
> > > > imo. i'd imagine the placement of the initialziation stuff is either
> > > > chance, or because of ordering requirements.
> > >
> > > This seems very fragile, then, insofar as CMFDefault is intended to be a
> > > demonstration of CMF.  I would love to help improve it, but I'm trying to
> > > understand it first.  <wink>
> >
> > Some of the cruft there comes from working around problems with
> > order-of-initialization issues for ZClass-based development.  "Fixing"
> > it is problematic, as the symptoms are tough to reproduce (they can
> > depend, for instance, on the physical order of directory entries in the
> > 'Products' directory!).
> 
> i think by physical order, you really meant lexographical sort order of 
> directory name strings as according to python :-)

Nope, I mean the order that the names come back when iterating over
and opened directory, which varies based in the underlying C libraries;
for instance, I have beaten my head against a problem where a fresh
checkout had different behavior than an old sandbox, because the old
sandbox was created before a particular directory was added to CVS; 
that product was then processed last, rather than in any "natural"
order.

> >
> > There are several ideas kicking around for managing the "site setup"
> > problem:
> >
> >   - In your own product, write a "Portal Generator" and register it as
> >     a ZMI-addable object (this is how Plone's stuff works, I think).
> 
> yup.
> 
> >   - Add ExternalMethods to register new, add-on products (this is how
> >     the CMFCalendar product is added to a site, by default).
> >
> >   - Add a tool which manages the add-on products.  Adrian Hungate has a
> >     proposal for such a beast, and a working implementation:
> >
> >     <http://www.haqa.co.uk/Software/cvs/Products/CMFInstaller>
> 
> cool, this is on the add list for the core in cmf1.4 i believe?

It is in the draft which Alan posted.

> >   - We are working on a tool for a current consulting gig which
> >     synchronizes tool configurations between the filesystem and the
> >     ZODB, using XML files to represent the serialized configurations.
> >     The tool also manages other "setup steps" as callables, and keeps
> >     track of "last run" times, as well as dependencies.  We probably
> >     won't have time to release this tool in the near term, but I think
> >     that (perhaps in conjunction with Adrian's tool) it would go a
> >     long way toward solving the "site configuration management" issue.
> 
> sounds very cool, part of the this is in public cvs
> http://cvs.zope.org/Packages/ZConfig/

Nope;  that would be *another* customer gig. :)  From a distance,
ZConfig seems aimed more at "server" configuration, and less on "site"
configuration (I could be wrong. :)

> 
> whats more interesting (as least to me ;-) is that i wrote something very 
> similiar for a client to solve the same problem (perhaps for different 
> reasons). i'll open source it latter today. i've been holding off because i 
> haven't made the time to document it, but as there is a real need i think for 
> this type of software, i'm just going to release it. i eschewed xml (as it 
> appears zconfig does), and focused generically on assembling functions into 
> structures (graphs, trees, sets) with logging, dependencies, and structure 
> nesting.

Cool.

Tres
-- 
===============================================================
Tres Seaver                                tseaver@zope.com
Zope Corporation      "Zope Dealers"       http://www.zope.com