User:Garbanzo/PacVis

PacVis Notes
PacVis is a tool from Arch that shows a tree of packages. I've been playing around hooking it to the Portage tree. Looks neat, it shows all of the links between my ~1000 installed packages with ~8800 dependency links between them.

depends on www-servers/torndado (i think that is all)

Changes made so far from PacVis
 * Hooked up the installed tree from Poratage
 * Fixed a loop in the top down sort
 * Add search by partial package name
 * changed how cycles are handled
 * add new topology sort that handles cycles better
 * Show update previews (e.g. emerge -p @world)
 * Distinguish BDEPEND, DEPEND, etc
 * distinguish stable, testing, live, and overlay packages
 * fixed bug that is restricting selected packages to a subset, get a non-topology graph that looks good
 * add option to hide @system and below packages

ToDos
 * distinguish installed vs new vs upgraded packages
 * show blockages
 * display improvements
 * de-clutter
 * balance levels
 * reduce edge lengths
 * space out nodes better
 * grey-out r/pdep edges when not selected
 * hide nodes/edges when there are too many
 * Show full Portage tree (will be too crowded? yes it will but may be interesting)
 * connect different versions of atoms of the same package
 * visualize differences between 2 graphs (emerge -e @world vs current install, what if USE flags)
 * get different physics models working.

Graph observations
Some things looking at my portage tree:

The graph is quite dense, the edges in the middle look solid until zoomed in pretty far. The trick to making this useful will be how to de-clutter.

Lots of cycles. The longest has over 300 packages, it'll be interesting to see how that improves excluding r/pdepends. The big cycles are hard to see, but the deps that cause the cycle can be seen. Many cycles only involve r/p deps.

@system packages have deps that are not in system

many package have deps on @system packages, i assumed those would be implied, maybe needs a specific version?

dev-ruby is typically on the bottom

the layout of emerge -e @world tree is somewhat different than the installed package. not sure if the difference is in the actual graph or just how it is layed out.

Played with the physics models some. The non-topological sorts are unstable - packages go flying off the window. Looks neat but not useful for anything.

A draft of a wiki page
User:Garbanzo/PacVis_DraftPage