[Zope] Zope critique (was Re: CBSNewYork.com using ZUBB!?!)

Derek Simkowiak dereks@realloc.net
Wed, 3 Apr 2002 14:42:42 -0800 (PST)


-> What parts of it didn't perform well? Tell tell? Anything you could give 
-> back would help.

	I recently did a "web application" for a client.  My first thought
was to use Zope, so I built my app in Zope.

	But I needed access to the file system.  And WebDAV.  And SSL.  
Once you step outside of the Zope security model (i.e., to work with files
or the network), things get sloppy quickly.  LFS had some problem I had to
fix, too--and since RPMs of the latest Zope are not routinely produced or
easy to find, I'm running an outdated version that I know has serious
memory corruption issues.

	There is also a massive void of _Developer_ documentation (where
is the HTML, completely cross-referenced, documented object hierarchy
listing all methods and members?) and I doubt that this problem will be
fixed anytime soon.  Last time I whined about this I was basically told
that developer documentation was not a priority.  (I own three Zope books,
they didn't help.)

	So after a couple of weeks of mulling about, discontent with my
Zope-based design, I redid the entire project from scratch using Apache
with mod_python (and of course mod_dav and mod_ssl).  It took me 4 days,
and the client is very happy.  

	My opinion, after having done 4 production projects with Zope and
2 tech demos, is that it's great for a braindead "just talk to the SQL
database" project, or if you want to use a pre-existing Product (like
Squishdot, which rocks, for example).  But if you need to write something
from scratch that needs access to the filesystem, it makes more sense to
just use mod_python or PHP.  (I've fallen off the Perl wagon completely,
but if that's your thing... :)  Also, Apache is far more flexible than
Zope as a deployment platform.

	The lack of developer docs, plus the headache of understanding
every little Zope quirk and having to develop your own "best practices"  
makes Zope a less-than-perfect development platform (DTML Method or
Document?  PythonScript or External Method?  Untar in /ZOPE_HOME/ or in
/ZOPE_HOME/lib/python/Products?  ZClass or just clone a template?  
Distribute a .zexp or a .tar.gz?  What Property Sheets should my Product
have?  How to map FTP uploads to particular Zope Meta Types?  Write my own
management U.I. or use the Zope management interface?  Branded error
pages?  DTML or ZPT?  Etc.)

	Finally, I'm sure my opinion is biased.  I am far more familiar
with Apache's internals than I am Zope's (my old dayjob was working on a C
Apache module sold commercially).  This is just my opinion, send any
flames to me personally and not to the list.


Thank You,
Derek Simkowiak
dereks at realloc dot net