Zope 3

Zope 3 is a rewrite by the Zope developers of the Zope web application server. Much of the Zope 2 base was rewritten from scratch with a component architecture. Out from this has evolved a large library of Python components that aim to be reusable, and an application server. The first production release of the software, Zope X3, was released on November 6, 2004. Zope 3 is distributed under the terms of the Zope Public License and is thus free software.

History

The Zope 3 project started in February 2001 as an effort to develop a new version of Zope as an almost complete rewrite, with the goal to retain the successful features of Zope 2 while trying to fix some of its shortcomings. The goal was to create a more developer-friendly and flexible platform for programming web applications than Zope 2 is. The project began with the development of a component architecture, which allows the structuring of code into small, composable units with introspectable interfaces. The interfaces are supported by an interface package in order to provide the functionality of explicitly declared interfaces to the Python language.

Technology

The goal of the project was to enable programmers to use Zope in order to expose arbitrary Python objects as model objects to the web without the need to make these objects fulfill particular behavior requirements. In Zope 2 there had been many behavior requirements to allow objects to participate in the framework, which resulted in a large amount of mixin base classes and special attributes. Zope 3 uses a model/view architecture, separating the presentation code from the problem domain code. Views and models are linked together by the component architecture.

The libraries underlying Zope 3 have been evolving into a collection of useful libraries for web application development rather than a single, monolithic application server. To this end the Zope developers split up Zope 3′s originally single tree of packages into a lot of independently developed and released packages. Zope 3 includes separate packages for interfaces, component architecture, HTTP server, publisher, Zope Object Database (ZODB), Zope Page Templates, I18N, security policy, and so on. The component architecture is used to glue these together. The component architecture is configured using a ZCML (Zope Configuration Markup Language), an XML based configuration file language. As an alternative the Grok web framework, built using the Zope 3 libraries, reads configuration information directly from directives and conventions in the Python code, so that the use of the ZCML is minimized.

Zope libraries are developed using an extensive application of the test-driven development method; almost the entire codebase is covered by unit tests and doctests. During development the practice of documenting and testing the software simultaneously has emerged, using doctests. Doctests are text documentation with included executable snippets of code that look like transcripts of interactive Python sessions. Compared to standard Python unit tests, doctests are more narrative-oriented.

The Zope 3 project pioneered the practice of sprints for open source software development. Sprints are intensive development sessions when programmers, often from different countries, gather in one room and work together for a couple of days or even several weeks. During the sprints various practices drawn from agile software development are used, such as pair programming and test-driven development. Besides the goal of developing software, sprints are also useful for geographically separated developers to meet in person and attracting new people to the project. They also serve as a way for the participants to learn from each other.

Current status

Zope 3 is in active development and is now considered a stable framework, used on production projects worldwide. After the Zope 3.3 release, the Zope 3 project has moved towards making the whole project small separately installed modules. Zope 3.4 was the last release of Zope downloadable as one big file. Since 2007, users of Zope 3 have been able to install modules using egg technology for package distribution, and after the 3.4 release in early 2009 this is now the only way to install Zope 3.

The Zope 3 application server is not the only consumer of Zope 3 libraries.

To allow existing Zope 2 based projects to make use of functionality developed for Zope 3, the Five project makes the functionalities of Zope 3 available to Zope 2 developers. Zope 2.8 and later include Five. Several open source projects, including the Plone and Silva content management systems are using Five to make use Zope 3 technologies within their Zope 2 projects. In this way Zope 3 has not displaced Zope 2 in the way it was originally envisaged by many of the Zope 3 developers. Instead Zope 2 has become an alternative platform for development with Zope 3 technology.

In the year 2006, development on the Grok web framework was started. Grok makes extensive use of Zope 3 technologies and aims to make Zope 3 easier to use.

Source