Devilstick - a data centric framework for Zope and Plone
A model driven framework to describe and manage data inside and outside ZODB.
Key features of Devilstick
- define your data-structures (aka types, records, schemas, ...) as a model in XML, UML or any other suitable format - also LDAP schemas or SQL structures may be used as the model;
- have default forms and views rendered for those types;
- access the data through a pythonic API;
- modify and add data-structures and representation at runtime;
- use easily and transparent different storages than ZODB (like, SQL, LDAP, Filesystem).
State: At the moment there is a running prototype. But the code is under heavy refactoring.
Devilstick is not related to Archetypes. It can replace the Archetypes + ArchGenXML story.
Devilstick models are on one hand just configuration, on the other hand (and the most important) its driving the whole behaviour: the model always rules. It can be modified at runtime, like first export as XML, modify it, re-import it, or by a TTW-editor. Read more about it in the usecases section.

Every data payload is stored in data access objects (DAO's). It eases the integration of storages abroad from ZODB. The public API for the data-access and for view and form-handling makes it easy for site-developers to change the look to their needs. Automatic rendering of HTML forms allows rapid prototyping, while manual form-composition is supported as well.
Internaly Devilstick uses a set of DAO's following the metapher of data-cages, data-molecules and data-atoms. The structure of those, together with storage configuration and a default configuration of widgets, forms the model.
The metaphor is taken from chemistry, where cages can contain molecules and atoms. Even if one missed chemistry in school its very simple to get, that a molecule consists of atoms, while a cage is a specialist molecule type.

