Does Community Matter (Oh and GIT is Frickin' Cool BTW)

Stephen Connolly's picture

Let me start by saying some of the flexibility that GIT gives you is just awesome. Take the following command:

    $ git log --since="1 year ago" --pretty=format:"%an" | sort | uniq -c | sort -nr

That will print out a list of all the authors of commits to a GIT repository along with the number of commits for the last 1 year (Hint: if you want to see who made the commits as opposed to who authored them, change the %an to %cn)

Now that gives us something interesting… A quick bit of shell tweaking and we get the following set of commands:

    $ git log --since="1 year ago" --pretty=format:"%an" | sort | uniq -c | sort -nr > all-counts.dat

    $ echo commits,author > top-counts.dat && \
    head -n 10 all-counts.dat >> top-counts.dat && \
    tail -n+11 all-counts.dat | \
    awk '{total=total+$1;count=count+1}END{print total " Others (" count ")"}' >> top-counts.dat && \
    sed -e 's/ *\([0-9]*\) \(.*\)/\1,"\2"/' < top-counts.dat > graph.dat

Using R we can then plot a nice bar graph:

   d<-read.table("graph.dat",header=TRUE,sep=",")
    png("graph.png")
    barplot(d$commits,names.arg=d$author,cex.names=0.7,las=2,col=rainbow(10),ylab="Number of commits",main="Commit authors")
    dev.off()
    q()

Throw that all together, and let’s take it out for a spin on… Jenkins:

Graph

Let’s try some more, eh!

Well we should probably take a look at Mr Jenkins brother

Graph

How does CruiseControl fair?

 

Graph

Well I don’t know about you, but if I were picking a CI server, based on the above three graphs, I think I know which one I’d be choosing.

Let’s try something I don’t have a stake in though…

CSS baselines:

Bootstrap from Twitter

Graph

Foundation from zurb

Graph

OK, so Bootstrap is mostly one committer, while Foundation is more evenly spread across four committers.

What about JavaScript

Backbone.js

Graph

ember.js

Graph

We’re not exactly comparing like with like, but these are both projects addressing the similar problem spaces… and you know what, they seem to have similar community profiles.

Let’s take some more from Java 

Apache Maven

Graph

Eclipse Aether

Graph

Jackson (The JSON parser)

Graph

Logback

Graph

Apache Cassandra

Graph

 

—Stephen Connolly
CloudBees
www.cloudbees.com

Stephen Connolly has nearly 20 years experience in software development. He is involved in a number of open source projects, including Jenkins. Stephen was one of the first non-Sun committers to the Jenkins project and developed the weather icons. Stephen lives in Dublin, Ireland - where the weather icons are particularly useful. Follow Stephen on Twitter and on his blog.

Comments

Nice :) Here's how to generate the same from within an xwiki instance so that you have constantly fresh data: http://extensions.xwiki.org/xwiki/bin/view/Extension/Git+Module It uses jgit and gitective.

Hey that is neat. I wonder if we could get that put somewhere on developer.cloudbees.com

Add new comment