~ / stages /

Interactive visualization of decentralized version control systems (DVCS)

M2R internship proposed by Renaud Blanch & Gilles Bisson.
last update: october the 4th 2011.

Keywords

Human-Computer Interaction (HCI), Information Visualization (InfoViz)

Context

Large open source projects use decentralized version control systems (DVCS) (à la git or mercurial) to manage their code and to handle the distributed nature of the contributions made by their communities. Those systems can manage a huge amount of information: as of 2009, the linux kernel project consists in 11 billions LOC, 28.000 files, 12.000 modifications to the previous kernel version made by 1.200 contributors managed by git. However it is very difficult to make sense from this information from the outside because they are hardly observable. The best visualizations provided so far are: a single timeline (e.g. linux git summary) or a branching timeline (e.g. mercurial graph view) as macroscopic views and textual diffs (e.g. the last change committed to mercurial) for a microscopic view. Those tools are very poor and can not help answer interesting questions about the code such as: "Who should I contact if I want to know more about a given part of the code?" or "What is the maturity of this subsystem?", etc.

Objectives

The goal of this project is to provide better interactive visualizations for the data managed by DVCSs. Some solutions already exist for various class of data (e.g. treemaps are adapted for certain hierarchical data sets, timelines are well suited for temporal series, etc.), but the structure of DVCS data is more complex: the time is not monotone but can branch; the files are stored in a DAG, not a tree; the contributors to the code are implicitly linked in a graph of various relations, etc.

The project will focus on the following steps:

  1. acquiring a familiarity with the state of the art of code visualization;
  2. identifying tasks that are notoriously hard to perform with state of the art visualization of DVCSs;
  3. designing interactive visualizations that make those problems easier; and
  4. implementing those visualizations in an interactive demo.

Readings