GitHub punch card exploration


Each repository on GitHub has a punch card graph under /graphs/punch-card. This page looks at the punch card graphs of some projects, chosen mostly according to projects that interest me or that have many stars and commits.

Timezone issues

Note that apparently contribution graphs on GitHub are only timezone-aware after 2014-03-10:

When counting commits, we use the timezone information present in the timestamps for those commits. Pull requests and issues opened on the web will use the timezone of your browser. If you use the API you can also specify your timezone.

We don’t want to mess up your current contribution streaks, so only contributions after Monday 10 March 2014 (Temps Universel Coordonné) will be timezone-aware.

However since timezone-awareness is so important to punch cards, and since the display of punch card graphs does not interfere with GitHub’s stated reason for not implementing timezone-awareness for earlier periods (i.e. using timezone data on the punch card doesn’t mess up contribution streaks), it seems plausible that GitHub would be using the timezone data just for the punch cards anyway. So for projects with the bulk of commits in the past, it would be better to filter out the older commits, just to be sure that timezone nonsense does not affect the results (or to use something like Git-Pandas to generate the punch cards oneself). However, even for older projects a weekday/weekend split should be observable.


The images below are screenshots that I took from the respective repositories; credit goes to GitHub for producing them. The screenshots were taken on 2017-05-18 and 2017-05-19.

Note from 2017-11-19: It seems that shortly after I created this page, GitHub took away the punch card graphs from repositories, so the links below to punch cards will not work.

Neovim (~9,000 commits):

Vim (~7,000 commits; only Bram Moolenaar seems to have commit privileges, so this provides a contrast with the Neovim graph):

mod_pagespeed (~5,000 commits):

Linux kernel (~678,000 commits):

Git (~47,000 commits):

Bootstrap (~16,000 commits):

React (~9,000 commits):

Redis (~6,000 commits; Salvatore Sanfilippo’s commits dominate the repository by far, and he works on Redis as his day job, so a clear 9am–6pm “box” appears on weekdays):

Lua (~5,000 commits):

Go (~33,000 commits):

Tim Pope dotfiles (~900 commits):

Justin M. Keyes dotfiles (~900 commits):

Drew Neil dotfiles (~500 commits): (~11,000 commits):

Eevee’s website (~400 commits):

vimtex (~1,700 commits):

Vipul Naik’s contract work repo (~1,000 commits):

Vipul Naik’s working drafts (~1,000 commits):

Vipul Naik’s donations site (~300 commits):

Some quick impressions from the plots (ideally I could spend more time looking at even more plots to reach more robust conclusions, but I don’t know if I want to do that):


Thanks to Vipul Naik for suggesting that I write something up about GitHub punch cards. He also allowed me to count the time I spent on this page toward my work hours, for which I receive a stipend (however he did not provide task payment beyond this stipend).