Wasn't the original goal 'Reducing the coupling between our core packages'? How is a fully display of all the transitive dependencies necessary for that?
The goal already implies, that what's important here, are the (both direct and indirect) dependencies between their packages.
To understand those better, you do not need to draw a dependency to any Go core library or other 'uninteresting' library, which would be a leaf in the directed graph or whose transitive dependencies are only 'uninteresting'.
I think those chord graphs might actually be the way to go, if you'd just restrict the amount of packages to the relevant ones.
It might be nice to automatically add references to source lines where those dependencies are needed to the tooltip.
If anyone's trying this at home, I'd suggest scoping down the problem a bit:
- Trying to get rid of a specific problematic dependency? It's easy to filter a DAG to only those paths that lead to a particular node.
- Trying to reduce the raw number of dependencies? Consider collapsing clusters of transitive dependencies down to a single node. (If one of your direct dependencies pulls in 20 unique deps of its own, you don't really need to know what they are or how they're connected to each other -- just that there are 20 of them.)
I tried something similar with Julia packages [1] but I only tried force graphs - with similarly poor results for the most part. The data I used is already out of date (got another 80 packages since then! [2]) so maybe a good reason to revisit with these other graph styles.
Yikes, this post made me realize how I've never seen a chord graph that I liked or coherently communicated data. Is there anything they're actually useful for?
The goal already implies, that what's important here, are the (both direct and indirect) dependencies between their packages. To understand those better, you do not need to draw a dependency to any Go core library or other 'uninteresting' library, which would be a leaf in the directed graph or whose transitive dependencies are only 'uninteresting'.
I think those chord graphs might actually be the way to go, if you'd just restrict the amount of packages to the relevant ones.
It might be nice to automatically add references to source lines where those dependencies are needed to the tooltip.