This post originated from an RSS feed registered with Python Buzz
by Ian Bicking.
Original Post: Zope 2, Zope 3, and the big empty space between
Feed Title: Ian Bicking
Feed URL: http://www.ianbicking.org/feeds/atom.xml
Feed Description: Thoughts on Python and Programming.
I attended the tutorial on Zope 3 that Jim Fulton gave before PyCon.
Altogether I was impressed, though I still have reservations (though
that's not the topic of this post).
Particularly noticeable is how friendly Zope 3 is to external modules.
Not just friendly, but enthusiastic -- the contact module in the
tutorial specifically has no special Zope 3 bits. (I'd link to it,
but the tutorial is a PDF... blech.) The module is fit into the Zope
system through "configuration". (And presumably more advanced
integration would be done through adapters, which also serve to
separate Zope-neutral code from Zope-3-specific code.)
I put scare quotes around "configuration" because it's different than
I usually think of configuration. It's not the kind of thing a system
administrator would do, or something that you would do to install or
customize a product, but something for a system integrator -- which is
fully a programming task.
Anyway, that's all very refreshing compared to Zope 2. But it's also
all very different than Zope 2. And there's no concrete plan for
facilitating migration from Zope 2 to Zope 3. (There is
"Frankenzope", which seems to basically be Zope 3 and Zope 2 both
running in the same process space, and off the same ZODB.) And Zope 3
isn't (at least as advertised) ready for production (despite a couple
production deployments which have already occurred). So, if you are
excited about Zope 3, but you are mostly interested in application
development (rather than framework development, which where Zope 3 is
right now), what are you to do? How do you get ready for Zope 3?
One nice thing is you don't have to get ready for Zope 3, except to
make good domain objects. Later you'll have to add configuration and
views and other stuff, but that's life -- and if they do Zope 3 right,
it shouldn't be too hard. But (in my experience) Zope 2 does not
facilitate the creation of nice, neutral domain objects. It
encourages the creation of objects that are as much "Zope" objects as
they are domain objects -- if anything, the objects' Zopeness
dominates their domain aspect.
So it occurs to me that the best way to develop for Zope 3 is to not
develop for Zope 2. You might want to use some pieces -- Page
Templates and ZODB, but the bulk of the Zope 2 environment is not
present in Zope 3 (or needed).