ZPatternGoals
The ZPatterns framework was created because ../TySarna and ../PhillipEby wished to improve the state of the art in Zope FrameworkReusability. While Zope's component reusability is fairly good for components that don't need to integrate much with a user's site or application, it has historically been harder than necessary to integrate and reuse larger or more complex components. The key weakness has been that Zope has no built-in provisions for seperating development concerns into AspectFrameworks, and thus no way to seamlessly "weave" an application from easily-blended components, the way one can simply drop components into a GUI builder to make an ActiveX or Java Beans application. (See the DropZoneExample of how to do this with Specialists).
What are the development concerns of a Zope application? We see them as being:
- Data management - accessing, storing, searching, and updating object data (see DynamicDataObjects)
- Domain-specific knowledge - the essential behavior and properties of a useful object. For example, a discussion system's domain-specific knowledge might be about threads, authors, replies, and so on. (See DomainFrameworks)
- User interface - how things "look and feel"
- Application integration - whatever is necessary to pull together the components created for addressing the other three areas of concern.
Given this context, what are the goals of the ZPatterns project?
- To make possible the development of highly reusable DomainFrameworks which need not address data management or user interface concerns except at a "requirements" level. (i.e., they specify what their data management and interface needs are, but do not need to include implementations in order to be useful.)
- To make possible the development of highly reusable components for data management and user interface concerns, and to provide robust basic components for those concerns which others can extend or use as examples to build more exotic components.
- To inform and educate Zope component developers about the benefits of the ZPatterns approaches, and encourage them to share both their "vertical frameworks" and "horizontal components."