Cyrus IMAP: What Happened When They Switched To GIT?
So recently Jeroen van Meeuwen asked me to take a look at Cyrus IMAP. He had been involved in their switch from CVS to GIT and was curious to see what the results looked like. Let’s start with the usual green blobs:
So, since I do not know precisely when the switch from CVS to GIT was made, I’m using Jeroen’s start date in the project (2010-09) as a rough guideline. Looking at the green blobs it is pretty clear that something happened after he joined the project. But let’s start by looking at what was going on before he joined.
Between 1993-07 and 2010-09 there were 25 accounts in CVS. Note: accounts and not contributors; clearly some of these accounts belong to the same person. For much of these first 7 years the project is also displaying what I refer to as “token-based development”; that is, in many weeks there is only one contributor (as if you had to hold a shared token to commit). I first noticed this phenomenon when studying Evince during my PhD and I have seen it only a couple of times since. I wish I could explain it.
Now, since 2010-09 we can see that 27 new accounts have contributed to the project; most are only around for one week (if we look deeper, I bet for only one or two commits) never to be seen again. Perhaps one of the effects of switching to GIT is that it is simply a lot easier for people to contribute? No brainer.
But I think there is slightly more at play here. How did Cyrus IMAP manage to get to its 17th anniversary and then basically double the size of its developer community just because of a switch to GIT? A project of such importance surely must have been attracting more folk before the switch to GIT… It is not like activity has increased significantly since the switch, right? Right?
Let’s take a look at some simple measures… Commit and Committers per month:
In the days after 2010-09 we can clearly see that commit rate (commits/day) has increased and so has the effort density (there is more activity on more days). But we are not seeing any significant increase in the number of contributors per day. So commit rate is up (not surprising, GIT encourages this and it is almost always exposed except where pushes are squashed) and committer rate is about the same.
Hang on! What about all those new folk we saw appear since the switch to GIT? Well, a typical week still only sees one or two contributors and these new contributors are mostly only hanging around for a few pushes (so they easily account for the days where the commuter rate increases to 2 or 3).
Here is what I think is going on… The switch from CVS to GIT has almost certainly made it easier for people to join and take part in the Cyrus IMAP community (even if only briefly). This accounts for some of the increased participation of new contributors. However, I suspect Cyrus IMAP in its first 17 years had way more contributors that the 25 we can see. My guess is that plenty people were submitting patches and that one of the 25 were applying them, thus losing the identity of the patch submitted in the CVS log.
So whilst switching to GIT has probably caused some growth, I think it is not as much growth as it may seem because the old CVS data hides the true scale of the community.
So what does the Cyrus IMAP community look like these days? This graph shows which contributors worked together (i.e. committed in at least one file together) during October 2010, the month after the switch. Everyone say “Hi” to the Cyrus IMAP community:
As the primary data store for Kolab data, Cyrus IMAP is a project close to my heart (but one that I really play no direct role in). If you would like to learn more and take part in the community check them out at their website or join in the discussion at #cyrus on Freenode.