Note - this document is for historical purposes only, please do
not make changes to it. This proposal has evolved into the
VisionStatement - please contribute to that document instead.
As Zope developers build increasingly complex applications,
they find that DTML is a poor way to implement non-trivial
application logic. DTML was never really intended for complex
logic, but lack of an alternate way to express through-the-web
editable logic has caused the "source" of many sites to become
ugly and difficult to maintain as site developers push the
envelope of DTML.
PythonMethods provides objects that can encapsulate more complex
logic expressed in Python while retaining the through-the-web
benefits that people like about DTMLMethodsx. There is already a
prototype implementation of PythonMethods in fairly wide use. We
propose to resolve the outstanding issues and make PythonMethods
available as a standard object type in the Zope platform.
Builtin PythonMethods support will give developers "out of the
box" the ability to better manage the complexity of their
applications by putting significant logic into PythonMethods
and leaving presentation issues to DTML. The builtin
Will allow logic to be written in a language suitable for
Will be editable via the Web (minimally) and probably by
other protocols of the sort supported by DTML (FTP, WebDAVx,
Will be tightly integrated with the Zope security machinery.
Because they will be editable via the web, they will enforce
security restrictions very similar to those enforced in DTML.
They will not allow access to arbitrary modules or system
Will provide synchronized distribution of logic for free when
used with ZEO.
This project will provide an implementation of PythonMethodx
objects to be included in the Zope core and associated
This project is expected to produce:
A stable implementation of PythonMethodx objects to be included
in a future release of Zope
Zope help system pages for each screen in the user interfaces
of the objects in the product
API documentation for inclusion in the help system covering the
public interfaces of PythonMethodx objects
Documentation suitable for inclusion as a section of the Zope
Content Manager's Guide covering the use of PythonMethods