Dexterity is a lightweight and modular Plone-based framework for developing content management applications. It was designed to be an alternative to the Archetypes. Archetypes (formerly known as CMFTypes) is a default framework aimed at simplifying development of the applications for Plone and CMF. So far Dexterity is compatible with Plone 4. The project has many developers with Martin Aspeli taking the lead, though most Dexterity source code is owned by the Plone Foundation and maintained in the Plone svn repository.
Plone Dexterity Capabilities
Dexterity was developed with the desire to remove the complexity of Archetypes and make things as easy as possible when developing new Plone-based modules and extensions. Dexterity lets you:
-
build a content object entirely through the web interface with no prior Python programming experience
-
build a schema with visual or through-the-web tools, and extend it with additional adapters, event handlers, and other Python code written by a Python developer
-
Build highly customizable content types in filesystem code quickly and easily.
-
Support general "behaviours" (title-to-id naming, support for locking or versioning, or sets of standard metadata with associated UI elements) that can be declared on a custom content object.
-
Build your own content types packages and distribute them through-the-web, on the filesystem, or both ways.
Philosophy
Plone Dexterity product was designed with a particular philosophy in mind that encapsulates the following principles:
Reuse over reinvention
Rather than start everything from the ground up Dexterity should reuse the existing components, modules and other technologies as much as possible, including the concepts. This way Dexterity is easy to learn and work with, since most of it uses well-known APIs and techniques.
Small over big
Dexterity is a Plone product comprised of independent reusable packages. Each package has as few dependencies as possible, and declares their dependencies explicitly. It helps with maintaining the design and code clean and comprehensive.
Zope 3 over Zope 2
Even though Dexterity does not come with complete support of non-CMF systems, it still attempts to provide correct performance with Zope 3. Separate components dependent on Zope 2, CMF or Plone are developed in a way to still follow Zope 3 techniques and best practices. Many operations (e.g. managing content types in a folder, creating new content items or manipulating them through a defined schema) are better designed in Zope 3 than they were in Zope 2.
Zope concepts over new paradigms
The Dexterity project team aims at utilizing all the power Zope has to offer. There is no need for new paradigms and techniques, since Zope is mature enough, well-designed and thoroughly tested Python web framework.
Automated testing over wishful thinking
All the parts and functionality units should be put under a battery of automated tests. Since Dexterity has a lot of independent moving components, it helps minimize the risk that those units will become corrupted and break the rest.
Plone Dexterity Users
Dexterity was designed and developed to serve mainly two types of users: administrators/integrators, and developers. The project is hoped to be easy to set up and work with, and later on to move on to more sophisticated content types and associated behaviours through stepwise learning and natural interaction patterns. From the start the Dexterity team has been developing the project in the user-friendly fashion. It aims at catering different types of audiences explicitly with clear, well-documented, natural interaction patterns - be they business analysts, light integrators, well-versed administrators, seasoned Python developers, or be they new and inexperienced.
Plone novices get to:
-
design new content objects through-the-web
-
enable/disable various aspects (called "behaviors") on a per-type basis
-
improved collaboration between integrators (who may define a type's schema) and developers (who may provide reusable behaviors that the administrator can switch on).
Plone developers are able to:
-
build custom content objects faster and easier than it is possible with Archetypes or plain CMF types
-
content types with a smaller runtime footprint, to improve performance
-
content objects that use zope.interface/zope.schema, which became a today’s standard scheme.
Need help with developing custom content types in Plone, contact Quintagroup and get a quote with the recommendations on your particular case.