We are planning to change the behavior of
refresh/switch operations when a risk and only a risk (
edge,beta,candidate,stable) is specified, to only change the risk but keep what is the current track of the installation of the snap.
This means for example if a snap is tracking
snap refresh --candidate SNAP would refresh and switch to using
2.0/candidate. (Now it would jump to
The context of this is the coming introduction of default tracks and is a generalization of what was done for model-pinned tracks and hinted there.
The tracks of a snap should represent established development trails of its software with a smooth upgrade story within them. Changing the track for an already existing install should be an explicit decision/operation.
So far a snap can have a set of optional tracks and a
latest track which represents a rolling development trail. We are working introducing the concept of a default track for a snap, a pointer to one of those tracks, that would typically represent what is currently recommended when starting with a fresh install. The default track would change over time, but preexisting installs would not follow on a change. A snap with a default track might not have a
latest track at all.
An install specifying
--edge|--beta|--candidate|--stable would use the default track if that is set, whereas this asks for
This opens the question of what
refresh/switch operations should do in this new world when only a risk is specified. At the moment they ask for a jump all the way to
latest/RISK. Historically these options existed before the introduction of tracks at all, given that as we remarked changing track for an existing install should be a very conscious/explicit decision we wonder if keeping that behavior is sensible within the now much richer world of tracks and default tracks, and think it is appropriate to consider moving to a safer behavior where they switch only the risk keeping the current track.
Specifying a full channel with a track would still allow to switch track, and we would also introduce a
default alias to refer to the current default track. Also for a snap with only a
latest track the behavior would also continue to be the same.
We are interested in feedback about this planned behavior change.