An Explanation

This visualization was created from the commit history of the mozilla-central repository. The graph contains a tiny, nearly invisible (except in the aggregate) dot for each of the more than 25,000 files in the repository. The structure of the graph shows the structure of the directories into which those files are organized. The individual users who have committed to the repository are shown flitting about the tree, moving so as to be near the files they are about to modify. For each file added, modified or deleted a color-coded ray is created from the user that made the change to the file in the graph.

Occasionally you'll notice that several users make what appear to be the same set of changes to the same files over the course of several days. This is particularly noticable when one user removes some obsolete portion of the source code and then other users appear to add it back and immediately remove it. This is an artifact of the way merges are represented. I should spend some time figuring out how to make hg report the contents of the changes with respect to the right-hand parent instead of the left-hand parent, that would straighten it out.

Here's how I created this video:
gource -1280x960 --file-extensions -s .3 -r 30 --user-scale 8 --max-user-speed 2000 --title mozilla-central --hide mouse,progress,bloom,dirnames,filenames --max-files 50000 --file-idle-time 999999 --background-color 0E2545 --date-format "%B %d %Y" --stop-at-end --max-file-lag .3 --output-ppm-stream mozilla-central11.ppm
ffmpeg ... uh, some stuff ...

I'm using several javascript libraries on the webpage. Most notable is popcorn.js, which is a great way to support subtitles and other types of information that are keyed to the current timestamp of a playing video. It's awesome. The other is one writte by David Humphrey to do the translucent info panel based on Dublin Core metadata for the video. Pretty nifty.

If you have any suggestions or comments, feel free to email me, my address is