[Zope-dev] Comments on ZPatterns

Ty Sarna tsarna@endicor.com
3 Jul 2000 18:59:11 GMT


In article <395A0742.4BDD8599@nipltd.com>,
Chris Withers  <chrisw@nipltd.com> wrote:
> 1. Too much jargon... by far... Lots of complicated words that are
> meanlingless to the layman and don't help to convey the concepts. This

Can you point out some examples of which ones you think are especially bad?

> is compounded by the standard Zope problem of minimal documentation
> aimed at the advanced developer. Can someone who understadns this all
> take the time to write a ZPatterns guide to compliment the Wiki and
> maybe simplify or explain in great detail all the terms (especially the
> new ones that have popped up in the last few weeks)?

Naming has been a struggle.  It's hard to come up with descriptive names
for these things.  Part of the confusion is that some things have been
renamed in an effort to make the meanings clearer in the long term.  But
short term, it's confusing and it seems like there are lots of new
concepts, when in fact there are just several names for the same concept
(Implementor -> Specialist, Rack-mountable -> DataSkin, etc).  I'll also
admit that Rack-mountable was a clearer name, but it was no longer
accurate.  We tend to err on the side of a name that doesn't clearly
describe something instead of a name that clearly describes something,
but describes it *wrong* so that you think you understand something and
really don't.  ("Well, at least the name tells you that you don't know
what it is!", as I've said :-)

> 2. Feature runaway. It seems every day something new (and more
> confusing) has been added to ZPatterns. I think ZPatterns will only work
> if it is kept as simple and functional as possible. My view (bearing in

You mention in another post that you feel lots of unnecessary features
have been added -- can you give some examples of which ones you feel are
extraneous? There has been only one major feature added in ZPatterns
0.4.0, which is the ability to have Rack-mountable-like things that
don't live in racks.  This is important for PTK-like applications where
you don't want to lump everything into one container, but would instead
like to have it distributed between member's folders, for example.  I
think it was worth it. 

Part of the percieved feature runnaway I think is due to the renaming
issue described above.  Also, a lot of what looks like adding of
features is actually reorganization and simplification of features that
were already there.  There's no need now for SQL Racks vs.  LDAP Racks
vs.  ZODB Racks, for example.  New features were added, but mainly to
avoid the need for other features to even exist.  In a lot of ways, the
code keeps getting simpler and shrinking (as an example, look at the
early LoginManager releases vs what's there now -- the code shrank
considerably and got much clearer!)

Future versions will follow this trend.  For example, we're probably
going to introduce a simple language to replace Generic Attribute
Providers, Generic Triggers, and such.  This actually will end up
eliminating stuff from ZPatterns and making it clearer, as there will be
less types of objects. It should also help the "I have to visit 4
different menus to set up one simple thing" problem. It will keep more
of the configuration together so you can see exactly what is going on.
I think it will be easier to explain and document as well.

> mind my limited understanding ;-) would be to concentrate on Containers,
> Container Groups and Plugins on the one front and Racks, Specialists and
> the various providers and agents on the other.

The PlugIns stuff is indeed separate, and is not really a part of
ZPatterns as much as it's stuff that we wrote to make ZPatterns and
other Zope products easier to write. You can pretty much ignore it if
you won't be writing python products or working in ZPatterns internals.

> PS: The main reason I'm writing this is because I think ZPatterns are
> very very cool but may well get ignored because no-one understands them
> and they're too buggy and complicated to get working :/

0.3.0 is pretty stable, I think. 0.4.0 alphas have been buggy. But they
*are* alphas, after all. You were warned :^)

From the unattributed mail you posted from someone else:
> > P.S. ABout ZPatterns: everyone I spoke to was thought the basic idea
> > behind  ZPattern was good and sound and nice and so on. But _everyone_
> > complained about it being too pretentious (with all the computer science
> > claims and theory behind it) 

What, you want something that's *not* based on any theory, just random
ideas? :^)

> > and introducing too many unnecessary new
> > concepts (racks, specialist and what have you). All this is very

Racks and Specialists are key concepts.  Saying that they're unecessary
and should be eliminated is like saying OO programming would be simpler
if they got rid of all the extra ideas like classes and objects.  Probably
so, but what would be left???

ZPatterns is new, and it can be confusing, and there is not enough good
documentation (or working examples -- I'm surpised this is one thing
there hasn't been much complaint about).  But, it is a lot like Zope in
this respect.  As someone who used Zope for quite a while before it was
even called that, and spent much time banging my head against the wall,
I'm guessing I have a pretty good idea of how you feel.  I've gained a
new sympathy for DC.  A lot of these complaints and comments look
suspiciously familiar to me...  It took time to figure it all out and
for Zope to improve.  So, please be patient...  we (Phillip especially) are
doing a lot of this on our "spare" time.  More and better documentation
would be nice, but at the moment we have a LOT of high-priority work
projects to finish (two major rollouts on two continents in two weeks --
fun!) , and it's hard to find time right now to work on things in
ZPatterns that don't directly affect our paid work.  (Much the same
situation DC is in a lot of the time, I suspect). 

So, in summary, please bear with us.  We're working on improving the
situation.  And if you have criticism of weak areas, please be as
specific as possible so we have a better idea of what we need to work on
communicating better or changing in the software to make clearer. 
Thanks!