Skip to content

Improved visualisations for large graphs #54

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
3 tasks done
Helcaraxan opened this issue Aug 11, 2019 · 1 comment
Open
3 tasks done

Improved visualisations for large graphs #54

Helcaraxan opened this issue Aug 11, 2019 · 1 comment
Labels
feature request New feature or request
Milestone

Comments

@Helcaraxan
Copy link
Owner

Feature request

Checklist

  • The feature / improvement you are suggesting overlaps with the purpose of gomod:
    facilitating the management of Go modules and their dependencies.
  • You have examined various alternatives to the new feature / improvement you are suggesting
    and are describing the results in the description below.
  • You have filled in the three sections below and deleted their corresponding placeholders
    texts.

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:

  • gomods own dependency graph which works relatively well and has ~40 dependencies total.
  • The graph for the matterbridge project has already a much larger size with ~175 dependencies is becoming somewhat unwieldy.
  • The graph for the kubernetes project with ~300 dependencies is even worse.

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.

@Helcaraxan Helcaraxan added the feature request New feature or request label Aug 11, 2019
@Helcaraxan Helcaraxan added this to the v1.0.0 milestone Aug 11, 2019
@tallclair
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants