In some cases it could be convenient to ensure that an old app version is updated to a specific intermediate version, before updating to the latest version.
For example:
Suppose we have app v1 in the field, and our app release v2 involves some change in configuration that only needs to be performed once, but that all subsequent versions rely on. For example, v2 could have a modified install script that changes the installation directory.
Now, if we would release v3 before every user in the field has updated to v2, the tufup client will skip v2 and go straight to v3.
Using the current approach, every subsequent version would need to check if the configuration change from v2 has been applied, and would need to apply that change, if necessary.
A more convenient alternative could be to define a kind of milestone release, which cannot be skipped.
Applied to the example above: We would include the modified install script only in v2, and mark v2 as a milestone release. Tufup would then recognize that milestone release and would update to v2 even if v3 is already available.
Implementation ideas
One option would be to include a milestone key in the custom metadata.
As a safety measure, users should probably be allowed to override this mechanism by skipping the milestone release.
Naming alternatives:
milestone (fancy)
required (simple, clear)
checkpoint, waypoint, or control point (as in: you need to visit this before proceeding)
Description
In some cases it could be convenient to ensure that an old app version is updated to a specific intermediate version, before updating to the latest version.
For example:
A more convenient alternative could be to define a kind of milestone release, which cannot be skipped.
Applied to the example above: We would include the modified
install
script only inv2
, and markv2
as a milestone release. Tufup would then recognize that milestone release and would update tov2
even ifv3
is already available.Implementation ideas
milestone
key in the custom metadata.Naming alternatives:
milestone
(fancy)required
(simple, clear)checkpoint
,waypoint
, orcontrol point
(as in: you need to visit this before proceeding)