This article originally appeared at:
http://www.byte.com/nntp/programming/?comment_id=1446

> Zope being Python (and python making my aestheticle hurt) I haven't
> looked much at Zope. (it's funny how the unappealing look of the code
> has made me stay away from Python.  

I'll admit that the notion of whitespace being significant -- an extra
tab breaks your script -- is weird!

> could you sum up Zope in a few lines?  exactly what does it do?

I see it as an industrial-strength version of my dhttp idea. That is,
for starters, it's a 100% scripted long-running HTTP daemon, which
maps HTTP requests directly into scripted method calls. Then, it's an
ASP/JSP/ColdFusion-style template processor, where the template tag
language is augmented by native method calls in the same script
language (Python), and this is pretty quick because the engine itself
is the aforementioned long-running Python daemon. The tag language
also interpolates SQL calls and results very much as in
ASP/JSP/ColdFusion. Then, it's an object database whose structure maps
to your site's structure, and which is also a persistent
representation of a Python-ish class hierarchy. This makes it great
for "factoring" the functionality of a site. Then, it's a vehicle for
the deployment of packaged "products" that plug into this architecture
-- for example, there's a slashdot-alike called SquishDot which you
install, very simply and cleanly, into Zope to add a slashdot-like
component to a Zope site. Then it's a GUI admin interface on top of
all this, so the site is fully Web-managed, and this includes advanced
features like "sessions" in which you can explore alternate paths of
development, which you can then commit or roll back. Finally, since
the whole thing is Web-driven, it is automatically scriptable from the
outside -- a huge point in its favor in my book.

I ported my wife's simple site to Zope, just to get the feel for it,
and it was pretty easy to do. I came up with a nice Zopish solution to
a navigational widget that I use on the site. My biggest concern is
that you have to dump everything into its object database --
templates, images, etc. I see the value of a consistent
object-database model, but it would make me nervous to do that with,
say, the 15,000 files I used to dynamically generate for byte.com but
statically serve out of a file system. (Not to mention the impedance
of doing a bunch of editing in HTML <textarea> widgets, though in
principle Zope's WebDAV support will alleviate that problem.) I've
explored the idea of keeping node placeholders in Zope's db, to enable
its object magic, while sourcing content from the filesystem. This
wouldn't be ideal, though, you'd lose a lot of the clean manageability
of Zope. Ultimately to use it, I think you have to buy all the way in
to the object database, and trust it, and see what happens. 

-- 
Jon Udell | http://udell.roninhouse.com/ | 603-355-8980