Zope (pronounced to rhyme with hope) is an object orientated framework for developing web-based applications. It is written in the python programming language, and is released under the Free Software Foundation (FSF) approved ZPL licence, and a GPL compatible one. In fact, the FSF website is a Zope based system.
Zope acts as a python programme which provides a number of HTTP, FTP and WebDav ports for interaction. It consists of
- The Zope Object Database (ZODB) which resides on the file-system as INSTANCE_HOME/var/data.fs
- A number of core python scripts
- Zope products which provide additional types that can be added to the website, which descend from the types provided by the core zope code
- External methods, which are simple python functions that reside on the file-system
- The ZServer that provides the web interface to the programme
The code stored in the ZODB is wrapped by a security manager, which prevents unauthorised code being executed. Each object has permissions that apply to it that are applied to "roles". The most common roles are Anonymous, Authenticated, Manager and Owner. Manager can be thought of as Admin, and Owner as creator. This allows one to specify highly customised permissions including the capacity for building workflows.
Code in products is managed by the ZPublisher, which ensures only docstringed methods are accessible via the web, and are wrapped by security managers, allowing product developers to add new security permissions to their functions.
Zope 2, the version in use today, evolved from the commercial project bobo, designed to create enterprise level web-sites in a structured way. What we now call zope was previously the four products Bobo, Document Template, BoboPOS and the Principia application server. Vestiges of these can be seen today in the zope2 code being replaced by the Five project (see below). They also show up in error messages, with __bobo_traverse__(self) being the first error to scare a new developer.
Zope was open-sourced in 1998, with their world class development team (including Jim Fulton a.k.a. the Zope Pope) joining in 2000. In 2003 Zope 3 was released which rewrites all code but the ZODB.
The Five Project
Five is a python product that aims to bring zope2 and zope3 together, with the final aim of allowing compatibility between the two systems. It is already required for some parts of the Plone product which provides a highly advanced CMS to Zope users.
With the release of Zope 2.10 parts of the Five is active by default with the traversal control file overrides.zcml being included by default. The practical upshot of this is that anybody upgrading to this release needs to be aware of Zope 3, or he will come up against some strange problems. The best thing to do is compare your Zope instance home with the skeleton instance distributed with zope.
Zope will not run on a standard shared hosting account, as it is a server not a library. You will need a copy of Python, shell access, and a lot of resources. The best bet is to run your own server or go with a specialist zope host. The most famous of these is Zettai.net, but their sister company highspeedrails.com is getting a lot of good reviews at the moment, not least from me.
On the mailing list plone-users there are often people asking how to upload their Plone sites, accompanied by a sinking feeling as hundreds of people realise somebody's not RTFM. To reiterate... Zope is not something you can put on your wordpress blog, or on a £5/month hosting package. You need to be serious about zope to host it externally. That said, there are windows and mac installers, as well as packages for every other OS you could want, so don't be afraid to learn.
- Wonderful products such as Plone
- Active development community
- Easy to get to grips with the basics
- Advanced security model
- The other kind of free
- Easy to learn parts, such as SQL integration, or templating
- Not much up to date documentation
- Hard to get from the basics to expert level
- Many of the coolest products are still only on SVN, and don't have stable releases.
- You need to know how to design OOP systems, or your code will be horrible and unmaintainable.
Is it worth it?
If you want a good framework for web development, Zope is worth serious consideration. If you want a CMS, Plone is simply the best (better than all the rest!), but if you aren't already expert in zope you may end up paying a lot in development consultancy and freelancers. If you want to play around with a new system, it's worth it. If you have a deadline and no time to learn, keep away.