[Framework-Team] PLIP8 CMFEditions - Review
Helge Tesdal
tesdal at plonesolutions.com
Mon Sep 25 22:40:01 UTC 2006
1. Overview
===========
PLIP8 Versioning finally gives Plone a versioning story.
http://plone.org/products/plone/roadmap/8
2. Test setup
=============
This was tested with Zope 2.10 from SVN and the review bundle.
svn co https://svn.plone.org/svn/plone/review/plip8-versioning-bundle
Products
cd Products
./getZVC.sh
3. How does it work
===================
UI wise, the user can add versions explicitly using the versions tab, or
use
the checkmark on the edit form to add a new version on save.
If you assign diffs to content types in the diff tool, you can even diff
between versions of content.
The doc/DevelDoc.txt and the README explains more about how it works under
the
hood, and I'm trying to give a short summary below:
portal_repository/IRepository.py implemented by
CopyModifyMergeRepositoryTool.py
Main API. Implementation depends on the applications use cases/policies.
portal_archivist/IArchivist.py implemented by ArchivistTool.py
The Archivist knows _how_ to clone/copy a python object. It needs the
help of the portal_modifier to find the boundaries of an object.
portal_modifier/IModifier.py implemented by ModifierRegistryTool.py
Registry for modifier plug ins. Modifiers know how to handle different
aspects
of objects during the versioning process - knows _what_ to clone.
portal_historiesstorage/IStorage.py implemented by ZVCStorage.py
Storage layer for storing the versions. Does not have to care about
references as that is handled already.
purge - can be used for purging very old data. This is a fairly new
feature.
4. State of code
================
CMFEditions has a lot of history (pun intended), going all the way back to
2003, with the main development push happening in 2004 and 2005 (sponsored
by
Oxfam). By now, I believe it is well proven and battle hardened. There
also
seems to be quite a bit of code. A bit like Plone itself.
There are interfaces with good descriptions, and a lot of time has
obviously
gone into the architecture design. Although there is a lot of code, there
is
not a lot of bit rot compared to other components of similar age and
complexity.
5. Suggested improvements
=========================
It would probably make sense to introduce some Z3 tech, like triggering an
event when creating a new version for example. I don't see any
showstoppers,
and inclusion in Plone 3 will hopefully lead to increased development
activity.
6. Recommendation
=================
CMFEditions adds significant complexity to Plone. There is a lot of code,
and
several new tools. I'm not going to pretend I full understand all aspects
of
the code yet, but what I have seen is confidence inspiring. Versioning is
an
important feature, and this seems to be the best alternative around.
+1 to including this in Plone 3.
--
Helge Tesdal
Plone Solutions
More information about the Framework-Team
mailing list