[Zope] Questions concerning development in Zope

Michael Havard nhavar at hotmail.com
Fri Nov 28 14:28:43 EST 2003


>* Zope is often criticised for its perceived lack of documentation. 
>Although the current Zope book seems to have improved greatly, I still miss 
>a good reference guide/book on advanded topics (the Development Guide seems 
>to have stuck at version 2.4 and is rather limited). Which book(s) can 
>fullfill this role?

There are some 'holes' in documentation but... to fill in those holes there 
are user groups, websites like ZOPELabs.com, quite a few user created 
tutorials and technical quides, and of course this list. I think ZOPE is 
under such heavy developement over the past year or so that it's been a 
little bit of a moving target to create new documentation for books and 
such.

>* Zope seems to lack a dominant development methodology/paradigm. DOT.NET 
>has got form-based ASP.NET/ADO.NET, Java has MVC with Struts/J2EE, PHP has 
>either form-based or MVC with Pear/Smarty. What shoudl I use in Zope? ZTP 
>with Scripts? Or external Methods? ZCLasses? Products?

That's a little bit of an apples/oranges comparison I think. Most of the 
development being done within ZOPE isn't ground up developement, it's adding 
on/extending existing products or objects. Again, I think because ZOPE is a 
continually growing/living/breathing framework that it's difficult at this 
point to pick ONE development methodology.

What you use INSIDE of ZOPE is really defined by what you want to do WITH 
ZOPE. Mostly you'll work with ZPT (maybe DTML) and some python scripts, you 
might end up taking it a step farther and making a simple Product just to 
keep things tidy. Then depending on your needs you might need to provide 
some external methods. Pretty much everyone I've heard from lately has said 
"Stay away from ZCLasses" and many of the Products out there have shifted 
away from ZClasses.

>* Releated to the former question: ASP.NET and PHP (through Pear) excell in 
>easy (fast!) form-based development. What functionality can Zope offer? 
>I've seen some references to a " Formulator"  product.

Fast is a relative term. I hear that Formulator is good as well as 
ArcheTypes. ArcheTypes seems to have more meat to it though and is being 
used as a base for other products as well.

Most of the development that you do in ZOPE is from the webform, either one 
provided by ZOPE/CMF/Product 'X' or one you create/customize. It might be a 
ZMI form or a CMF Content Type edit form, or a form generated from a python 
script. Some of those forms aren't anything more than a textarea but it just 
all depends on what kind of development that you need to do.

>* Plone seems to be all the rage. But is Plone usable as an application 
>framework? Can I use Plone for form-based, data-driven applications?

Plone is great. It's essentially a repackaging of products in conjunction 
with the CMF and some custom work on templates, workflows, and scripts. 
Plone is very usable and can be customized (because it's all ZOPE 
underneath) to fullfill any needs that ZOPE can fullfill. It doesn't have 
any 'magic' underneath that makes it any more extensible than the base ZOPE 
product but it does have some 'nice-to-haves'. Just like from the previous 
question you could use Formulator or Archetypes to help with content types 
and forms. If you need to get into a database you could use ZSQL and forms 
to provide a 'data driven' UI.

Right now we use ZOPE, CMF, DCOracle2, ZSQL, ZPT, Python Script, and a very 
basic custom Product to create a "Client Record". The Client Record lives in 
two parts, a metadata 'stub' housed in the ZOPE database and 72 fields of 
information housed in 5 tables in an Oracle database. Users can update the 
Oracle information directly from the ZOPE UI using a custom edit form. They 
can also view the information using a custom view form. Forms, permissions, 
field properties, zsql, et al are packaged as a Product so that we can keep 
it all organized neatly.

>* Thanks to Python's Global Interpreter Lock, Python programs don't scale 
>well on SMP systems. Which is a "must have"  in our situation. I' ve found 
>some references to using ZEO to circumvent this, effectively running 
>multiple instances of Zope on one server. Is there any documentation to be 
>found on this subject? And how proven is this solution?

Can't really comment on how Python programs scale... However many 
applications use multiple instances as a means of load balancing and 
scaling. Currently we run Silverstream for some application server stuff. We 
found that one instance of silverstream would die or seriously degrade after 
60-75 people got on. They looked for all kinds of solutions, but at the end 
of the day the solution was "startup another instance of Silverstream". We 
now have 50 or so instances running 50 or so users each, with a load 
balancer deciding where new users go. All of the instances use one 
repository for their data and it works out fairly well. Sometimes it's just 
better to run 50 small programs than it is to run ONE massive program.

People are using the same strategy for ZOPE creating multiple ZEO clients 
either on a single machine or across multiple machines to provide 
scalability, failover, and reliability. I think it's a pretty proven 
strategy.

>* And finally (which makes me come across somowhat like a Troll, sorry 
>about that :-). What is the "life expectancy" of Zope? Most of the hype 
>regarding Zope seems to have died away somewhat. Recently its coming back 
>in the slipstream of Plone. But realistically, what are the chances of Zope 
>being a *relevant* application platform in a couple of years time? WIth 
>"relevant"  I mean: a platform which is well supported and keeps up with 
>the compettition on *features*, not necessarilly market share.

We reviewed many (MANY) application servers and content management systems 
over the last few years. Out of all of those systems ZOPE really stood out 
on it's own. For example, we looked at creating/purchasing a solution based 
on Vignette. The quickest we could get a solution that met our needs was 
going to be at least 6 months - we'd have to hire a TCL developer, add some 
more licensing at a few hundred thousand dollars, purchase another 'package' 
from Vignette to meet a gap in the base product, possibly purchase more 
hardware to handle the load of new users, etc.

There were a hundred more products out there just like Vignette that did 
little to nothing right out of the box and required substantial amounts of 
customization and resources to get it to where it would just work.

Then we reviewed ZOPE. ZOPE/CMF worked right out of "the box". It was 
structured in such a way that it was easy to customize and easy to add on 
additional products where there was a gap. The learning curve for 
development was relatively low. It would run on multiple platforms and 
access multiple databases. It had mature managment interfaces in place and 
worked as expected. So from a feature perspective it beat many of the other 
products out based on our particular needs. Some would say that's because it 
fills a "niche" market. I think our needs were pretty robust though and ZOPE 
has the flexibility to meet much more than we throw at it.

That was a year ago. Before that time I'd never heard of ZOPE. Even today I 
don't see much press about it or hear my colleagues talking about it, so I'm 
not sure about the "hype" part of the ZOPE equation. What I know about hype 
is that often after it dies down it's either because the product is dying or 
because the product has "settled" (meaning become accepted as a plausible 
solution to a need). ZOPE show's no signs of having died and in fact shows 
all the signs of a good living product with growing support abroad.

There are plenty of documents out there that will help you in promoting ZOPE 
as a business solution. When we evaluated it we evaluated based on 
functionality alone (I was asked to exclude price and support cost). I think 
evaluating it on those criteria first is your best bet. Then as the clincher 
include the costs involved in licensing and support.

_________________________________________________________________
online games and music with a high-speed Internet connection!  Prices start 
at less than $1 a day average.  https://broadband.msn.com (Prices may vary 
by service area.)




More information about the Zope mailing list