Yesterday and today on a train ride I’ve played a bit with Occams by reading the source and finally installing it.
So the main concept here is versioning and staging which is done one a very transparent level and how it’s done is a quite nice idea. Basically it can choose on the fly which object to access for a certain path and it does that by inserting a gateway object into the traversal mechanism. Traversal is then further done the normal way.
For the more interested and from what I understood: If you have a path
occams is a normal zope folder, dev is the gateway and base seems to be the root object. The gateway returns the root object which loads it’s childs by storing on the fly lazy bindings in
object.__dict__[child_id]. So the tree is build on the fly.
The actual objects are annotated with a UUID and a version and stored inside a version repository which is internal to Occams.
More on installing it you can read at the HowTo
Need to dig into that a bit more to see if it’s possible to use for our placeless content problem and synchronized sites as describe earlier in this weblog.