yEd Software Dependency Visualisation
Here's an example of the use of the yEd graphing tool to display the requirements of running this archive. Below is the explanation I sent to the tool authors, in case they wanted to include it on their site in the Gallery.
I scanned my software dependencies, finding the latest version of a program, figuring out what was needed to compile the software, analysing what was already done and then outputted each program as a graph node with edges from dependencies to the final software product. Each node is colour coded according to it's status, green for finished, orange for ready to compile (or partially compiled) and red for missing dependencies.
It displays best as a circular graph and I can zoom around the (fuzzy looking) top left Overview window and see the items in the main window. The Overview box shows the sheer scale of everything I've done and what I need to do. The Structure View window is most useful on the Description option, I've used the GraphML node Description tag to have each node show a tooltip when I hover the cursor over it in the main window, plus the node Description content is also viewable at a glance in the Structure listing. I also added checks for missing software for various Solaris O.S. versions, hence the 8s, 8s64, 9s, 9s64 etc attributes. Putting that data in tooltips allows the normal graph to be clear but still allows me to "drill down" into the dataset.
In the Neighbourhood window (I pop it out so I can expand it) I can click through each of the nodes/programs, back and forth, to see what needs to be done. The other windows update so I can view the requriements.
I use a Perl program to read in the ascii file and output in GraphML format, with yEd extensions. I don't do any node x or y plotting, it's easier to let the circular graph option do it for me after I read in the 924KB graph. There's 492 nodes and 713 edges at the moment. Updating takes about five or six seconds to regenerate the GraphML file and read it back in.
So all in all, yEd turns a huge ascii file (in sort of an adhoc YAML format) into a visualization of dependencies which lets me hunt for issues, pick low hanging fruit and work better. The file was getting unwieldy lately and things were getting missed in the spaghetti. Doing this exercise also showed me where the data needed cleaning up as the exceptions became apparent.
The raw data format. It shows which O.S. versions have had a package created.
fontconfig 2.9.0
http://www.freedesktop.org/software/fontconfig/release/
Compile libiconv 1.14 Done 26s 7s64 8s 8s64 9s 9s64 10s 10s64 10i 11s64 11i 11i64
Compile expat 2.1.0 Done 7s64 8s 8s64 9s 9s64 10s 10s64 10i 11s64 11i 11i64
Compile gettext 0.18.2 Done 7s64 8s 8s64 9s 9s64 10s 10s64 10i 11s64 11i 11i64
Compile freetype 2.4.9 Done 7s64 8s 8s64 9s 9s64 10s 10s64 10i 11s64 11i 11i64
gtk+ 3.4.0:
http://ftp.gnome.org/pub/gnome/sources/gtk+/
Compile pkg-config 0.28 Done 7s64 8s 8s64 9s 9s64 10s 10s64 10i 11s64 11i 11i64
Compile freetype 2.4.9 Done 7s64 8s 8s64 9s 9s64 10s 10s64 10i 11s64 11i 11i64
Compile fontconfig 2.9.0 Done
Compile renderproto 0.9.2 Done
Compile libXrender 0.9.6 Done
Compile libXft 2.3.1 Done
Compile libXfixes 5.0 Done
Compile libXcursor 1.1.11 Done
Compile glib 2.41.0 Done 8s 8s64 9s 9s64 10s 10s64 10i 11s64 11i 11i64
Compile atk 2.4.0 Done
Compile pango 1.30.0 Done
Compile gdk-pixbuf 2.26.0 Done
The yEd window: