Software Galaxies
This repository combines visualizations of major software package managers.
All visualizations are available here: http://anvaka.github.io/pm/#/
Please read operating manual -
it is short and describes basic navigation principles.
Repository was create for my talk at CascadiaJS 2015
After conference update - video -
slides
Friends, you are awesome! I can't express how much I appreciate all your
kind words and warm feedback. It really means a world for me. Thank you!
Individual Visualizations
Each graph is indexed individually, and data is pushed to gh-pages branch
of galactic-data.
<table>
<tbody>
<tr>
<td align="center">
<h3>Bower</h3>
<a href="http://anvaka.github.io/pm/#/galaxy/bower?l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/bower_fly_first.png">
</a><br />
<a href="https://github.com/anvaka/allbower">indexer</a> |
<a href="http://anvaka.github.io/pm/#/galaxy/bower?l=1">demo</a>
</td>
<td align="center">
<h3>PHP Composer</h3>
<a href="http://anvaka.github.io/pm/#/galaxy/composer?l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/composer_fly_first.png">
</a><br />
<a href="https://github.com/anvaka/allcomposer">indexer</a> |
<a href="http://anvaka.github.io/pm/#/galaxy/composer?l=1">demo</a>
</td>
<td align="center">
<h3>Ruby gems</h3>
<a href="http://anvaka.github.io/pm/#/galaxy/rubygems?l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/ruby_fly_first.png">
</a><br />
<a href="https://github.com/anvaka/allgems">indexer</a> |
<a href="http://anvaka.github.io/pm/#/galaxy/rubygems?l=1">demo</a>
</td>
</tr>
<tr>
<td align="center">
<h3>npm</h3>
<a href="http://anvaka.github.io/pm/#/galaxy/npm?l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/npm_fly_first.png">
</a><br />
<a href="https://github.com/anvaka/allnpm">indexer</a> |
<a href="http://anvaka.github.io/pm/#/galaxy/npm?l=1">demo</a>
</td>
<td align="center">
<h3>Go</h3>
<a href="http://anvaka.github.io/pm/#/galaxy/gosearch?l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/go_fly_first.png">
</a><br />
<a href="https://github.com/anvaka/allgo">indexer</a> |
<a href="http://anvaka.github.io/pm/#/galaxy/gosearch?l=1">demo</a>
</td>
<td align="center">
<h3>R language</h3>
<a href="http://anvaka.github.io/pm/#/galaxy/cran?cx=-2482&cy=-5685&cz=-291&lx=0.2264&ly=-0.6790&lz=0.4330&lw=0.5480&ml=200&s=2.75&l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/cran_fly_first.png">
</a><br />
<a href="https://github.com/anvaka/allcran">indexer</a> |
<a href="http://anvaka.github.io/pm/#/galaxy/cran?cx=-2482&cy=-5685&cz=-291&lx=0.2264&ly=-0.6790&lz=0.4330&lw=0.5480&ml=200&s=2.75&l=1">demo</a>
</td>
</tr>
<tr>
<td align="center">
<h3>Debian</h3>
<a href="https://anvaka.github.io/pm/#/galaxy/debian?cx=-201&cy=-6170&cz=-6841&lx=0.5676&ly=-0.7456&lz=0.2400&lw=0.2536&ml=150&s=1.75&l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/debian_fly_first.png">
</a><br />
<a href="https://github.com/anvaka/alldebian">indexer</a> |
<a href="https://anvaka.github.io/pm/#/galaxy/debian?cx=-201&cy=-6170&cz=-6841&lx=0.5676&ly=-0.7456&lz=0.2400&lw=0.2536&ml=150&s=1.75&l=1">demo</a>
</td>
<td align="center">
<h3>Arch Linux</h3>
<a href="https://anvaka.github.io/pm/#/galaxy/arch?cx=870&cy=-3968&cz=-2010&lx=0.7695&ly=-0.3554&lz=0.3109&lw=0.4299&ml=150&s=1.75&l=1&v=no-aur">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/archlinux_fly_first.png">
</a><br />
<a href="https://github.com/phiresky/crawl-arch">indexer</a> |
<a href="https://anvaka.github.io/pm/#/galaxy/arch?cx=870&cy=-3968&cz=-2010&lx=0.7695&ly=-0.3554&lz=0.3109&lw=0.4299&ml=150&s=1.75&l=1&v=no-aur">demo</a>
</td>
<td align="center">
<h3>Arch Linux + AUR</h3>
<a href="https://anvaka.github.io/pm/#/galaxy/arch?cx=870&cy=-3968&cz=-2010&lx=0.7695&ly=-0.3554&lz=0.3109&lw=0.4299&ml=150&s=1.75&l=1&v=including-aur">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/archlinux_aur_fly_first.png">
</a><br />
<a href="https://github.com/phiresky/crawl-arch">indexer</a> |
<a href="https://anvaka.github.io/pm/#/galaxy/arch?cx=2655&cy=859&cz=7898&lx=0.2160&ly=0.0620&lz=0.8560&lw=0.4656&ml=150&s=1.75&l=1&v=including-aur">demo</a>
</td>
</tr>
<tr>
<td align="center">
<h3>NuGet</h3>
<a href="https://anvaka.github.io/pm/#/galaxy/nuget?l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/nuget_fly_first.png">
</a><br />
<a href="https://github.com/anvaka/allnuget">indexer</a> |
<a href="https://anvaka.github.io/pm/#/galaxy/nuget?l=1">demo</a>
</td>
<td align="center">
<h3>Homebrew</h3>
<a href="https://anvaka.github.io/pm/#/galaxy/brew?cx=-803&cy=-3622&cz=-1640&lx=0.3774&ly=-0.7360&lz=0.4338&lw=0.3573&ml=200&s=2.75&l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/brew_fly_first.png">
</a><br />
<a href="https://github.com/anvaka/allbrew">indexer</a> |
<a href="https://anvaka.github.io/pm/#/galaxy/brew?cx=-803&cy=-3622&cz=-1640&lx=0.3774&ly=-0.7360&lz=0.4338&lw=0.3573&ml=200&s=2.75&l=1">demo</a>
</td>
<td align="center">
<h3>PyPI</h3>
<a href="https://anvaka.github.io/pm/#/galaxy/python?cx=-2700&cy=377&cz=5622&lx=-0.0869&ly=-0.2315&lz=-0.0338&lw=0.9684&ml=150&s=1.75&l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/composer_fly_first.png">
</a><br />
<a href="https://github.com/anvaka/allpypi">indexer</a> |
<a href="https://anvaka.github.io/pm/#/galaxy/python?cx=-2700&cy=377&cz=5622&lx=-0.0869&ly=-0.2315&lz=-0.0338&lw=0.9684&ml=150&s=1.75&l=1">demo</a>
</td>
</tr>
<tr>
<td align="center">
<h3>Fedora</h3>
<a href="https://anvaka.github.io/pm/#/galaxy/fedora?cx=1539&cy=409&cz=7141&lx=0.0164&ly=0.1453&lz=-0.0027&lw=0.9892&ml=150&s=1.75&l=1">
<img src="https://raw.githubusercontent.com/wiki/anvaka/pm/images/debian_fly_first.png">
</a><br />
<a href="https://github.com/shaded-enmity/allrpm">indexer</a> |
<a href="https://anvaka.github.io/pm/#/galaxy/fedora?cx=1539&cy=409&cz=7141&lx=0.0164&ly=0.1453&lz=-0.0027&lw=0.9892&ml=150&s=1.75&l=1">demo</a>
</td>
<td align="center">
<h3>Rust Crates</h3>
<a href="https://anvaka.github.io/pm/#/galaxy/crates?cx=6617&cy=467&cz=353&lx=0.0169&ly=0.7328&lz=0.0495&lw=0.6785&ml=200&s=1.75&l=1&v=2020-02-19T00-00-00Z">
<img src="https://i.imgur.com/vAPK5lT.png">
</a><br />
<a href="https://github.com/brandly/allcrates">indexer</a> |
<a href="https://anvaka.github.io/pm/#/galaxy/crates?cx=6617&cy=467&cz=353&lx=0.0169&ly=0.7328&lz=0.0495&lw=0.6785&ml=200&s=1.75&l=1&v=2020-02-19T00-00-00Z">demo</a>
</td>
<td align="center">
<h3>Elm</h3>
<a href="https://anvaka.github.io/pm/#/galaxy/elm?cx=-247&cy=-1794&cz=1804&lx=0.4062&ly=0.1564&lz=-0.3016&lw=0.8483&ml=150&s=1.75&l=1&v=2020-02-21T00-00-00Z">
<img src="https://i.imgur.com/44Sj8Js.png">
</a><br />
<a href="https://github.com/brandly/allelm">indexer</a> |
<a href="https://anvaka.github.io/pm/#/galaxy/elm?cx=-247&cy=-1794&cz=1804&lx=0.4062&ly=0.1564&lz=-0.3016&lw=0.8483&ml=150&s=1.75&l=1&v=2020-02-21T00-00-00Z">demo</a>
</td>
</tr>
</tbody>
</table>
local development
git clone https://github.com/anvaka/pm
cd pm
npm i
npm start
This will start local development sever with auto-rebuild.
Your own graphs
This section has detailed instructions about how to use the tool
with your own graphs. Before you read any further, if your graph
is smaller than 10k nodes, consider using ngraph.pixel
or VivaGraph both should
be able to provide interactive layout.
If you have an interesting graph but don't have JavaScript experience,
please feel free to reach out to me and I'll try to make visualization
for you (my email is anvaka@gmail.com).
Otherwise, if you want to hack on your own, please keep reading.
Graph
First, you will need a graph in ngraph.graph
format. The ngraph.graph has detailed documentation about how to create graph,
but it also has several loaders from popular graph formats (e.g. dot,
gexf)
Layout
Now that you have a graph we need to compute the layout.
If your graph is smaller than 200k nodes, consider using ngraph.offline.layout. This module was
created exactly for the purpose of the pm project, it is well documented, and
should be easy to get started with. You can also read layout.js of all[gems|go|bower]
packages to see more examples.
If your graph is much larger than 200k nodes, then consider using
ngraph.native - this module
is harde