Z Object Publishing Environment

Search | Download | Documentation | Resources | Development




Join Zope.org
Log in

Developer Home
Get Involved!
The Fishbowl

 Zope Exits

Zope Newbies
Zope Labs

Zope.org is sponsored by Digital Creations

Proposals Table of Contents Last edited on Jan 20, 2001 8:28 pm
Zope Fish


Note - this document is still a work in progress. Please do not make inline comments in the proposal - use the CleanUpTheCoreDiscussion to make comments.


Martijn Faassen (m.faassen@vet.uu.nl)


The core Zope components and their base classes, such as ObjectManagerx, Folder, DTML Method/Document which are defined in the lib/python/OFS directory, as well as various products defined in lib/python/Products and elsewhere, have HTML GUI strongly intertwined with core functionality. Methods often implement user interface and core functionality at the same time.

There are various consequences:

  • The interfaces of the functionality of the core components (the API) becomes less clear.

  • It is hard to change the web user interface of Zope. It is also hard to support multiple interfaces, such as the classic HTML interface, and any possible future interfaces such as ManagementInterfaceNG.

  • It is hard to support radically different new interfaces cleanly, such as ZopeStudiox, potential native GUI interfaces but also non-GUI interfaces such as XML-RPC, FTP, and WebDAVx and other possible future protocols. Currently often special-case methods need to be added to components to offer such support, or work-arounds have to be found.

This is a problem for the long term evolution of Zope. The current system threatens to become overly complex and inflexible.

Proposed Solution

Drastically separate the core part of the components (model) from the user interface of the components (view/controller). Most objects will be split into at least two parts -- a core and one or more user interfaces (UI).

This proposal concerns itself with the core part

there must be a clean API for them without any pollution by user interface assumptions.

On top of that various other layers can be built, such as ManagementInterfaceNG, ZopeStudiox, possible native Windows and X GUI and so on. Protocol layers for XML-RPC, FTP and so on can also be created. It is also possible to layer XML-DOM support over the core components. One special layer would be a legacy layer that supplies the legacy GUI but delegates most of the actual functionality to the new core components.

Another possibility on the UI front is an AbstractZopeGUI.

Risk Factors

  • It's a major overhaul.

  • legacy API support may be hard to do in detail, due to the quirkiness of the current API.

  • This project is in part depenendent on the development of one of more new UIsx for Zope. Coordination with such UI projects would be important.


This is a large project and encompasses both the API view of Zope directly, as well as the UI of Zope indirectly. This should therefore be a Zope 3.0 project. Due to the component nature of Zope however, development can start at any time and the transition can be made more gradual. New components can be deployed in parallel with the current set.

The aim is to:

  • Increase general flexibility and maintainability of Zope, making it more future-proof.

  • Clear up the picture for Zope core hackers, Zope product authors and Zope developers.

  • Allow the user interface to vary independently from the implementation, and vice versa. The project is therefore an enabler for UIsx and other things, not a UI in itself.


  • a set of clean, UI-less base classes for things such as ObjectManagerx, PropertyManagerx etc.

  • a set of clean, UI-less classes for standard Zope components such as Folder, DTMLMethodx, DTMLDocumentx, MailHost, etc.

  • modifications to the rest of Zope may be necessary to support these changes.

  • a legacy layer on top of the new objects.

View source CleanUpTheCore
Advanced Actions / History
Visitor: Anonymous User
Jump to:
... by pagename prefix or search term.
For a plain search:
Privacy policy       Printable Page       Feedback about Zope.org

served by app2