So what will we do? (was [Zope] What causes the community to stall so often?)
Matthew T. Kromer
matt@zope.com
Fri, 08 Mar 2002 16:14:20 -0500
Derek Simkowiak wrote:
>
> Compare Zope and MySQL. Both have the same business model, both
>are popular OSS products, and both have similar target
>markets/communities. Yet the MySQL documentation (both the User Manual
>and the developer's docs) are far more extensive than Zope's. PHP, GTK+,
>Qt, Apache, the Linux Operating System, SGI's OpenGL, SDL, the Python
>programming language, and the Perl programming language all have
>documentation that far surpasses that of Zope. Even smaller one-man
>projects like PyUI, or Pango, do a better job than Zope.org.
>
>
>
Regarding Zope's documenation:
The "core" Zope documentation is actually in pretty good shape, these
days. The problem is, a whole lot of Zope isn't "how do I do X" where
"X" is some simple functional/procedural thing. Instead, its more of a
problem of "whats the best way to do X" or "why do X vs Y?" It's lore,
not API.
There is an enormous amount of the Zope code base that is there because
it evolved that way. A lot of it becomes very optional from the API
layer, so pure API documentation becomes misleading -- it does not
address deeper questions of "why does it work THIS way?"
This is the biggest hurdle in Zope, in my opinion; the fact that one
developer did things one way sort of "blazes a trail" but that trail may
be neither intuitive, nor obvious, to another observer. I can
affirmatively state there are things that routinely exasperate me,
because I want to make a little tweak to an existing example -- but I
can't do it with a little tweak. Instead, I end up subclassing and
patching and coding all around, and that carries a high inertia,
impeding my progress.
True, I can blame some of this on my fellow developers (and myself,
too!) if I had the "this is WHY I the code is written like this"
narrative document, I could usually pick up the how as a consequence of
the why. Instead, one is often left to study the plumbing to figure out
theories of hydrodynamics.
I find that my biggest enemy in Zope is the innocuous text field. In
one of those many text fields in the management interface, you can type
"anything." Chances are good though, that only a few things will work.
It is frustrating when you're exposed to a "place to put something"
when you dont know what *really* goes there, besides perhaps some
simplitic truism from the Help System (put the foobar in the foobar slot).
Thus, I find the core of Zope to be very elegant and pleasing, but I
find some of the contortions that need to take place to use OTHER
people's notions on how Things Are To Be Done to be awkward and obtuse
at times. In many cases, one can go look at what those additional
products do for documentation, and find that only the surface has been
skimmed; essentially the 5% level -- you're left with no progression to
navigate the remaining 95%. I'm not going to name names, but I know a
lot of my frustrations aren't unique.
Some of these frustrations aren't purely Zope, either. I remember
getting *very* angry at javadoc back in 1996 because I could find
documentation on the "middle pieces" but no end pieces; I didn't want to
replumb the graphics pipeline, I just wanted to do a few simple things,
and no where was the arrow saying "THIS IS WHAT YOU WANT."
The corollary to this is that good programmers are trained via an
apprenticeship -- it is vastly easier to gather knowledge by observing
the wise than it is by starting with the Experimental Method and going
from there.
--
Matt Kromer
Zope Corporation http://www.zope.com/