Zope 2 A Zope
website is usually composed of objects in a
Zope Object Database, not files on a
file system, as is usual with most
web servers. This allows users to harness the advantages of object technologies, such as
encapsulation. Zope maps
URLs to objects using the containment hierarchy of such objects; methods are considered to be contained in their objects as well. Data can be stored in other databases as well, or on the file system, but ZODB is the most common solution. Zope provides two mechanisms for
HTML templating: Document Template Markup Language (DTML) and Zope Page Templates (ZPT). DTML is a
tag-based language that allows implementation of simple scripting in the templates. DTML has provisions for variable inclusion, conditions, and loops. However, DTML can be problematic: DTML tags interspersed with HTML form non-valid HTML documents, and its use requires care when including logic into templates, to retain code readability. The use of DTML is discouraged by many leading Zope developers. ZPT is a technology that addresses the shortcomings of DTML. ZPT templates can be either well-formed
XML documents or HTML documents, in which all special markup is presented as attributes in the TAL (
Template Attribute Language) namespace. ZPT offers a very limited set of tools for conditional inclusion and repetition of XML elements. Consequently, the templates are usually quite simple, with most logic implemented in Python code. One significant advantage of ZPT templates is that they can be edited in most graphical HTML editors. ZPT also offers direct support for
internationalization. Zope 2 underlies the
Plone content management system, as well as the
ERP5 open source
enterprise resource planning system.
BlueBream BlueBream is a rewrite by the Zope developers of the
Zope 2 web
application server. It was created under the name "Zope 3", but the existence of two incompatible frameworks with the same name caused much confusion, and Zope 3 was renamed "BlueBream" in January 2010. BlueBream is distributed under the terms of the
Zope Public License and is thus
free software. Zope 2 has proven itself as a useful framework for Web applications development, but its use revealed some shortcomings. To name a few, creating Zope 2 products involves copying a lot of
boilerplate code – "magic" code – that just has to be there, and the built-in management interface is difficult to modify or replace. Zope 3 was a rewrite of the software that attempts to address these shortcomings while retaining the advantages of Zope that led to its popularity. BlueBream is based on a
component architecture that makes it easy to mix software components of various origins written in
Python. Although originally intended as a replacement for Zope 2, the Zope Component Architecture has instead been backported to Zope 2, starting with Zope 2.8. Many Zope platforms such as
Plone are going through the same type of piece-by-piece rewriting. The first production release of the new software, Zope X3 3.0.0, was released on November 6, 2004.
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. The first production release of the software, Zope X3, was released on November 6, 2004. In January 2010 Zope 3 was renamed BlueBream. 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. BlueBream is considered a stable framework, used on production projects worldwide, most notably
Launchpad.
Zope Toolkit As a result of the development of Zope 3 / BlueBream, there are now many independent Python packages used and developed as a part of BlueBream, and although many of these are usable outside of BlueBream, many are not. The Zope Toolkit (ZTK) project was started to clarify which packages were usable outside BlueBream, and to improve the re-usability of the packages. Thus the Zope Toolkit is a base for the Zope frameworks. Zope 2.12 is the first release of a web framework that builds on Zope Toolkit, and Grok and BlueBream were set to have releases based on the ZTK during 2010.
Grok In 2006 the Grok project was started by a number of Zope 3 developers who wanted to make Zope 3 technology more agile in use and more accessible to newcomers. Grok has since then seen regular releases and its core technology (Martian, grokcore.component) is also finding uptake in other Zope 3 and Zope 2 based projects.
Zope 4 In late 2017, development began on Zope 4. Zope 4 is a successor to Zope 2.13, making many changes that are not backwards compatible with Zope 2.
Zope 5 Zope 5 was released in 2020. ==Zope page templates==