Gource: visualizing work on projects


Gource is a fun tool that takes your source repository, and outputs a video showing your developers as little gnomes dancing around the source tree building the program. I think it's a great visualization to demonstrate to the less technical members of our organization and the world, what a programmer does on a daily basis. The source-tree is simple enough to be graspable as program components, yet reflects some of the complexity we handle. Thus it shows pretty vividly how fractured a programmer's attention can be, and why we need time and space to develop.

I've run this on a couple of our own projects. I think this could also be useful in visualizing the activity of classes; for example in a wiki.

The little gnomes are contributors. The dots are files (colored by file-type) and the rays coming represent changes to the file by the contributor.

This doesn't reflect perfectly how much one contributes to a project--often the hardest parts of a program take up very little space. But it doesn't mean nothing either. At the beginning of the Mondrian project in May 2009 you can see Ethan filling out pretty much the entire application. Besides the initial skeleton, I don't contribute anything of substance until late June (and then I pick up, I think :-)

After the videos, I have some details about how I generated these.




CCNMTL's Whole SVN Repository History (long)

How I made these

After installing gource, most of these were generated in a process that looks something like this. I downloaded images of each developer (from our staff page) and then for each project (checked out from Svn) I did:

cd my-svn-project
svn log -verbose -xml > my-project.log
python svn-gource.py -filter-dirs my-project.log |grep -vi mochikit|grep -vi tiny_mce|grep -vi yui > gource.log
gource -640×360 -stop-position 1.0 -user-image-dir ~/pictures/ccnmtlavatars -hide-filenames -a 100 -s 0.5 -log-format custom gource.log -output-ppm-stream - |ffmpeg -y -b 3000K -r 60 -f image2pipe -vcodec ppm -i - gource.flv