RFC: Nextcloud unstable builds and tracks

Hey everyone. I wanted to quickly discuss Nextcloud’s current release process regarding its utilization of channels, and how tracks might improve it.

One of the things we were really excited about with snaps was the ability to potentially follow the edge channel and get a daily refresh of the current (unstable) master (i.e. bleeding edge). We took that a step further and also started putting daily builds of the current stable maintenance branch in beta (i.e. not releases, just progress toward the next point release).

This was developed before tracks were available. Well, that uses two of the four channels available to us, leaving only candidate and stable. We could really use those extra channels just for the snap development workflow, so now that we have tracks we have a couple of options available to us that we’d like to discuss.

Option 1: Put dailies into a dailies track

As I see it, this is the simplest option. It gives us four channels to use for dailies, which opens up some more options (putting the next major release dailies into beta, etc.). But the channel risk doesn’t quite match up with what I’d put there.

Option 2: Create branches for dailies

I like this because I can name them for their purpose, e.g. beta/latest-master, beta/latest-11 beta/latest-12. But branches are supposed to be short-lived, and these wouldn’t be. Also, I’m not sure LP supports this (does anyone know? The interface isn’t clear on this).

Option 3: Actually start using full-fledged tracks

With a track for v11, a track for v12, and a latest track, we have a logical place for daily builds for each major version as well as master (edge of each track). However, this becomes difficult to manage due to the fact that latest is a real track. v11 is the latest stable release, which means the v11 stable releases need to be in latest. Which means we need to release that snap into separate tracks, which doesn’t seem to be supported by LP, so we’d have to do it by hand. This is also problematic once v12 becomes stable: we have to stop dual-releasing version 11, and start dual-releasing v12… I’m getting a headache. How are other people dealing with this?

None of these options feel quite right. Am I missing anything?