Gource MESA in Azure Container

Git Visualisation of ASOS

  • 3078 repos

  • 3725056 file changes

  • 146437 directories

  • 584548 files

As software is developed, incremental changes to files are grouped together as 'commits' and stored in a Version Control System, maintaining a history of each change made, by whom, and when. Gource is an open source project facilitating the visualisation of this history, playing it back as an interactive animation. Software development is displayed by Gource as an evolving tree, representing the file / directory structure of the project. Directories are laid out using a force directed tree algorithm. Directories are pulled towards the perimeter of their parent directory, while repelling unrelated directories. Files appear in spirals at the centre of each directory, grouped by their type. Developers are shown as floating avatars, appearing whenever they have made changes to the project. Coloured beams are sent out from the developer to the altered files, indicating the type of change being made. Labels for users, filenames and directories can be displayed.

This visualisation and video encoding process took several days in a MESA based Azure Container Instance with the output saved to an Azure Storage File Share. Gource can easily be installed on Windows with Chocolatey and run via PowerShell on a GPU enabled workstation however I'm not too familiar with PowerShell piping and the temporary ppm file stream generated quickly gobbles up gigabytes. There's an explanation of the problem here  by James Brink and his subsequent docker image which I used. I'm a big fan of WSL and Gource runs nicely when X Server for Windows is installed but WSL does not support OpenCL and CUDA GPUs so I might as well leave it tin run in Azure. Azure does now offer Nvidia CUDA GPU enabled containers using the nvidia/cudagl image, however the implementation of Gource still seems to rely on an X Server. It's also quite difficult to get that image working locally as you have to setup the Nvidia toolkit. It is not ideal to have an X Server running just to facilitate the capture of our animation although its is coinvent for its use with Xvfb. More detail on OpenGL rendering here from Nvidia.