The Zope 3 Book/Introduction

Overview
Zope 3 consists of a number of small frameworks and libraries written in Python programming language and it is usable in pieces or in whole. These frameworks and libraries can be put together to build any kind of web application. Normally, Zope 3 applications are developed using a Python based build system called Buildout. Zope 3 is built on top of a component architecture to separate presentation code from the problem domain code and to create reusable components (zope.component).

Zope 3 has an object publisher (zope.publisher), web server (zope.server), transactional object database (ZODB), XML-configuration language for registering components (zope.configuration), flexible security architecture with pluggable security policies (zope.security), unit and functional testing frameworks (zope.testing, zope.testbrowser), XHTML-compliant templating language (zope.pagetemplate), schema engine and automatic form generation machinery (zope.schema, z3c.form) and many more core and third-party packages.

Originally, the term ZOPE was used as an acronym for Z Object Publishing Environment (the Z doesn't really mean anything in particular). However, now-a-days ZOPE is simply written as Zope.

Zope 3 is a ZPL (BSD like, GPL compatible license) licensed free/open source software. It was developed by the Zope community with the leadership of Jim Fulton. A brief history is given in the next section.

The main aim of this book is to create a free online book about Zope 3. This book will cover how to develop web applications using Zope 3 components. You suggestions and edits are always welcome.

Scope of the book
The intension of this book is not to cover how to use Zope 3 packages independently or with other Python applications/frameworks. Rather, this book focus on developing web applications using Zope 3 packages. More specifically, this book is not going to cover using Zope 3 technology in Zope 2, Plone, Grok or any plain Python application/framework. WSGI is also not a current focus of this book. This book is not going to cover using zopeproject to bootstrap application (it's very easy, look at the PyPI page for zopeproject). This book use Buildout for setting up an isolated development environment for building applications. Setuptools and vitualenv also will be covered.

Audience
The target audience of this book are Python programmers looking for developing web applications. However, the book doesn't assume you are familiar with any other web framework.

Prerequisites
This book will require prior knowledge Python programming language and at least some exposure to the basics of HTML, CSS and JavaScript.

Brief history
The beginning of Zope’s story goes something like this, in 1996, Jim Fulton (CTO of Zope Corporation) was drafted to teach a class on common gateway interface (CGI) programming, despite not knowing very much about the subject. CGI programming is a commonly-used web development model that allows developers to construct dynamic websites. On his way to the class, Jim studied all the existing documentation on CGI. On the way back, Jim considered what he didn't like about traditional, CGI-based programming environments. From these initial musings, the core of Zope was written while flying back from the CGI class.

Zope Corporation (then known as Digital Creations) went on to release three open-source software packages to support web publishing: Bobo, Document Template, and BoboPOS. These packages were written in a language called Python, and provided a web publishing facility, text templating, and an object database, respectively. Digital Creations developed a commercial application server based on their three opensource components. This product was called Principia. In November of 1998, investor Hadar Pedhazur convinced Digital Creations to open source Principia. These packages evolved into what are now the core components of Zope 2.

In 2001, the Zope community began working on a component architecture for Zope, but after several years they ended up with something much more: Zope 3. While Zope 2 was powerful and popular, Zope 3 was designed to bring web application development to the next level. This book is about this Zope 3, which is not really a new version of Zope 2.

Most recently, in 2007 the Zope community created yet another framework based on Zope 3 called Grok. The original Zope which is now known as Zope 2 is also widely used.

Organization of the book
This book has divided into multiple chapters. Summary of each chapter is given below.

Introduction
This chapter introduce Zope 3 with an overview and scope of the book, then briefly go through the history of Zope 3. Later discuss organization of the book. And finish with a thanks section.

Getting Started
This chapter begins with installation details of Python and Zope 3, then introduces Buildout, the build system we use to set up an isolated Python working environment and its configurations. Later, it explore setting up development sandbox using Buildout. A simple application is developed further and it ends with a Hello world page. During the application development we see how to use ZMI (Zope Management Interface) briefly. This chapter also provides a brief overview of important packages and installation of additional packages.

Interfaces
This chapter introduce the concept of interfaces.

Thanks
This book would not be possible if Zope 3 did not exist. For that, the authors would like to thank all developers of Zope 3. Thanks to wikibooks for providing this space for book. Thanks to all editors of this book.