[Zope-Annce] Initial Release of Product Manager
Andrew Kenneth Milton
Fri, 23 Nov 2001 18:21:24 +1000
This is my first cut at building a Product Manager for Zope.
It is by no means complete, but, it is functional, it will definitely
ONLY USE WITH A SCRATCH ZOPE INSTALL OR FROM AN INSTALL YOU'RE
HAPPY TO RESTORE FROM BACKUP TAPES.
YOU HAVE BEEN WARNED
This is obviously very very very very very very pre-release.
There are two modes of operation, only one of which is currently implemented.
This is where the package meta-data is inserted into an archive with the
package. The package can then be directly imported by the Product Manager.
This is where a list of download sites for the data is supplied, and
the Product Manager fetches the archive and unpacks it itself. This is
the only mode currently supported.
o Generating the metadata for the available products.
It's possible to do this one product at a time, but, there's nowhere
currently that generates the meta-data necessary. There's a demo xml
in the root directory you can import.
o There's no external dependency handling, I need to add that in, but, I'm
not sure of the best way to go about that. I can simply list the external
dependecies to the user, and make sure they know they have to install those
o It needs a 'post-install' script function to hook into distutils in case
things need to be built.
o It asks for database dependencies, but, doesn't check for installed DAs
to prompt you to install one if you don't have a relevant one installed.
It also asks for platform, cpu dependencies, but, doesn't check those
o Zope should also be a dependency, and it should eliminate those products
that don't work with this version of Zope. Python should also be a
dependency as well I suppose.
o It only really handles installing 'Products', it needs to be extended to
deal with .zexp files, and Extensions. I'll probably need to gather some
more meta-data to fix this up. Hotfixes need to be handled too.
It does do somethings though;
o It handles specified dependencies, and all version of a product are stored,
so you can specify an older dependency if something doesn't work with the
latest and greatest version.
o It handles listing multiple download sites for fetching the archives.
o It handles .tgz, .tar, and .zip, I'm not sure if it'll work for windows
or macs, I hope it does.
o You can install or upgrade a product without restarting (although the
mechanism by which it does this, is somewhat err dodgey, so be warned).
In my tests it's worked fine for me, without any adverse effects.
o You can import one product, or the whole tree (or a subset) including
the fixed meta-data types.
o You can export your whole tree, or a sub-set.
o Importing/Exporting is done using xml_pickle, so objects are
fairly simple to build by hand (if you really have to), or to create
from a script.
o You can ZODB or (Postgres) RDBMS backed.
ZODB is quick, but, isn't as flexible in its implementation.
SQL is slow, but, is more flexible in its implementation, which will
allow better searching (when that gets done).
o You can browse and install products by catgory.
o You can see what products are installed, and what the Control Panel
sees as installed.
o General clean-up -- the code is somewhat weird so that the same set of
dtml files can be used by both ZODB and SQL interfaces.
o ZODB mode re-written in a cleaner more flexible fashion
o SQL mode re-written in a faster fashion
o Product Search option.
o Partial DB syncing (give me everything new or changed since yyyy-mm-dd)
o Uninstalling. we can store the manifest when a product is installed.
o Post Install scripts to allow setup or building of extensions
o Partial Exports.
o Bulk Install.
o Concrete Package Creation, where the metadata is stored with the
package, so you can simply upload the file into Zope and have it
o Hotfix, Extension, .zexp handing
o Upgrading Zope source installs.
o Proper dependency handling (minimum version, maximum version, recommended
o HTML Interface fixes esp. dependencies.
Totally Holistic Enterprises Internet| | Andrew Milton
The Internet (Aust) Pty Ltd | |
ACN: 082 081 472 ABN: 83 082 081 472 | M:+61 416 022 411 | Carpe Daemon
PO Box 837 Indooroopilly QLD 4068 |email@example.com|