Note - this document is still a work in progress. Please do not make inline comments in the proposal - use the SynchronizationTabDiscussion to make comments.
Contact
Shane Hathaway
Problem
There are currently weaknesses in the management of synchronized data between multiple Zope installations. ZEO has solved the problem of real-time updates. But there still exists a need for manual synchronization of data in the following situations:
The Zope management interface currently does not support manual synchronization. The intuitive approach would allow the user to select a "synchronize" management tab and click buttons that correspond to a CVS update, a backup operation, or an operation that copies updated objects to a production server.
There are at least two existing solutions to this problem, both of which have major drawbacks. ZCVSMixin is not able to manage hierarchical data. If it were extended to manage hierarchical data without making use of a synchronization tab, the user interface would likely suffer. LocalFSx cannot store all data about an object and the user has to resort to tools outside of Zope to perform synchronization tasks.
Proposed solution
This proposal recommends a new tab in the management interface called "Synchronize". This tab will only be visible when at least one synchronization strategy has been set up somewhere in the object's containment hierarchy.
A synchronization strategy is an object that can manage the import and export of objects that are descendants of the strategy's container. For example, if you want to manage a folder via CVS, you create a CVS synchronization strategy object in that folder. All objects in that folder and its descendants will then have the synchronize tab available.
A synchronization strategy also provides HTML snippets that let the user perform import, export, status, and other operations. The user is able to perform those tasks in-place by interacting with the synchronize management view.
Multiple strategies can be in effect simultaneously for a single object so the synchronize management view provides access to all available strategies. Useful synchronization strategy types, which are created as normal Zope products, may include CVS, other version control systems, basic filesystem coordination, updates to a central repository in the same ZODB, direct updates to/from a ZEO storage server, and SQL databases.
Risk Factors
The new tab should be added to OFS.SimpleItemx.Item. It would make SimpleItemx a little less simple. But the new tab would not be visible in most situations.
Security must be considered carefully, since the new tab would make importing and exporting arbitrary objects easier.
This could be considered feature creep. We need to discuss whether the gains outweigh the losses. But the initial implementation is under 150 lines of code.
Scope
This proposal deals only with the addition of a new management tab. Although it cites some examples, specific synchronization strategies are not the focus.
Deliverables
|