Kumpel was mainly built by Matthias Junker, and it is a visual and interactive environment for analyzing how files from Subversion repositories evolve. It is based on the Yellow Submarine.
A sample can be seen below:
Welcome to Kumpel. Kumpel was mainly built by Matthias Junker, and it is a visual environment for analyzing how files from Subversion repositories evolve.
Because evolution implies lots of data, Kumpel provides multiple views into one coherent and interactive environment.
The central visualization of Kumpel is formed by the history flow of the file under study. For example, we are now looking at the file "blame.c" from the Subversion project itself. In this visualization, the x-axis is a timeline showing each revision of a file, and the y-axis represents the source code of that file for a each revision. Each modification to a line of code is shown by a dot.
Furthermore, the lines are colored by their corresponding owners. An author is consider to own a line if he wrote more than 50% of the characters from that line.
Thus, the coloring shows the influence of each author in the file. In our example, we can see how the red author initiated the work on the file. Magenta introduced a piece of code, but it was removed by red. Later on the blue author intruded in the work of red and inserted a large amount of code. From this point on, we see that red significantly reduced his activity, and several revisions later the cyan author also starts introducing large amounts of code. Magenta has another shot at introducing some piece of functionality, but it gets again removed a couple of revisions later.
As mentioned, the visualization is interactive. First, we can select any chunk from any revision and inspect the code to the right. Chunks are successive lines of code introduced together in the same commit. The selection can be achieved either with the mouse or with the help of the navigation keys from the keyboard. With the keys, we can either move in time focusing on the same chunk, or we can move up and down in the current revision.
The current revision is highlighted with a black vertical line that is enriched with a signal signature revealing the indentation level of the source code.
The source code view is also interactive. We see that lines can be modified by multiple authors, as can be observed by the small rectangles associated with each line. If we fly over one of the lines we can see the details of how the line looks like in other versions.
Searching is also supported. For example, when selecting a revision we can search for a piece of text. Let’s say that we want to search for "note"... Using a similar approach we can also select all the chunks from the current revision, and thus we can follow how much of the code is still present in the last version.
In the lower part we get more information about the authors of the file. The legend associates the names of the authors with the colors. Below we see an overview of the percentage of code owned by each. For example here we see that red owned the complete code in the beginning, and in the end he was left with only a small fraction.
Another interesting evolution aspect is the co-change information, or the other files that were committed with this one across history. This information is reveal first in the header by listing all the files that were co-changed most often with the current one. But, we can also get more information about each revision through a popup view showing the files committed together with this one: Each file is shown as a horizontal line (the current one being the first) and for each revision for each file is marked with a vertical gray line. The revisions that involved co-changes with the current file are marked with black lines. In this way co-change is put in historical perspective.
The goal of Kumpel is to support the understanding of evolutionary processes, both from the point of view of how the structure evolved and from the point of view of how the authors worked on the files.
Here are some more examples. In this one, we can see how, as opposed to the blame.c example, in this case the work was predominated by only one author. In another case, the files are mainly written by chunks with only little modifications applied to existing code. In yet another case, a complete file can be affected from as part of a large modification.
That’s a short overview of Kumpel. More information about Kumpel and Moose (the analysis platform Kumpel is built on) can be found at: www.moosetechnology.org. Thanks for watching.
A demo version, including the Subversion case study, can be downloaded from: http://moose.unibe.ch/resources/download/kumpel-demo.zip