On Sun, Mar 05, 2006 at 04:04:48PM -0500, Benji York wrote:
> Geoff Davis wrote:
> >* What can we learn from Rails / Django / TurboGears?
> Fun presentation along those lines:
>       http://oodt.jpl.nasa.gov/better-web-app.mov
> One of the best put together movies I've seen.

Really interesting stuff.
I was struck by the way he presents zope/plone.  He gives it a winning
"fun factor" score for "hello world"... by doing through-the-web
development.  So he says "Zope [2] rocks" precisely because of features
that many of us have been largely ignoring and advising against for a
couple years now.  The kind of thing that the built-in zope 2 tutorial
shows you how to do.

Why is Zope 2 TTW fun?

 - No restarts

 - No configuration

That's certainly food for thought.

The sample app demos were also interesting...
he kinda glosses over what exactly was the full zope/plone stack
and how he did it, but since he generated a Plone content-like app from
a UML model it's not hard to guess :)

Notably it was the kind of app that sits squarely in the single-developer-
in-a-hurry space. The "I just want some forms to save some data and I
don't want to care how it works" space.  The space where, as Jim
keeps saying, zope 2 traditionally excelled and Plone lives today.

A similar app could've been written pretty quickly in Zope 3 by writing
a schema and using browser:addform, browser:editform, and
browser:schemadisplay.  It would be interesting to see how that would go
in the movie.  I suspect that the movie author (named Sean Kelly i
think?) would've complained about the xml "sit-ups" and the numerous
server restarts.  (In the middle of the movie he gives a link to his
article at http://www.developer.com/xml/article.php/3583081 which
includes the line "The fad of applications using XML for their
configuration files is dismaying, to say the least...")

This is the kind of guy for whom TTW development really is compelling.
Watching the "hello world" section reminded me of when I used to really
enjoy doing that stuff.

But there are some important things left out of that story.
Why did I stop enjoying TTW work? Like a lot of Zope 2 developers:

* I needed my work to live in CVS.  ZODB history and undo isn't good enough
  as version control.

* I needed to write tests that I can run without having a real ZODB and
  without starting up a server.
* I needed a sane way to deploy software from dev to staging and from
  staging to production. ZSyncer is fine for what it does, but it too is
  a poor substitute for version control, shell scripts, make, et al.

* The unix shell still beats the pants off the ZMI as a complete
  working environment (even with ExternalEditor, the find tab, etc.)
* I got tired of bouncing between restricted and unrestricted code.
  I want to live in unrestricted code as much as possible.

Ultimately the zope 2 restart time started to become less of a problem
than dealing with all those problems when working TTW.

For CMF development, I settled on a pretty nice compromise: templates
and scripts in filesystem directory views, with the scripts doing
only view-related glue.  This got me files on the filesystem and in CVS,
and no restarts when tweaking UI. The scripts are easily testable using
CMFTestCase. Pretty nice way to work. I still have to deal with
some restricted code, but I'm mostly resigned to that.

In Zope 3, we take restarts and filesystem-only development for granted,
because it's intended specifically for the audience that I'm a member
of...  developers who have those concerns.

I'm hoping to see a similarly interactive, yet long-term-sane, 
working style evolve for in zope 3.  Maybe we'll get there
with Persisent Modules and fssync. 

If there's a moral to this story, it's this:
Scaffolding that gets you up and running with a minimum of
fuss is a great thing.  Rapid interactive and iterative development
is also a great thing.  But if you can't easily transition from there to
more complex apps that are still maintainable, it sucks. It's irritating
to have to throw away some of your knowledge and completely replace it
with new ways of thinking; it's better if the new knowledge strictly
supplements the old.  It's worse than irritating to have to throw away
your work and rebuild it from scratch; it's better if your new work can
cleanly leverage the old.

Put another way, if we consider Jim's first two audiences, how do we
teach a single person to move from "i don't want to have to care" to 
zope zen master / SVN contributor with minimal wasted effort along the

Today I don't know if there's a clear coherent story to be told there,
even for zope 2. If there was... wow, that would be a great.

Sorry if I haven't really said anything new.


Paul Winkler
Zope3-dev mailing list
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com

Reply via email to