Gizual: Browser-Based Git Repository Visualisation with WebAssembly and Web Workers

Andreas Steinkellner, Stefan Schintler and Keith Andrews

Playlists: 'glt24' videos starting here / audio

This talk presents Gizual, a cutting-edge open-source web application for visualising and interacting with Git code repositories. It leverages the power of web workers, WebAssembly, and a combination of optimisation techniques to run a Git visualisation locally in the web browser. The talk will look at some of the technical challenges which were overcome, including strategies to minimise memory footprint, implement performant file operations, and distribute workload using web workers.

This talk presents Gizual, a cutting-edge open-source web application, which reimagines Git code repository visualisation and interaction in the spirit of SeeSoft [1]. The Gizual user interface uses a zoomable timeline component for detailed navigation through the commit history of a repository. A zoomable visual overview is then provided for a specified (sub)set of files for the chosen commit, which is colour-coded by metrics such as age of line of code, or author of line of code. Pre-generated preview images and a pool of web workers are used for enhanced performance. Overview statistics such as
contribution charts are also provided.

Beneath the user interface, Gizual exploits the bleeding edge of WebAssembly (WASM) to run performant Git operations directly in the browser. The WebAssembly System Interface (WASI) [2] is used to run libgit2 [3], together with various custom implementations for efficient file i/o and git index parsing.

The talk will cover Gizual's innovative approaches to interaction and visualisation, and some of the technical challenges which were overcome, including strategies to minimise memory footprint, implement performant file operations, and distribute workload using web workers. It will conclude with a look at ongoing and potential future work.

[1] https://doi.org/10.1109/32.177365
[2] https://wasi.dev/
[3] https://github.com/libgit2/libgit2

Download

Embed

Share:

Tags