Kudos to Chris McDonough, as well!
Chris has been steadily at work this week on finishing his Basket product, which makes it possible to distribute Zope add-ons using Phillip Eby's "eggs".
This product is a short-term implementation of the egg-related features, which will go away once the feature lands in the Zope core.
Quoting from the product's README:
Overview
Basket is a Zope 2 product which allows you to employ the Python Egg format to deploy other Zope 2 products.
Where Do Eggs Go?
You can put Product eggs anywhere on your Zope 2 instance's PYTHONPATH. A "safe" place to put them is
$INSTANCE_HOME/lib/python
which is on the PYTHONPATH of every post-2.6 Zope 2 installation.Definitions
Product -- A Python package that (optionally) includes an initialization function which gets called at Zope startup time. Products may be packaged as eggs using Basket; otherwise they are typically packaged as tarballs which are meant to be unpacked in a Zope 2 "Products" directory.
Egg Product -- a Product packaged up as part of a Product Distribution.
Product Distribution -- A Python "egg" which contains one or more Zope 2 Products.
Chris' work includes substitute / replacement classes for the
"resource files" traditionally used by Zope2 product developers
(ImageFile
=> ImageResource
, DTMLFile
=> DTMlResource
, and
PageTemplateFile
=> PageTemplateResource
), allowing those
resources to be read either from the egg's zip file or from a traditional
directory-based product.
I am close to finishing work to make it possible to load skins from eggs, as well as converting the CMF itself to use the new resource classes.