Context : ATreeByTheRiver

Here's a common problem.

Git source-code manager is designed like a river. There are various tributaries (different repos of other programmers, different branches for specific developments) etc. It's easy and automatic to pull them into the single main flow as and when you need it.

But we don't have the equivalent tools to help us fan out from a single flow into multiple customized derivatives.

Yes, we can fork code-bases, but forking is a one-time operation. And once your forked derivatives are separate there are few automatic ways to keep them updated from changes to the parent stream. The moment your customization breaks with the mainstream, git merging etc. fail.

Even if you try to put your customizations in terms of patches to the mainstream, they can still break.

Contrast with inheritance in ObjectOriented programming where you do automatically get some of the benefits from the super-classes changing and being improved. Your subclass rarely breaks syntactically. (Although obviously the meaning can change)

Surely this is a standard DevOps requirement that there should be tooling support for these days?

Surely someone has defined an algebra or defined set of operations for "fanning out" in this way.

Is there an AlgebraOfFeeds parallel?

My Quora Question.

Tools like Git seem to help with "fan-in" pattern of managing code. What I mean is that they help when you want to bring multiple forks / contributors together again into a single release.

But are there any good tools to help with the opposite. A "fan-out" pattern where you have a continuously evolving common core but want to manage multiple derivative / customized versions of the code?

I guess this is BuildAutomation and DevOps types software.

Backlinks (2 items)