Hacker News new | past | comments | ask | show | jobs | submit login
Visualising dependencies in Go (cheney.net)
97 points by yla92 on Nov 21, 2014 | hide | past | favorite | 9 comments



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.


You should try Dependency Structure Matrix. In my experience they are more scalable than other forms of software visualization. See https://github.com/facebook/pfff/wiki/CodeGraph


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.

[1]: http://iaindunning.com/2014/pkg-deps.html

[2]: http://pkg.julialang.org/pulse.html


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?


Any implementations of this for Python?


are there any good dot implementations in js?



perfect, thanks!




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: