master
Joey Hess 2008-07-11 09:58:19 -04:00
parent 810a355308
commit 5e28259642
4 changed files with 110 additions and 0 deletions

View File

@ -0,0 +1,34 @@
I've produced a [code_swarm](http://vis.cs.ucdavis.edu/~ogawa/codeswarm/)
visualization of the first 2+ years of ikiwiki's commit history.
[[img screenshot.png size="320x240"]]
* [50 MB ogg vorbis](http://kitenet.net/~joey/screencasts/ikiwiki_swarm.ogg)
* high quality version not yet uploaded
PS, while I'm posting links to videos, here's a
[video of a lightning talk about ikiwiki](http://log.hugoschotman.com/hugo/2008/07/webtuesday-2008-07-08-lightning-talk-by-axel-beckert-about-ikiwiki.html).
--[[Joey]]
### notes
Interesting things to watch for:
* Initial development of ikiwiki to the point it was getting web edits.
(First 2 seconds of video!)
* Introduction to plugin support, and later, plugin changes dominating code
changes.
* Introduction of openid support and the resulting *swarm* of openid
commenters.
* Switch to git, my name in the logs changes from "joey" to "Joey Hess",
and there are more code commits directly from others.
Getting the commit log was tricky because every web commit is in there too,
so it has to deal with things like IPs and openids. The [[code_swarm_log.pl]]
script will munge the log to handle these, and it was configured with
[[code_swarm.cfg]].
Video editing by kino, ffmpeg, ffmpeg2theora, and too many hours of pain.
Audio by the Punch Brothers.

View File

@ -0,0 +1,51 @@
# This is a sample configuration file for code_swarm for ikiwiki
# Frame width
Width=640
# Frame height
Height=480
# Input file
InputFile=data/sample-repevents.xml
# Particle sprite file
ParticleSpriteFile=particle.png
# Project time per frame
MillisecondsPerFrame=21600000
#MillisecondsPerFrame=43200000
# Background in R,G,B
Background=0,0,0
# Color assignment rules
# Keep in order, do not skip numbers. Numbers start
# at 1.
#
# Pattern: "Label", "regex", R,G,B R,G,B
# Label is optional. If it is omitted, the regex
# will be used.
#
ColorAssign1="Discussion (blue)",".*discussion.*", 0,0,255, 0,0,255
ColorAssign2="Docs (green)",".*\.mdwn", 255,0,0, 255,0,0
ColorAssign3="Plugins (orange)",".*Plugin/.*", 255,116,0, 255,116,0
ColorAssign4="Code (red)",".*\.p[ml]", 0,255,0, 0,255,0
# Save each frame to an image?
TakeSnapshots=true
# Where to save each frame
SnapshotLocation=frames/code_swarm-#####.png
# Create a glow around names? (Runs slower)
NameHalos=false
# Natural distance of files to people
EdgeLength=40
debug=false
# OpenGL is experimental. Use at your own risk.
UseOpenGL=false

View File

@ -0,0 +1,25 @@
#!/usr/bin/perl
# Munge a git log into log for code_swarm.
# Deals with oddities of ikiwiki commits, like web commits, and openids.
use IkiWiki;
use IkiWiki::Plugin::openid;
my $sep='-' x 72;
$/=$sep."\n";
my %config=IkiWiki::defaultconfig();
foreach (`git-log --name-status --pretty=format:'%n$sep%nr%h | %an | %ai (%aD) | x lines%n%nsubject: %s%n'`) {
my ($subject)=m/subject: (.*)\n/m;
if ($subject=~m/$config{web_commit_regexp}/) {
my $user = defined $2 ? "$2" : "$3";
my $oiduser = IkiWiki::openiduser($user);
if (defined $oiduser) {
$oiduser=~s/ \[.*\]//; # too much clutter for code_swarm
$user=$oiduser;
}
s/ \| [^|]+ \| / | $user | /;
}
s/subject: (.*)\n\n//m;
print;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB