How do Cablecast's Versions relate to each other

January 15, 2021

Answer

Extremely Nerdy Content Warning

This article is designed for extreme nerds, if you don't feel that describes you it may be over your head.

If you've ever paid attention to our release announcements you have likely seen us release several version of software on the same day. For example we recently released Cablecast 5.2.10, 5.3.5 and 5.4.3 together.

Each Major / Minor version combination is what us Software Engineers call a branch. Each time we release a new .0 version of our code, that is a brand new branch. That branch is used for all of the subsequent maintenance versions, so 5.3.4 is a version of our software that is from the 5.3 branch.

When we identify a bug in our software, our engineering team will determine the oldest branch of the code that is not EOL and is affected by the bug, and we will then fix the bug in that branch. We will also add a Release Note which indicates the version affected, the nature of the problem, and the nature of the fix.

We then Merge the fix into the other non-EOL branches. In this way our engineers can fix a specific problem one time, but our customers can get the fix in whatever version of the software they happen to be running.

One downside of the way that we generate Release Notes at this time is that the system isn't aware which other branches have the fix in them. Because of this when we announce new releases, we will often say something to the effect of "Cablecast 5.3.5 includes all of the fixes from Cablecast 5.2.10" -- This is because we Merged all of these fixes from the 5.2 branch into the 5.3 branch.

Additional Information

Here is a good article that explains this system in a little more detail: http://greg.harmsboone.org/blog/2013/08/07/how-to-explain-git-to-non-developers.