[Zope3-dev] IMPORTANT RFS: Through the Web Site Development

Joachim Werner joe@iuveno-net.de
Mon, 13 Jan 2003 16:24:41 +0100


Hi!

> On the other hand we will loose about 70-80% (wild guess) of the current
Zope
> 2 TTW developers, who do not know any Python and have difficulties to
> understand it. I am pretty sure that there are many, many sites out there
> that are written using one of the following two options:
>
> 1.) They only use the standard Content Objects that are provided by
default in
> Zope 2 (maybe they download another product or two). Then they use ZPT and
> DTML to do all the logic. Note: I do not think that much Python Script is
> used unless someone on the mailing list gave it to them.
>
> 2.) They use ZClasses (because they understand sort of OO programming) and
use
> scripts often DTML and ZPT, but maybe already some very small Python
scripts
> to do the logic.

The problem in the the time need to learn ZPT and/or DTML and all the tricks
to make ZClasses actually do what you want you can as well learn Python. If
had known all this in advance I'd started my Zope career using some DTML
(there was no ZPT yet) and a lot of Python.

I think Shane is right that most people don't actually need to code. They
want to add meta information, change the look and feel of forms and write
templates. The objects they need could be quite generic. This is where a
ready-to-use CMS for Zope should step in.

Probably we should say goodby to the idea of Zope for everyone. Zope 3 as a
product should only provide the basic infrastructure. Somethin like CMF next
generation provides the easy-to-use high level objects with configurable
meta data etc.

If the API of this tool is strong enough and it comes with a cool TTW
frontend the need for actual coding will be close to zero for a lot of
people.

> Example: I want to create a menu quickly. What I did on one site was to
simply
> take an OrderedFolder and put other OrderedFolder objects in it having a
> senible title. Then I just called "of.objectValues('Ordered Folder')" and
> displayed the titles of the sub-folders an voila I had my menu. This was a
> 2-minute task. How would I do that in Zope 3?

This would have to be provided by the CMS. E.g. KONTENTOR has nice methods
like "isInCurrentTree()", "kids()" etc. to help with building navigation in
ZPT or DTML.

> Addressing Group 2, let's say I want to quickly create a NewsItem object
that
> has a couple of properties and methods. In Zope 2 I would just create a
> ZClass, add all the properties and create a couple of scripts for the
methods
> and I am done. If ZClasses weren't so unpredictable, this should be a
> 10-minute task. How would I do that in Zope 3? Note that writing a Python
> module is **not** an option.

I'll take my KONTENTOR example again: News are a standard object in
KONTENTOR. We are planning to go a step further and make it a component that
can be applied to most if not all existing content objects. You can
customize the news object in KONTENTOR by just adding or removing fields
from the form (Formulator with some minor extensions) and changing the
template. No ZClasses needed.

I really used to use ZClasses and the over-the-web approach a lot. But in
the long run it is not the best way to go I think. The main problem is that
people tend to build quick-and-dirty things with DTML or even ZPT that can
not be reused easily.

Let me finish with an opinion I have expressed before: Most of the problems
people might have with Zope 3 TTW programming can be predicted if the
community builds a CMS with Zope 3 as part of the Zope 3 development effort.
Note that I don't say Zope 3 should be a feature-complete CMS, but I do say
that Zope 3 will only be a good design if it works well as the engine of a
CMS. And the only way I see to find out is actually building one ;-)

Cheers

Joachim