summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/news/code_swarm.mdwn34
-rw-r--r--doc/news/code_swarm/code_swarm.config51
-rwxr-xr-xdoc/news/code_swarm/code_swarm_log.pl25
-rw-r--r--doc/news/code_swarm/screenshot.pngbin0 -> 64320 bytes
4 files changed, 110 insertions, 0 deletions
diff --git a/doc/news/code_swarm.mdwn b/doc/news/code_swarm.mdwn
new file mode 100644
index 000000000..6fab03766
--- /dev/null
+++ b/doc/news/code_swarm.mdwn
@@ -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.
diff --git a/doc/news/code_swarm/code_swarm.config b/doc/news/code_swarm/code_swarm.config
new file mode 100644
index 000000000..eea55debd
--- /dev/null
+++ b/doc/news/code_swarm/code_swarm.config
@@ -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
diff --git a/doc/news/code_swarm/code_swarm_log.pl b/doc/news/code_swarm/code_swarm_log.pl
new file mode 100755
index 000000000..25e0a67b0
--- /dev/null
+++ b/doc/news/code_swarm/code_swarm_log.pl
@@ -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;
+}
diff --git a/doc/news/code_swarm/screenshot.png b/doc/news/code_swarm/screenshot.png
new file mode 100644
index 000000000..1178e3f64
--- /dev/null
+++ b/doc/news/code_swarm/screenshot.png
Binary files differ