announce
authorJoey Hess <joey@kodama.kitenet.net>
Fri, 11 Jul 2008 13:58:19 +0000 (09:58 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Fri, 11 Jul 2008 13:58:19 +0000 (09:58 -0400)
doc/news/code_swarm.mdwn [new file with mode: 0644]
doc/news/code_swarm/code_swarm.config [new file with mode: 0644]
doc/news/code_swarm/code_swarm_log.pl [new file with mode: 0755]
doc/news/code_swarm/screenshot.png [new file with mode: 0644]

diff --git a/doc/news/code_swarm.mdwn b/doc/news/code_swarm.mdwn
new file mode 100644 (file)
index 0000000..6fab037
--- /dev/null
@@ -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 (file)
index 0000000..eea55de
--- /dev/null
@@ -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 (executable)
index 0000000..25e0a67
--- /dev/null
@@ -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 (file)
index 0000000..1178e3f
Binary files /dev/null and b/doc/news/code_swarm/screenshot.png differ