repoze.zope2 TODOs

  Sandbox Items

    - Consider making a ZEO-based installation the default (the dependencies
      already get 'zeoctl' and 'runzeo' installed):

      o Change the skeleton 'zope.conf' to make the ZEO client the normal
        version, and leave the non-ZEO one commented out.

      o Change the README.txt to explain starting the ZEO server.

    - Consider adding a 'bin/runzope' wrapper script which runs the server.

  Other Setup Items

    - Add a 'bundle' command to setup.py (again, a generic setuptools
      extenson, plus local configuration).  This command:

      o Creates a new egg directory

      o Makes all eggs included as 'easy_install.pth' dependencies 
        'install_requires' of the generated 'setup.py'.  Note that 
        "development" eggs may need special handling.

      o Copies the sandbox 'etc' directory into the egg's skeleton,
        (making them 'skel'-aware?).

    - Add a 'deploy' command to setup.py (also a generic setuptools
      extension + local config).  Eggs generated via 'setup.py bundle'
      should expose a 'setup.py deploy' commeand, similar to the 'sandbox'
      command, which:
      
      o Creates a locked-down instance of the application in a separate
        virtual_python environment.
      
      o Installs the exact egg versions tested in the sandbox.

      o Allows command-line overrides of commonly tweaked values (e.g.,
        port number, effective user, etc.)
      
      o Includes a script which can by used in stanard 'init.d' style to
        start and stop a standalone wsgiutils server.

      o Includes a sample 'mod_wsgi' directory which can be copied
        or linked into the Apaache docroot, along with sample configuration
        which can be copied / linked into the Apache config / config dirs.

Blather

  Eggs

    To make things work "right" we'll likely need to redistribute Zope2
    components as eggs.

  Things we can rip out of Zope2/CMF when we decompose fully

    - ZODB/ZEO/transaction/BTrees/ThreadedAsync/persistent/ZopeUndo 
      (depend on ZODB egg instead of shipping)

    - ZPublisher (unnecessary, repoze should take over eventually)

    - App.ZApplication (no longer used)

    - ZServer (wsgi server does its job), also Lifetime and ThreadedAsync.

    - PAS (maybe replace with delegate).  If we implement decsec, we can
      probably deprecate user folders entirely.

    - Caching policy manager

    - profiling code

    - access logging

    - exception logging

    - error_log

    - code which formats error messages for display

    - request retry code

    - code which handles content and transfer encoding

    - all startup code (Zope2 package, nt_svcutils)

    - zdaemon (will need to be handled higher up)

    - virtual host monster?

    - browser id manager?  sessions?  transience?

  What's wold be left of Zope2 packages?

    - AccessControl, Acquisition, App, ClientForm, ComputedAttribute,
      DateTime, DocumentTemplate, ExtensionClass, Globals, HelpSys,
      Interface, MethodObject, Missing, MultiMapping, OFS, Products,
      Record, RestrictedPython, Shared, StructuredText, TAL, Testing,
      ThreadLock, TreeDisplay, ZClasses, ZTUtils, docutils, initgroups,
      mechanize, pytz, reStructuredText, tempstorage, webdav,
      zExceptions, zLOG, zope, zope.proxy.

  Nice to do

     - Make ControlPanel nonpersistent

     - dont ship with docutils/mechanize/pytz/zope/zope.proxy, get from
       eggs.
