repoze.zope2 TODOs Sandbox Items - Consider making a ZEO-based installatino 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 extensioe, 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.