Web Application Server in Python: which one to choose ?

Paul Boddie paul at boddie.net
Tue Sep 4 05:33:05 EDT 2001


smulloni at bracknell.smullyan.org (Jacob Smullyan) wrote in message news:<slrn9p7v7g.v6m.smulloni at smullyan.org>...
> I am not unbiased, as I'm one of the developers of SkunkWeb; and I'm not
> very familiar with Quixote or TwistedPython, so I can't say anything about
> them.
> 
> However, my two bits are that if you want to do web development in Python
> because you want to benefit from the advantages of the Python language,
> Zope, despite its many merits, is probably not going to please you, at least
> immediately.

Yes, this is where it's less true to say that "Zope is Python's killer
app" than it is to say that "Zope is Zope's killer app". ;-) Zope is
pretty much designed to be used at a higher level, or at least it used
to be, with the intention that most of the work done in developing a
Web site takes place using DTML manipulating objects which sit in the
object database. DTML is powerful and reasonably nice (certainly nicer
than *SP mechanisms) but has potentially been overloaded too much,
leading to its current dubious reputation.

>              Zope is a remarkable, far-seeing product, and I'm not trying
> to knock it by saying this, but transparently exposing the virtues of Python 
> to the web developer does not appear to be or have been its principal aim; 
> to work with Zope, I believe one must think more in terms of the Zope 
> application layer than in terms of Python per se, and one had better like 
> that layer a whole lot.

A number of people have been heard to say that they knew what they
wanted to do, but didn't know how they could do it by applying the
relevant concepts within Zope's conceptual model. Comparing Webware
and other systems to Zope is rather like comparing a four wheel drive
vehicle to a train: Zope will probably get you where you want to go
faster provided that someone has already laid the track to that
destination, whereas Webware and other systems will require some
effort but take you more easily "off the beaten track"; if you want to
do something unusual with Zope (where "unusual" is a term relative to
Zope's way of doing things) then you may find expanding that rail
network a more daunting task than jumping in that four wheel drive
vehicle.

Getting away from dodgy car metaphors, I think that the number of
Zope-based "news and comments" sites illustrates that Zope inhabits
certain niche areas comfortably but, despite the seemingly large
community around it, it isn't clear to me which other kinds of sites
Zope is really suitable for.

> I won't go over the SkunkWeb propaganda here; you can read the FAQ and make
> up your own mind.  I do find the SkunkWeb component model perhaps the most
> Pythonic/"fits your brain" design around; I think it is brilliant in its
> versatility and almost insulting simplicity.  (I'm not being arrogant here,
> because I had nothing to do with its invention.)  SkunkWeb is a
> "less-is-more" application; you get a rather small toolkit with which you
> can be productive almost instantly and you quickly discover that you can do 
> a hell of a lot with it.  

Simplicity should be a virtue with software, though, especially if you
want to be confident in deploying it. Far too many systems have
obscure, "cool" hacks in place either to do things in "interesting"
ways or to be needlessly flexible, but such hacks are less welcome
when tracking down a problem involves looking through 30 files to find
out which piece of code caused a subtle change in behaviour, or when
one wants to extend the system but it isn't clear where to start.

Personally, I would be afraid to deploy Zope because it's a huge
system which may be well understood by a small group of core
developers, but it doesn't seem widely understood or understandable as
a system. Back in the days of Bobo, I was somewhat nervous about the
reliability of the object database as well. However, what all these
Web application systems seem to lack is a good guide on how to deploy
such systems in production, from setting up the Web server to choosing
applicable components, and interfacing them with other systems.
Perhaps the Zope books attempt to describe this, but it would be good
to see Webware (for example) documented in such a way.

Paul



More information about the Python-list mailing list