[Zope-CMF] Re: The components of Archetypes
whit
whit at burningman.com
Mon Jan 9 13:15:39 EST 2006
thanks for starting up this conversation Rocky!
I think these assertions are more or less deadon. The next step is
charting a path for transition. for CMF, zope3 / five provides
lighterweight analogs of AT features. What is currently lacking is a
mapping layer to allow AT users to use the zope3 analog in a meaningful
way within AT.
As I've stated before, I think the process here is similar to how five
gradually and systematically replaced functionality in zope2.
Maintaining multiple content frameworks for CMF, z3 and AT is a waste of
community effort, and I would like to see AT move toward being more of a
glue library for components available to all.
> #1: Personally I believe there is too much boilerplate code required in
> building plain CMF types. This is the primary reason I find it
> convenient to use Archetypes, because a lot of that boilerplate code
> isnt' necessary. Its my opinion that CMF be refactored a bit to
> minimize this boilerplate in a similar fashion as to Archetypes has done
> it (which means Archetypes would no longer be any more convenient to
> build a type in). Bottom line: lets make CMF easier and more convenient
> to use
z3 does a good job of reducing some of this boilderplate: it gives us
dublin core and annotations. For obvious reason, it doesn't help much
with factory type information. CMF is scheduled to move away from fti
iirc, but some sort of localized "site" configuration of 'content types'
is a basic requirement of any progeny of CMF.
>
> #2: Archetypes schema support has long provided plone developers with a
> way of defining (in a sensible style) the fields and types of fields
> created on a content type class. Personally I believe the automatic
> creation of mutators/accessors to be a negative thing, mentioning that
> explicit is always better than implicit.
I think z3 schema's use of an interface to define accessors and mutators
looks pretty good.
But regardless, Zope 3 is
> providing similar support for all persistent objects. And since moving
> to Zope 3 development techniques is a strong goal of plone and cmf
> development, why not just build on top of that rather than continuing
> with our own AT based schema notion? Alec has the right idea here with
> his plone_schemas product. Bottom line: lets start working with Zope 3
> schema's
The issue is how to get there without maiming our developers(not an
insurmountable problem, just something that needs to be faced). Some
basic decoupling of the AT schema from the AT content object and
decoupling of the different facets of the schema(View, Marshalling,
Storage, Model, etc) are necessary to get there.
here is a rough list of steps I see to move toward convergence:
1. return schema and schemata by interface rather than attribute access
2. make at wigets, fields, and validation interchangeable with z3
widgets and fields
3. start deprecating features that impede convergence: auto-generated
mutators and accessors, etc
4. deprecate widgets, storage, marshalling, etc in the schema. Move the
declaration of this behavior elsewhere.
The AT schema is really a system for configuration and we should treat
it like that, whether it be treating old schemas inclusion of view data
and storage as default options, or moving schema operations to paradigms
configurable by zcml.
>
> #3: Widgets is one area where development outside Archetypes has
> flourished. There has been a plethora of third-party widgets developed
> that people reuse. Zope 3 also has a widget mechanism and following the
> thought as in #2 ultimately this is the direction we're moving in. The
> problem of course at the moment is that Archetypes widget library is
> quite a bit more diverse than zope 3's widget library so there would
> definitely need to be some work porting the widgets from AT to zope 3
> (plone_schemas also lets you use z3 widgets today). Bottom line: lets
> start migrating AT widgets to Zope 3 and use existing Zope 3 widgets today
see above
> #4: There has been many a discussion regarding this item. Most people
> talk about separating out the references engine from Archetypes into its
> own product. As a primary goal this should allow any CMF based content
> type to participate in the references logic and not just ones built on
> Archetypes. Bottom line: lets move the references engine out of AT and
> into its own product
I think this is a prime target and if people are interested in tackling
this, I would like to work on it at the snow sprint.
see next email ->>
> So what do you all think?
>
> In the CMF community, I know some (all?) of the CMF purists think
> Archetypes is generally unnecessary and adds a lot of bloat based on
> feedback I've received.
AT is pretty unkempt compared to the likes of CMF or z3 and subject to
the looser faster style of plone programmers. Breaking AT down into
reusable components may improve adoption, since using some of AT wont
necessarily mean you have to use the whole of AT; it will also force
improvement in orthogonality and testability.
We also need a general change in attitude towards AT. Yes it sucks in a
lot places, yes it is delicate, but we the plone community are stuck
with it.
> In the Plone and Archetypes communities I know using Zope 3 techniques
> in development is a hot topic and so seeing Archetypes move to a more
> zope3-based architecture would be a great thing.
1.) even Chris Withers has to deal with AT. Lets give him less reasons
to complain. can we start charting a roadmap right now? Ben conducted a
survey earlier in the year. we should continue this process and start
laying out some concrete goals. We can start unravelling these at the
snowsprint.
2.) this has to be gradual and sensitive to back compatibility. As an
approach, I think we should view the z3 architecture less as an end but
a means for unfucking AT. Letting the past coexist with the future
without having to suffer grueling migrations would be nice too.
-w
More information about the Zope-CMF
mailing list