After spending a bunch of time with the graphviz utilities (neato, dot, circo and twopi) trying to create a graph to understand the software dependencies between modules in a project I’ve been I assigned I realized that those tools don’t work well with large graphs. I tried and tried with no luck, I thought that the old linux kernel map poster used graphviz to create the poster but after googling a bit and reading the code for the FCGP project I found that they write PostScript directly. I was looking for something simpler.
After giving up with graphviz I found a bunch of tools for working with graphs most of them are toolkits to develop your own tools but then I hit GUESS. GUESS is a graph browser so to say. You generate a .gdf similar to graphviz’s .dot files and GUESS will layout the graph for you. But the really good thing is that it is a browser you can actually interact with the graph, changing the layout or coloring items, etc. It comes with a scripting language that allow to manipulate the graph very easily and to neat things like change the size of the nodes depending on the value of certain field of the node. All this in runtime. So if you wan to spot all the nodes in your graph where the field “module” is equal to “provisioning” you just enter this in the console
selectednodes = (module == "provisioning)
selectednode.color = red
Pretty easy, isn’t it?