[Zope-CVS] SVN: zversioning/trunk/notes.txt Added desc of our sprint tasks

Uwe Oestermeier uwe_oestermeier at iwm-kmrc.de
Thu Oct 14 06:35:45 EDT 2004


Log message for revision 28153:
  Added desc of our sprint tasks

Changed:
  U   zversioning/trunk/notes.txt

-=-
Modified: zversioning/trunk/notes.txt
===================================================================
--- zversioning/trunk/notes.txt	2004-10-14 10:31:21 UTC (rev 28152)
+++ zversioning/trunk/notes.txt	2004-10-14 10:35:43 UTC (rev 28153)
@@ -21,4 +21,84 @@
     There will be an mechanism to specify what attributes shall be
     included.
     
+    
+    
+    
+What we did at the IsarSprint
+-----------------------------
+
+Versioning means different things to different people and there is no common optimal 
+solution for all the problems that are related to the history of evolving data.
+Therefore we wanted to provide a flexible framework that is pluggable in its
+most important parts and reduces the problem of different versioning schemes
+to a reusable patterns. 
+
+After setting up a wiki at http://zope.org/Members/vbachs/Z3Versioning
+we started by defining the use cases we wanted to address:
+
+    Versioning in a groupware with web-based clients and standalone clients
+	CMS Uses Cases: Compound Document
+	Simple Content Versioning
+	Versioning of Proposals
+	
+	see also: http://zope.org/Members/vbachs/UseCases
+
+We spend a long time to discuss the things we wanted to be pluggable and which
+components were essential. The result of this discussion can be found
+in versioning.interfaces
+
+The overall pattern behind these set of interfaces is roughly as follows:
+
+    1.  Versioning can only be applied to a set of objects
+        if the objects have been registered and have been accepted
+        by the versioning system (or more precisely the version history storage).
+        
+    2.  Creating a version means that the original object is copied into
+        a storage that defines the evolving history of this object by means
+        of a succession of replicated data.
+            
+        What excactly is meant by a copy is a matter of the use case and not
+        prescribed by the framework. Some storages may be able to store metadata,
+        others only content data, sometimes one wants complete replicas, sometimes
+        only some important aspects of an object to be versioned etc.
+        
+        A few simple examples can be found in policies.py. 
+        
+    3.  Reverting to a version means that the saved state of an object is somehow
+        reconstructed in the present context. For some contexts a substitution
+        of the original with a saved copy is sufficient, sometimes references
+        to the originl objects must remain intact. These different variants
+        are also defined in policies.py
+        
+Within this overall pattern the following components are pluggable :
+
+    1.  IHistoriesStorage. This is the main persistent storage that is used
+        to ensure that the changing versions can be accessed later on. 
+        We use the abstract term ticket to describe the fact that different
+        storages use quite different reference schemes, e.g. global unique ids,
+        paths and revision numbers like SVN, python references in the ZODB etc.
+        to retrieve and access parts of the history of an object.
+        
+        In the long run we want to be able to plug in
+        other versioning systems like Subversion or relational databases as
+        other backends.
+        
+        
+    2.  IVersionableAspects. A plugin for the replication process that determines
+        what is versioned and how it stored. This is implemented as multiadapter
+        from IVersionable to IHistoriesStorage because only the combination
+        of both is able to determine what is stored in which way.
+    
+   
+    3.  INameChooser. A plugin for different labelling schemes, e.g. version 1, 
+        version 2, ... vs. v1.0, v1.1, v.1.1.1 etc.
+    
+    
+    4.  ICheckoutAware. A plugin that adds the ability to mark items as checked out
+        to data storages that do not provide this functionality themselves.
+        
+For these main components we coded very simplistic and basic implementations,
+that need a lot of additional refinement.
+
+
     
\ No newline at end of file



More information about the Zope-CVS mailing list