Great work, very cool trick using the clang commands output to get the data.
In my experiments with software visualization I found that generic graph tools like Graphviz or Gephi do not produce useful visualizations for anything beyond trivial size projects. In systems there is always a hierarchical aspect, so hierarchical graphs seem to be clearer as in comparison [0].
Unfortunately, I am not aware of a good open source hierarchical graph tool. Only one seems to be a proprietary Visual Studio DGML renderer. However, this Chrome graph with 140k nodes would also be too much, VS chokes around 25k nodes+links.
>this Chrome graph with 140k nodes would also be too much
I've heard the rule of thumb from Tufte is that a visualization cannot have more than 1000 elements and still be useful. However, I'm not sure he said that and I cannot find supporting evidence...but it seems right to me.
Consider that mapping programs maintain the same level of information density at every level of zoom. I'm not sure, but this might be called "semantic zoom". I remember Microsoft doing a demo of Photosynth (now defunct) years ago which demonstrated impressive results.
One approach would be to play around with grouping nodes in useful ways, perhaps even dynamically according to user input, such that the resulting bundles represent ~100 raw nodes on average yielding ~1000 bundle nodes in the top-level visualization.
In my experiments with software visualization I found that generic graph tools like Graphviz or Gephi do not produce useful visualizations for anything beyond trivial size projects. In systems there is always a hierarchical aspect, so hierarchical graphs seem to be clearer as in comparison [0].
Unfortunately, I am not aware of a good open source hierarchical graph tool. Only one seems to be a proprietary Visual Studio DGML renderer. However, this Chrome graph with 140k nodes would also be too much, VS chokes around 25k nodes+links.
[0] https://github.com/dundalek/stratify?tab=readme-ov-file#extr...