Dealing with rolling releases and breaking changes


I’m maintaining a snap package of Home Assistant, which has monthly/rolling releases.

I know that moving from one version to another might break integrations, and people need time to make the transfer if an integration is removed/changed (what they call breaking changes). Auto updating between releases can simply screw up the environment.

I know that stopping auto-updates for one particular snap is not easy and I though that maybe making different tracks for each release could be a solution, so people could switch when they’re ready and possibly roll back if necessary. But I see that I need to request new tracks, and I guess it’s not done overnight.

So I’m simply here to get feedback and suggestions from other’s on how I can overcome this?

1 Like

Take a look at Tracks and Epochs. These enable you to have a) multiple supported releases, which users can stick on, rather than be moved to a new release when they’re not ready, and b) enable you to mitigate breaking changes by giving users a supported path from one release to another.

Thanks! I wasn’t aware of the Epochs, need to read up on it and understand how data is handled. Especially the part of the snap knowing how to deal with data for both epoch x and y - which I guess will be impossible. I would never know what people are putting in their config. :slight_smile:

As mentioned, I read that tracks is a solution, but that I have to request it. Do you know if I only need to request to get approved to use Tracks once (per snap) or for each new version = aka a new track?

Tracks seems to be the most user-friendly way to go, as it’s quite clear to everyone what channel they are on or are switching to.

Each track needs to be requested individually, but once your first track request is analyzed and approved (which can take a week due to needing to get votes from reviewers) usually subsequent tracks are created as soon as we see the request, since we have a simplified process for developers who use tracks frequently and have shown they understand them properly.

This means we typically create them within one working day, though this is best-effort; I can’t really guarantee it will always take one day unfortunately (on the other hand sometimes we create them in minutes :wink: )

  • Daniel

Hi Danial, thanks for clearing this out with me! :slight_smile:

Hope it’s ok for me to ask, but seems like you have knowledge on this subject :wink:

As Home Assistant is rolling 1 major release each month, and typically 4-5 minor releases I would have suggested a track for each major as these typically brings the «braking changes» with them. But… that may cause 12 new tracks a year, and I’m not sure if this «tracking scheme» is the right way to go then?

How do you see it, from your point of view?

Nextcloud only has two major releases per year, but the general idea is the same. I think tracks are what you want here. You’ll have to decide what to do with your latest (the default, unversioned) track though. I can’t remember if changing where that is pointing (e.g. to your latest versioned track) is officially supported or still experimental.

Hi, thanks for participating. :slight_smile:

My thoughts was that the latest would always roll the latest release, for those who wants to be on a rolling release.

Me for instance doesn’t use many integrations, just 5 at this time and probably just a few extra in the future, and would therefore stay on the rolling release.

But for many that’s not the case, and they should choose a track and switch manually, when ready.

That’s OK on our side, There are a few other snaps that have a monthly release cadence.

  • Daniel