#4: Version Migration
- Contents
- Proposed by
- Alec Mitchell
- Seconded by
- Christian 'Tiran' Heimes
- Proposal type
- User interface, Architecture
- Assigned to release
- Repository branch
- plip-004-version-migration
- State
- completed
Motivation
ATCT 0.2 is now in use by a number of people, who will certainly want a painless upgrade path to 1.0 and beyond. Currently ATCT provides no infrastructure for making changes that may be required during a version migration.
Fortunately, ATCT has not had architectural changes of the sort that require a migration structure up to this point. With 1.0 that has changed. In order to make the default Date Criterion for Topics more useful, the stored attributes needed changed semantics. Also, in order to allow migrations for CMF Topics the Integer Criterion for existing ATTopics needed some extra information which may require a trivial migration. Additionally, the CMF Type migration in 0.2 did not migrate CMF Topics; version migration should migrate any currently unmigrated types, which may have been missed during the type migration for 0.2. Lastly, ATCT 1.0 introduces a dependency on a Plone site-property currently only available in Plone 2.1. A version migration could add this property to any plone 2.0 instances to ensure compatibility with existing sites.
Proposal
A proven and straightforward migration infrastructure exists for CMFPlone. This infrastructure has been reused successfully in other projects (CMFMember), and appears to be very general in its applicability, without being overly abstract or complex.
Implementation
Implementing a system similar to the plone version migration will require a couple of migration methods added to the ATCT Tool, most notably CMFPlone.MigrationTool.upgrade() and its helper methods. Also the ATCT tool will need a registry for migrations as in CMFPlone.MigrationTool.
The ATCT/migrations/__init__.py will be modified to register any new migrations. And migration scripts will be added to subdirectories under ATCT/migrations (currently only v1 is needed).
Participants
Alec Mitchell (alecm)
Christian Heimes (Tiran)