GitHub punch card exploration

View source | View history | Atom feed for this file


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 (link no longer works) (~9,000 commits):

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

mod_pagespeed (link no longer works) (~5,000 commits):

Linux kernel (link no longer works) (~678,000 commits):

Git (link no longer works) (~47,000 commits):

Bootstrap (link no longer works) (~16,000 commits):

React (link no longer works) (~9,000 commits):

Redis (link no longer works) (~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 (link no longer works) (~5,000 commits):

Go (link no longer works) (~33,000 commits):

Tim Pope dotfiles (link no longer works) (~900 commits):

Justin M. Keyes dotfiles (link no longer works) (~900 commits):

Drew Neil dotfiles (link no longer works) (~500 commits): (link no longer works) (~11,000 commits):

Eevee’s website (link no longer works) (~400 commits):

vimtex (link no longer works) (~1,700 commits):

Vipul Naik’s contract work repo (link no longer works) (~1,000 commits):

Vipul Naik’s working drafts (link no longer works) (~1,000 commits):

Vipul Naik’s donations site (link no longer works) (~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).