From Supersized Fries to Pommes Frites
Zope: Open source application server with component-based architecture.
Fast food lovers are all too familiar with the combo meal, the inexpensive and quick dining option that values convenience over choice. Others prefer their menus a la carte, mixing and matching as their palate desires. And yet, at the gourmand end of the spectrum, today's trendiest phenomenon is the tasting menu, which, if you think about it, is basically a high-end combo meal. Except with eight courses and a three to four figure bill.
Like a multicourse meal, Zope has always offered an out-of-the-box start-to-finish experience. At its simplest, the application server performs a variety of roles, including Web serving and database transactions. Before Zope, most open source app server solutions involved stringing together a variety of independent but compatible products, such as the classic "LAMP" (Linux/Apache/MySQL/PHP) stack. Prior to Zope 3, Zope was designed like a semi-flexible combo meal its components worked together out of the box, but you could change out the Web server or database, for example, if you wanted to.
If you're experienced with older versions of Zope, the first thing you'll notice is that much has changed. Developers are somewhat divided on whether the changes are for the good, but Zope 3 is in many respects a new Zope. If you have never used Zope before, it may seem intimidating. Developers who like Zope do so because it provides a robust, object-oriented framework for building easy-to-manage Web applications. Zope is a somewhat complex toolbox, but those tools enable you to build sites that can be managed by non-developers entirely through the Web.
Zope has always appealed to developers with an understanding and passion for Python-style development, and Zope 3 is aimed squarely at this crowd.
The development of Zope 3, which has had paralleled adoption of Zope 2 in production environments, rewrote Zope with a more component-based architecture. Zope 3 is a framework of bundled libraries, including a Web server, object database, Zope Page Templates, the Zope publisher, Zope interfaces, and a security policy component. Like Zope 2, all the components can work together as a singular "Zope" product, or they can be fitted into other application server frameworks.
Also like earlier versions of Zope, Python is the language used to create the framework and to customize Zope's behavior.
Installing Zope 3 in a Windows environment involves several steps that lack a friendly wizard to guide you. Python 2.4, which is not bundled with the Zope, must be installed. If you have not yet installed it, it is a 9 MB download from the Python.org site. The Zope installer for Windows is an 8 MB download that then installs itself into the Python installation folder, for a cumulative 50 MB initial footprint.
Alternatively, the Zope bundle for Unix-like systems is a 6 MB download. It also requires Python, which may already be installed, particularly on Linux systems.
To begin using Zope you must create a location for Zope "instances," which represent a self-contained Zope Web site. You must create at least one instance using the "mkzopeinstance" script to launch the Zope server. Although none of these steps are particularly difficult, they don't happen automatically.
Because Zope 3 is more like a collection of components than a monolithic application, Zope has introduced a language called ZCML, or Zope Configuration Markup Language. ZCML is used to build functional applications in Zope by connecting its various components. Besides ZCML, Zope 3 introduces page skinning, i18n internationalization support, a pluggable authentication utility, automated form generation, sub-menus, and a generic user preferences framework.
Mindful of the challenges in migrating users from Zope 2 to Zope 3 environments, the "Five" project was launched. Five, which cleverly takes its name from 2 plus 3, backports many of Zope 3's signature features to Zope 2. So, developers can create Zope 2 based sites with Zope 3 feature support as a migration path to a full-blown Zope 3 site.
Although Zope 3 is more than ever a component library compared to earlier versions of Zope, it remains a way of thinking. As a developer, you either "get" Zope or you don't. If you're not "all in," at least mentally, you may find it difficult to get partway in. If you're not a developer, Zope's application serving abilities will remain pretty much out of reach. Zope has always appealed to developers with an understanding and passion for Python-style development, and Zope 3 is aimed squarely at this crowd.
Pros: More Python friendly than ever; Powerful component architecture; Can create robust Web applications.
Cons: High learning curve; Heavy framework for light Web development jobs; Admins tend to love it or hate it there is no in between.
Reviewed by: Aaron Weiss
Original Review Date: 06/29/2006
Original Review Version: 3.2