This is a neat idea. I’m not aware of anything exactly in this direction. A few thoughts in the penumbra of this.
-
@khinsen is aware of this family tree of my Freewheeling Apps. You can click on any node in this image to go to its repo. Each repo’s Readme has a section called “Mirrors and Forks” which links to its immediate upstream and downstreams (example). However it’s a manual task to keep it updated, and I see now that the example is out of date compared to the image. (And of course the image is out of date since I’ve added repos since May of this year.) Even if it was kept up to date, this isn’t quite what you’re asking for. It’s just a one-line summary for each fork, without a way to drill down into differences.
-
On the other end of the spectrum, a graphical
diff
tool can provide an extremely thorough list of all the differences between two forks. Justgit remote add
multiple forks into the same working directory, thengit pull
local branches, and something like lazygit will list all the changed lines. But this loses the forest for the trees. The rightgit log
command can help summarize it, but it can still feel noisy, because you see every bugfix for a new feature. -
I think this is partly a code representation problem. It’s hard to imagine a way to improve things that doesn’t require a lot of manual work to keep up to date. If you switched your code representation to something like my layers idea, however, a diff viewer would work a lot better. New features would become legible to tools as new files, and it becomes more tractable to drill down into changes to a single common feature/file. Layers probably don’t scale, but I think I get to handwave that away for Malleable software
-
There is a discovery piece that is independent of summarizing changes once you know about a fork. To answer your question, no I am not aware of any innovation in this area in federated Github clones. My sense is that the market hasn’t yet demonstrated enough demand for it to be worth anyone’s time. Well, at least anyone sane enough to care whether there’s anyone around to see what they’re doing