[Grok-dev] Re: grok futures: the return of the ZMI
Paul Everitt
paul at zeapartners.org
Mon Jan 7 14:13:38 EST 2008
My oh my, what a thread. :^)
Like Martin, I don't have enough time at the moment to say too much, but
briefly:
1) The ZMI was an outgrowth of Principia, which wanted to hide Python.
As such, it (for better or worse) brought in a number of people whose
goal wasn't to do "programming". (Think of it as: would you rather type
in Visicalc or write COBOL?)
However, it brought up an interesting point Jon Stahl brought up. It
wasn't just that this audience *couldn't* program, it was also that they
weren't *trusted* to program. Meaning, you'd never let that group of
power users ssh into the server, hack stuff, and restart.
I think for customer projects, this is an important point. It's hard to
make customers into full-fledged developers of the stack *and* maintain
a service level agreement.
2) I think ArchGenXML shows that there is a variant of TTW vs.
Filesystem. Meaning, people can do meaningful stuff in a pointy-clicky,
model-driven approach. They aren't writing anything that would resemble
code. But they *are* doing a tremendous amount of business specification.
Thus, a new ZMI wouldn't have to do TTW *development*. We could leave
out restricted Python. We could even leave out ZPT. In fact, we could
freaking leave out the browser. Instead, it would be about
pointy-clicky model specification.
Instead, produce a "model", as Martin says, that can be checked into SVN
and address all the concerns about ZODB black box. It then becomes
"through-the-REST".
I confess that I'm working on such an idea. Since I have been full of
shit on this story since before Martijn Pieters joined Digital
Creations, I need to keep my mouth shut until I show anything.
--Paul
Martin Aspeli wrote:
> Hi Martijn,
>
> I think this is a very interesting post. I don't have time to answer in
> kind, but I'll give you a run-down of our experiences and thoughts from
> Plone.
>
> - TTW template, CSS, image and other resource customisation is a very
> important use case for us. This is part of what makes Plone attractive
> to new developers, and it makes some operations very quick in Plone land.
>
> - TTW programming causes more harm than good, unless you're careful and
> you know what you're doing, you're likely to end up with a mess. If
> your're careful and you know what you're doing, you're likely to be
> happier with a filesystem development model anyway.
>
> - People aren't afraid of the filesystem. They're afraid of elaborate
> and time-consuming configuration and setup. We've had reasonable success
> with Paste Script-based templates that get people up-and-running
> quickly. The more convention-over-configuration this is the better (ZCML
> slugs must die...).
>
> Pylons has a nice model here. You run "paster create -t pylons" to
> create a new project. Then you run "paster controller MyController"
> inside your new package (this is a "local command" in Paste speak) to
> create a new package. Some people (Mustapa Benali and others) have been
> working on doing this for Archetypes content types in Plone. The
> advantage of this approach is that you get "best practice" code in an
> instant, all you have to do is fill in the blanks.
>
> - In Plone (4?), we want to have a model of TTW schema definition. Zope
> 3's content model (schemata in interfaces, formlib or similar for forms,
> annotations for data storage, events) makes this easier than Archetypes
> did.
>
> We think this may involve some kind of hybrid, where a schema
> (interface) is persisted to a module (since you need that for
> persistence support), but loaded at runtime from an XML file that
> describes the entire content type. By having an actual type interface
> which can be introspected at run time, we can support a migration path
> from something that's TTW defined to something that's filesystem defined.
>
> For example, say a "business user" creates a schema via a TTW UI. This
> is ultimately saved to an XML file and then used to build (at runtime
> and subsequently on startup) a schema (and an FTI and other Ploneish
> stuff). Then, say a "developer" wants to send an email each time an
> object of this type is edited. If we don't have a TTW construct for
> this, the developer can write some (filesystem) code that defines an
> event handler for (IMyContentType, IObjectModifiedEvent). Or, he could
> write an adapter of IMyContentType to add some new behaviour. Or, he
> could move more of the interface from XML-based to Python-based, perhaps
> with some tool that could write out the Python code from an XML file.
>
> That's a very high level sketch, and there are some challenges with this
> (security, for example), but we think it's doable, and I'd like to make
> as much of that re-usable and shareable. Tres Seaver already has some
> code in the userschema package that can create a schema interface from a
> CSV (Excel) file, an XML file or an HTML form.
>
> Martin
>
More information about the Grok-dev
mailing list