• VyOS Networks Blog
  • Introducing VyOS Stream — a next step in the VyOS project evolution

VyOS Networks Blog

Building an open source network OS for the people, together.

Introducing VyOS Stream — a next step in the VyOS project evolution

Daniil Baturin
Posted 27 Jun, 2024

Hello, Community!

Historically, we had two types of branches — rolling (current) and LTS branches. When we started working on a new LTS release, its branch would be branched off directly from the current one, but it wouldn’t be frozen for experimental changes until very late in the development process. Only when the upcoming LTS release came to a full freeze would any new features be limited to occasional, knowingly safe backports. 
However, that approach created significant problems, both technical and social. Now, we are going to present our solution to both.

The Problem

The approach of branching off from the current worked well enough for us to make LTS releases doable but created issues as the project evolved. For example, at the beginning of the release cadence, any experimental changes could make it into the future LTS branch and have to be removed later if the feature turns out unsafe or inappropriate — as happened with UPnP in VyOS 1.4.

It’s clear that the rolling→LTS model is not ideal, and new LTS release development should start from a stable state.

The Solution

The answer is a VyOS Stream release line — analogous to CentOS Stream.

image (2)

VyOS Stream is the LTS release in the making — right now, it will eventually become VyOS LTS. 

Unlike the rolling release, the stream branch will only receive features we can confidently include in future LTS releases. Once something is there, you can be sure that it will not be suddenly removed—if it’s set for removal for whatever reason, it will go through an extensive deprecation procedure.

All completely new code from the maintainers and community contributors alike will go to the current branch and be automatically included in the nightly rolling release builds.

The rolling release's config syntax and API stability are not guaranteed simply because the design of new features can take multiple iterations and real-world testing to work out. In the rolling release, such changes can occur without any advance warning. 

Once we are certain that a feature design satisfies requirements, can be extended, and will not require dramatic changes in the near future, the feature will be backported into the stream branch.

Future LTS releases will be branched off from the previous LTS release branch rather than the current branch so that every LTS release will start from a stable state. The idea is that intermediate branches may take more effort to maintain and backport changes to. However they will eliminate or shorten the effort-intensive stabilization phase of LTS releases that took many months for 1.3 and 1.4 and slowed down the release cadence significantly. 

What’s next?

We have already created the circinus branch in all public repositories and we are updating our CI processes to start building public circinus-stream images. That will take some time, and we don’t expect it to disrupt the rolling release build process.


The post categories: