[Zope-Annce] Initial Release of Product Manager

Andrew Kenneth Milton akm@theinternet.com.au
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
have bugs.

ONLY USE WITH A SCRATCH ZOPE INSTALL OR FROM AN INSTALL YOU'RE
HAPPY TO RESTORE FROM BACKUP TAPES.

YOU HAVE BEEN WARNED

http://www.zope.org/Members/TheJester/ProductManager/

This is obviously very very very very very very pre-release.

------------------------------------------------------------------------

There are two modes of operation, only one of which is currently implemented.

Concrete Mode:
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.

Virtual Mode:
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
  things.

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
  either.

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.

TODO:

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
  installed.
o Hotfix, Extension, .zexp handing
o Upgrading Zope source installs.
o Proper dependency handling (minimum version, maximum version, recommended
  (version)
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    |akm@theinternet.com.au|