State and direction of Dexterity (schema) development

Packages such as plone.supermodel, plone.autoform and plone.directives (and what else) provide useful functionality.

But having four different packages with different, partially overlapping configuration options (and some requiring adding a base class to schema), makes building dexterity content potentially confusing and error-prone.

Are there any plans to improve the situation? What could be done?

3 Likes

That one is deprecated. All relevant was merged already into plone.autoform and plone supermodel.

If it comes to widgets and finally z3cform additional imports are needed. I agree this is overall not very comfortable....

First, packages could get merged:

  • plone.behavior could be merged in plone.dexterity.
  • plone.z3cform could be merged with plone.app.z3cform (licence problem!)
  • more possible.

We could make a convenience meta-package to import from. Archetypes has/had atapi and this was very convenient.

A plone.app.dxapi could import all those commonly needed things (but does not provide own features). All Addons and even plone core code like plone.app.contenttypes could import then from there.

Thus it would be easier to refactor things below w/o breaking addons.

Archetypes has/had atapi and this was very convenient.

A plone.app.dxapi could import all those commonly needed things

-1. Back in the day, atapi was one of the most-hated modules for me, because of the extra indirection and obfuscation. Instead of being able to understand the package structure by reading the import statements in any module, you'd have to explicitly look stuff up via atapi as an extra step.

If you just write an addon you really dont want to know the implementation details - given there is good enough documentation.

If you develop the underlying code itself, atapi was indeed an extra step.

But given your argumentation you dont like plone.api neither?

LOL yes I do. That's actually a well-designed, tested and documented API. I seldom feel the need to read more than the plone.api implementation code. Quite unlike atapi which was just a grab-bag of imports where you always needed to hunt further to get a grip on what's really going on.

2 Likes

@jensens so are all the plone.directives.* packages deprecated? What's the proper way of marking them as such? Unless otherwise directed, I will go and add a note to their READMEs to indicate that.

1 Like

They were removed from officially being part of Dexterity in 2012, as mentioned in the Dexterity 2.0 release notes https://pypi.python.org/pypi/plone.app.dexterity/2.3.0#release-notes

A note in the README of the plone.directives.* packages is a good idea.

With little help from the community I wrote a Plone Deprecation Guide.

Would be good to improve plone.directives: Pull requests for are very welcome!

Still, it's referenced by the z3c.form tutorial.