We should probably rethink our manifest migration strategy. While we can have all of these options set as optional manifest properties, I'd say that we'll likely want to create a proper migration strategy sooner than later, as it will reduce future work.
Current migration strategy:
Auto-generated code requires us to implement certain, fixed migrators.
available manifests:
0.1.0
0.2.0
0.3.0
0.4.0
migrators/migration paths:
0.1.0 -> 0.4.0
0.2.0 -> 0.4.0
0.3.0 -> 0.4.0
After update to 0.5.0:
We need to update/create n+1 migrators if we want full migration support.
available manifests:
0.1.0
0.2.0
0.3.0
0.4.0
0.5.0
migrators/migration paths:
0.1.0 -> 0.5.0 #added/modified
0.2.0 -> 0.5.0 #added/modified
0.3.0 -> 0.5.0 #added/modified
0.4.0 -> 0.5.0 #added
Proposed migration strategy:
Allow developers to declare their own migrators, from whichever version to whichever other version.
A simple search algorithm would then find the appropriate migration path, and could even allow for downgrades if the correct migrator exists.
available manifests:
0.1.0
0.2.0
0.3.0
0.4.0
migrators:
0.1.0 -> 0.2.0
0.2.0 -> 0.3.0
0.3.0 -> 0.4.0
0.1.0 -> 0.3.0
migration paths to 0.4.0:
0.1.0 -> 0.2.0 -> 0.3.0 -> 0.4.0
0.1.0 -> 0.3.0 -> 0.4.0
After update to 0.5.0:
available manifests:
0.1.0
0.2.0
0.3.0
0.4.0
0.5.0
migrators:
0.1.0 -> 0.2.0
0.2.0 -> 0.3.0
0.3.0 -> 0.4.0
0.1.0 -> 0.3.0
0.4.0 -> 0.5.0 #added
migration paths to 0.4.0:
0.1.0 -> 0.2.0 -> 0.3.0 -> 0.4.0 -> 0.5.0
0.1.0 -> 0.3.0 -> 0.4.0 -> 0.5.0
We should probably rethink our manifest migration strategy. While we can have all of these options set as optional manifest properties, I'd say that we'll likely want to create a proper migration strategy sooner than later, as it will reduce future work.
Current migration strategy:
Auto-generated code requires us to implement certain, fixed migrators.
After update to 0.5.0:
We need to update/create
n+1migrators if we want full migration support.Proposed migration strategy:
Allow developers to declare their own migrators, from whichever version to whichever other version.
A simple search algorithm would then find the appropriate migration path, and could even allow for downgrades if the correct migrator exists.
After update to 0.5.0: