Gource: Software Version Control Visualization

Gource (the name is a play on Source and Gorse) is a new visualization for software projects (and perhaps over things? I’ll try to stay focused here) which I released a couple months ago after spending the best part of this year working on it in my spare time and in between projects at work.

This is the official ‘promo’ video.

Gource is a visualization for the development history of software projects. Normally when software is developed, the incremental changes to the code are stored in a Version Control System (VCS) which remembers all the changes that were made, who made them, and when. Gource takes this history and plays it back it back as an interactive animation.

“Software projects are displayed by Gource as an animated tree with the root directory of the project at its centre. Directories appear as branches with files as leaves. Developers can be seen working on the tree at the times they contributed to the project.”

The scenes generated by Gource are made up of quite a few different elements:

  • a tree of the active directories generated by a force directed layout. This is the main structure that everything else centers around.
  • the connections of the tree are represented by splines, coloured by the contents of the directories they connect to. the mid point of the splines drags slightly behind, emphasizing the direction of the motion and giving the tree an organic feel.
  • files represented by coloured spheres (the colour coming from a hash of the files file extension) which are laid out in a spiral pattern around the center of the directory node the belong to.
  • users who are currently contributing to the project. Floating in near proximity to the files they are modifying, the users fire out beams indicating the kind of change they made to the file (green add, orange modify, red delete).
  • labels appear above the active files, users and directories when the become active, and fade out shortly after. This avoids there being too much clutter of text while letting the end user see the names of the actors involved in the current activity which their eyes are naturally drawn to.
  • finally, a camera dynamically positions itself to capture the entire scene or the part of the scene the user is interested in (a specific user, file, the area of the project where activity is currently occurring or everything).

The animated directory tree works using a very tweaked variation on force directed algorithms. Getting this to behave well in most situations (the layout and scale of software projects can differ wildly) was the most time consuming part of the project. If you look at a other visualizations that try to display data with this technique they tend to look very volatile and jerky or only work in cherry picked or static situations where the structure of the tree is constant.

Gource has best support for Git (the VCS system built to manage Linux), though there are scripts to use it with other VCS as well (currently CVS, SVN and Mercurial).

You can download Gource from the project page here.

2 Comments

  1. Posted April 15, 2010 at 1:57 am | Permalink

    Does Gource support git submodules?

  2. Andrew Caudwell
    Posted April 15, 2010 at 2:48 am | Permalink

    Hi. There’s no specific handling for them at the moment.

One Trackback

  1. By Best intro ever | John McLear's School Technology on August 17, 2010 at 12:27 pm

    […] Intro made with Gource […]