-
Devilstick
last modified October 13, 2008 by jensens
Devilstick is a new framework and style how to work with data in Zope.
Key features:
- define your data-structures (aka types, records, schemas, ...) as a model in XML, UML or any other suitable format;
- 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 different storages than ZODB (like, SQL, LDAP, Filesystem).
Current state
Devilstick is an early development phase. We have a running prototype and a running application on top of it. Now a big refactoring has started. At Blackforest sprint an before we started a complete rewrite of the core parts.
The core of the prototype was very flexible, it allowed us to play with it without the need of major refactroings all the time. OTOH it lacks semantics where we would need it.
The model-interpreter is the absolute core of Devilstick. We took the decision to build it upon a decent meta-modelling architecture. We wrote cornerstone.model, a meta-meta-modelling framework in pure python and with zope component architecture. Its tested and almost finished. Also we took some old bits from Bozen-sprint two years ago: forest. After some refactroings and simplifications it made it into cornerstone.forest. It is a generic multi-pass multi-channel converter/ transformer. It will be used for the various model-transformations into devilsticks internal cornerstone.model model-representation. cornerstone.model works but may need some love again. Another part build upon cornerstone.model is devilstick.polymerase. It is the importer for devilsticks native XML format and have library code for reuse while writing other importers. We also took xmiparser from ArchGenXML and released it as a separate python-package, so it can be reused within Devilstick.
Since blackforest sprint we have a blueprint of the DAO-API - it needs some discussions on detail level, but the goal to keep it stupid simple and pythonic is almost reached. While inventing the API we tried to avoid reinventing the wheel and looked at zopes container API etc. At blackforest sprint another field of research was storage. We looked deep at zopes persistency engine and decided to reuse it on the DAO-layer to bind the storage engine to it.
Plan
The major tasks for the sprint are:
- refactor the model-interpreter,
- finish the import for the native XML-format and document the native XML-format,
- refactor the DAO's and create the DAO API,
- refactor the storage-system.