When are epochs/stepped upgrades coming?

The Nextcloud box is shipping with Nextcloud v10 on it. The snap itself is about to update to v12. When that happens, new purchasers of the Box will get v10 and immediately jump to v12, which isn’t actually a supported upgrade (Nextcloud requires that you not skip a major release, and may even run into issues if you skip point releases).

A while back we were discussing stepped upgrades. Is that still on the roadmap? How far out?

Stepped updates are not on the roadmap for the current cycle for either snapd or store. Have they considered using tracks for v10, v11, v12? Then their users could be instructed to switch 1 major version at a time by jumping tracks in order.

Good to know, thank you. Regarding tracks:

  1. Using tracks would require an image update to get off of latest, and doesn’t solve the issue for the current inventory.
  2. The Box targets users that shouldn’t need to use SSH at all, and they would need to in order to change tracks.

Epochs were not in the short term roadmap, but that might be changing just now? :slight_smile:

1 Like

Epochs would be great, and would definitely solve this issue, but I’m curious: is there a downside to simply always stepping through upgrades by each revision that was released on a given channel?

Perhaps the store doesn’t even track revision release history, but if it did, say the user was currently on revision 1 (from the stable channel). When they check for updates, if the current revision on the stable channel was 4 but the store knew that 2 and 3 were released on the stable channel between 1 and 4, would there be a downside to it returning 2 for that query, and 3 the next time, and so on?

With no other changes, the only (not insignificant) downside I see is that updates could take forever since by default snapd only checks every few hours. But I wonder if such a mechanism would be a shorter path to resolving some of this pain than fleshing out epochs.

1 Like

I believe there’s no major difference between implementing support in snapd and the store to go through every single revision vs. go through specific revisions. The delta of those two approaches is smaller than it sounds. In both cases we’ll need to teach new tricks on both ends, and will need to iterate over a given set of revisions which today we don’t really have access to. Which specific set revisions to iterate through is a simpler problem.

Yeah, that makes sense.