using codeswarm: watch a video about drupal core history

(for the impatient: look at the embed video at the end of the post)

codeswarm is a java project that let you process a version control system log(many are supported) to generate a video that try to make graphics about how the development has happened.

Yannick, lead dokeos developer(who made one video for dokeos project), told me about codeswarm project and after some time I made a first try video for drupal, based on CVS log, like codeswarm project suggest.

Basically you need to cvs log and then pass that to a codeswarm python script which generate an xml file. You also need to write a config file for passing it to the codeswarm script. This script generate a lot of PNGs that are needed to construct the video.

With the PNGs you make the video using a video encoder(a made a flv directly to avoid losing quality):

mencoder mf://*.png -mf fps=24:type=png -ovc lavc -ofps 25 -srate 22050 -ofps 24 -vf harddup -lavcopts vcodec=flv:vbitrate=200:cbp:mv0:mbd=2:trell:v4mv:last_pred=3:vpass=1 -oac copy -o drupalfull-git-logs-intento2.flv
mencoder mf://*.png -mf fps=24:type=png -ovc lavc -ofps 25 -srate 22050 -ofps 24 -vf harddup -lavcopts vcodec=flv:vbitrate=200:cbp:mv0:mbd=2:trell:v4mv:last_pred=3:vpass=2 -oac copy -o drupalfull-git-logs-intento2.flv

(really not sure if I need two-pass from PNGs.. :-p)

Well, time pass by, Greg posted three blog entries about D7 branch statistics making me remeber codeswarm, so I made a second try, but now I have more tools :-) and I was inspired in Greg work.

What I have done:

  • I tried to write a custom log parser(see attached files) for drupal(trying to extract credit from it). And in this way hack codeswarm, which was made for one user per commit, to recognize many users per commit(duplicating the timestamp as needed). It's not perfect(see TODO inside getauthors.php), but made a good job.
  • I was using a own script to generate the xml, so why not use a handy tool to make the log: I used drupalfr drupal core git clone(aka DamZ git clone) and git-log/git-whatchanged.

That result in the second try video about only D7(original reference on forum).

Finally, I try to contact directly Greg and Angie to see if I was not losing the time :-p, and both they give me good feedback, so I made one more version.

I was playing a lot with codeswarm configuration options and colors to get a good and readable representation of the log, and after one day I got a new video, that I show you here:

There you can see how drupal development have grown up :-)

Update: I've changed the video to, and also use another command to encode it as recommends, so I also updated the tar-gz for include an script to do so.


The date is a little bit small (it starts in 2000) but I still think this application is a great tool. Somehow, it should be auto-generated and integrated into some kind of continuous integration portal, just to push the community effort forward a little bit more. After all, it's just executing a series of scripts one after another.

I suppose it's possible, but after making more perfect the log parser :-p

Thanks for present me codeswarm