Helcaraxan / gomod

Go modules analysis tool
MIT License
393 stars 19 forks source link

Improved visualisations for large graphs #54

Open Helcaraxan opened 5 years ago

Helcaraxan commented 5 years ago

Feature request

Checklist

Description

On modules with a large total number of dependencies (>80 / 100) the graphs generated by the GraphViz toolchain are of relative poor quality and legibility. This is appears to be mostly due to the manner in which the various nodes of the graph are placed and constraints on these placements that are used.

This can be observed with:

Most importantly the output of the dot tool for larger graphs appears to leave quite some empty space available and node placement is not always at its most advantageous for edge routing. This is likely due to the generalist nature of the dot whereas it would be possible the leverage some of the specific knowledge we have about dependency graphs to achieve a better overall result.

Implementation suggestions

Building a placement and edge-routing engine from scratch can be painful, difficult and is above all quite an undertaking... but it might be worth it. Prototyping is going to be crucial in order to decide what is the best way forward.

Additional information

N.A.

tallclair commented 1 year ago

One way this could be improved is with an option to exclude transitive dependencies. I think those edges lose their value in large graphs and add a lot of noise.