Creating a dependency graph (in the hope it may show some structure)

Dear Haskelllers, I've reacently started with Haskell and during the Dutch Hackaton[3], I decided to generate graphs of dependencies. I was thinking about doing this for Java earlier, and that weekend I decided to write the tooling in Haskell. I've written two programs: hs2dot[1] and dotimate[2]. The first generates a dot file (Graphviz) from all .hs files below the current working directory. The second will take one or more dot files and call neato (from Graphviz) multiple times to generate frames of neato output from one to the next. Trying hs2dot and dotimate on two sequencial commits in the cabal/cabal-install/frames directory already gives me a way to complex and full graph. See attached. ==> My question is: What dependencies, if any, would be nice to graph, and/or which dependencies could I filter out to keep this from becoming a mess? Greetings, Bram Neijt [1] https://gist.github.com/bneijt/hs2dot [2] https://gist.github.com/bneijt/dotimate [3] http://www.haskell.org/haskellwiki/DHD_UHac#Utrecht_Hackathon

On 2 May 2012 06:15, Bram Neijt
Dear Haskelllers,
I've reacently started with Haskell and during the Dutch Hackaton[3], I decided to generate graphs of dependencies. I was thinking about doing this for Java earlier, and that weekend I decided to write the tooling in Haskell.
Just to be clear, what are you referring to by "dependencies": * Package dependencies * Inter-module dependencies * Call-graph dependencies And are you doing this on a per-module or a per-package basis?
I've written two programs: hs2dot[1] and dotimate[2]. The first generates a dot file (Graphviz) from all .hs files below the current working directory. The second will take one or more dot files and call neato (from Graphviz) multiple times to generate frames of neato output from one to the next.
Trying hs2dot and dotimate on two sequencial commits in the cabal/cabal-install/frames directory already gives me a way to complex and full graph. See attached.
==> My question is: What dependencies, if any, would be nice to graph, and/or which dependencies could I filter out to keep this from becoming a mess?
First of all, consider this list of existing graph-based visualisation tools for Haskell and see if any have some features you can duplicate: http://stackoverflow.com/questions/7427094/generate-diagrams-for-haskell-cod... I know in SourceGraph, my take was to try and do different kinds of pruning, collapsing, etc. to shrink the information overload down (however, I haven't touched SourceGraph apart from dependency updates for quite a while).
Greetings,
Bram Neijt
[1] https://gist.github.com/bneijt/hs2dot [2] https://gist.github.com/bneijt/dotimate [3] http://www.haskell.org/haskellwiki/DHD_UHac#Utrecht_Hackathon
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com

Thank you!
I feel stupid for posting a question when there is already a stackoverflow
answer. But now that I have that, I have all the information I need.
Greets,
Bram
On May 2, 2012 12:49 AM, "Ivan Lazar Miljenovic"
On 2 May 2012 06:15, Bram Neijt
wrote: Dear Haskelllers,
I've reacently started with Haskell and during the Dutch Hackaton[3], I decided to generate graphs of dependencies. I was thinking about doing this for Java earlier, and that weekend I decided to write the tooling in Haskell.
Just to be clear, what are you referring to by "dependencies":
* Package dependencies
* Inter-module dependencies
* Call-graph dependencies
And are you doing this on a per-module or a per-package basis?
I've written two programs: hs2dot[1] and dotimate[2]. The first generates a dot file (Graphviz) from all .hs files below the current working directory. The second will take one or more dot files and call neato (from Graphviz) multiple times to generate frames of neato output from one to the next.
Trying hs2dot and dotimate on two sequencial commits in the cabal/cabal-install/frames directory already gives me a way to complex and full graph. See attached.
==> My question is: What dependencies, if any, would be nice to graph, and/or which dependencies could I filter out to keep this from becoming a mess?
First of all, consider this list of existing graph-based visualisation tools for Haskell and see if any have some features you can duplicate:
http://stackoverflow.com/questions/7427094/generate-diagrams-for-haskell-cod...
I know in SourceGraph, my take was to try and do different kinds of pruning, collapsing, etc. to shrink the information overload down (however, I haven't touched SourceGraph apart from dependency updates for quite a while).
Greetings,
Bram Neijt
[1] https://gist.github.com/bneijt/hs2dot [2] https://gist.github.com/bneijt/dotimate [3] http://www.haskell.org/haskellwiki/DHD_UHac#Utrecht_Hackathon
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com
participants (2)
-
Bram Neijt
-
Ivan Lazar Miljenovic