{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction\n", "The nice thing about reproducible data analysis (like I'm trying to do it here on my blog) is, well, that you can quickly reproduce or even replicate an analysis.\n", "\n", "So, in this blog post/notebook, I transfer the analysis of [\"Developers' Habits (IntelliJ Edition)\"](https://www.feststelltaste.de/developers-habits-intellij-edition/) to another project: The famous open-source operating system Linux. Again, we want to take a look at how much information you can extract from a simple [Git log](https://git-scm.com/docs/git-log) output. This time we want to know\n", "\n", "* where the developers come from\n", "* on which weekdays the developers work\n", "* what the normal working hours are and\n", "* if there is any sight of overtime periods.\n", "\n", "Because we use an open approach for our analysis, we are able to respond to newly created insights. Again, we use [Pandas](https://pandas.pydata.org/) as data analysis toolkit to accomplish these tasks and execute our code in a [Juypter notebook](http://jupyter.org/) (find the [original on GitHub](\"https://github.com/feststelltaste/software-analytics/blob/master/notebooks/Developers'%20Habits%20(Linux%20Edition).ipynb\"). We also see some refactorings by leveraging Pandas' date functionality a little bit more.\n", "\n", "So let's start!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Gaining the data\n", "\n", "I've already described the details on how to get the necessary data in my [previous blog post](https://www.feststelltaste.de/developers-habits-intellij-edition/). What we have at hand is a nice file with the following contents:\n", "\n", "```\n", "1514531161 -0800\tLinus Torvalds\ttorvalds@linux-foundation.org\n", "1514489303 -0500\tDavid S. Miller\tdavem@davemloft.net\n", "1514487644 -0800\tTom Herbert\ttom@quantonium.net\n", "1514487643 -0800\tTom Herbert\ttom@quantonium.net\n", "1514482693 -0500\tWillem de Bruijn\twillemb@google.com\n", "...\n", "```\n", "\n", "It includes the UNIX timestamp (in seconds since epoch), a whitespace, the time zone (where the authors live in), a tab separator, the name of the author, a tab and the email address of the author. The whole log shows 13 years of Linux development that is available on [GitHub repository mirror](https://github.com/torvalds/linux)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Wrangling the raw data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We import the data by using Pandas' `read_csv` function and the appropriate parameters. We copy only the needed data from the `raw` dataset into the new DataFrame `git_authors`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
timestamp_localtimezoneauthor
02017-12-31 14:47:43-0800Linus Torvalds
12017-12-31 13:13:56-0800Linus Torvalds
22017-12-31 13:03:05-0800Linus Torvalds
32017-12-31 12:30:34-0800Linus Torvalds
42017-12-31 12:29:02-0800Linus Torvalds
\n", "
" ], "text/plain": [ " timestamp_local timezone author\n", "0 2017-12-31 14:47:43 -0800 Linus Torvalds\n", "1 2017-12-31 13:13:56 -0800 Linus Torvalds\n", "2 2017-12-31 13:03:05 -0800 Linus Torvalds\n", "3 2017-12-31 12:30:34 -0800 Linus Torvalds\n", "4 2017-12-31 12:29:02 -0800 Linus Torvalds" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "raw = pd.read_csv(\n", " r'../../linux/git_timestamp_author_email.log',\n", " sep=\"\\t\",\n", " encoding=\"latin-1\",\n", " header=None,\n", " names=['unix_timestamp', 'author', 'email'])\n", "\n", "# create separate columns for time data\n", "raw[['timestamp', 'timezone']] = raw['unix_timestamp'].str.split(\" \", expand=True)\n", "# convert timestamp data\n", "raw['timestamp'] = pd.to_datetime(raw['timestamp'], unit=\"s\")\n", "# add hourly offset data\n", "raw['timezone_offset'] = pd.to_numeric(raw['timezone']) / 100.0\n", "# calculate the local time\n", "raw[\"timestamp_local\"] = raw['timestamp'] + pd.to_timedelta(raw['timezone_offset'], unit='h')\n", "\n", "# filter out wrong timestamps\n", "raw = raw[\n", " (raw['timestamp'] >= raw.iloc[-1]['timestamp']) &\n", " (raw['timestamp'] <= pd.to_datetime('today'))]\n", "\n", "git_authors = raw[['timestamp_local', 'timezone', 'author']].copy()\n", "git_authors.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Refining the dataset\n", "In this section, we add some additional time-based information to the `DataFrame` to accomplish our tasks." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding weekdays\n", "First, we add the information about the weekdays based on the `weekday_name` information of the `timestamp_local` column. Because we want to preserve the order of the weekdays, we convert the `weekday` entries to a `Categorial` data type, too. The order of the weekdays is taken from the `calendar` module.\n", "\n", "Note: We can do this so easily because we have such a large amount of data where every weekday occurs. If we can't be sure to have a continuous sequence of weekdays, we have to use something like the `pd.Grouper` method to fill in missing weekdays." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
timestamp_localtimezoneauthorweekday
02017-12-31 14:47:43-0800Linus TorvaldsSunday
12017-12-31 13:13:56-0800Linus TorvaldsSunday
22017-12-31 13:03:05-0800Linus TorvaldsSunday
32017-12-31 12:30:34-0800Linus TorvaldsSunday
42017-12-31 12:29:02-0800Linus TorvaldsSunday
\n", "
" ], "text/plain": [ " timestamp_local timezone author weekday\n", "0 2017-12-31 14:47:43 -0800 Linus Torvalds Sunday\n", "1 2017-12-31 13:13:56 -0800 Linus Torvalds Sunday\n", "2 2017-12-31 13:03:05 -0800 Linus Torvalds Sunday\n", "3 2017-12-31 12:30:34 -0800 Linus Torvalds Sunday\n", "4 2017-12-31 12:29:02 -0800 Linus Torvalds Sunday" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import calendar\n", "\n", "git_authors['weekday'] = git_authors[\"timestamp_local\"].dt.weekday_name\n", "git_authors['weekday'] = pd.Categorical(\n", " git_authors['weekday'], \n", " categories=calendar.day_name,\n", " ordered=True)\n", "git_authors.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding working hours\n", "For the working hour analysis, we extract the `hour` information from the `timestamp_local` column. \n", "\n", "Note: Again, we assume that every hour is in the dataset." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
timestamp_localtimezoneauthorweekdayhour
02017-12-31 14:47:43-0800Linus TorvaldsSunday14
12017-12-31 13:13:56-0800Linus TorvaldsSunday13
22017-12-31 13:03:05-0800Linus TorvaldsSunday13
32017-12-31 12:30:34-0800Linus TorvaldsSunday12
42017-12-31 12:29:02-0800Linus TorvaldsSunday12
\n", "
" ], "text/plain": [ " timestamp_local timezone author weekday hour\n", "0 2017-12-31 14:47:43 -0800 Linus Torvalds Sunday 14\n", "1 2017-12-31 13:13:56 -0800 Linus Torvalds Sunday 13\n", "2 2017-12-31 13:03:05 -0800 Linus Torvalds Sunday 13\n", "3 2017-12-31 12:30:34 -0800 Linus Torvalds Sunday 12\n", "4 2017-12-31 12:29:02 -0800 Linus Torvalds Sunday 12" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "git_authors['hour'] = git_authors['timestamp_local'].dt.hour\n", "git_authors.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Analyzing the data\n", "With the prepared `git_authors` DataFrame, we are now able to deliver insights into the past years of development." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Developers' timezones\n", "First, we want to know where the developers roughly live. For this, we plot the values of the `timezone` columns as a pie chart." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "timezones = git_authors['timezone'].value_counts()\n", "timezones.plot(\n", " kind='pie',\n", " figsize=(7,7),\n", " title=\"Developers' timezones\",\n", " label=\"\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Result**\n", "\n", "The majority of the developers' commits come from the time zones +0100, +0200 and -0700. With most commits coming probably from the West Coast of the USA, this might just be an indicator that [Linus Torvalds](https://en.wikipedia.org/wiki/Linus_Torvalds) lives there ;-) . But there are also many commits from developers within Western Europe." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Weekdays with the most commits\n", "\n", "Next, we want to know on which days the developers are working during the week. We count by the weekdays but avoid sorting the results to keep the order along with our categories. We plot the result as a standard bar chart." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = git_authors['weekday'].\\\n", " value_counts(sort=False).\\\n", " plot(\n", " kind='bar',\n", " title=\"Commits per weekday\")\n", "ax.set_xlabel('weekday')\n", "ax.set_ylabel('# commits')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Result** \n", "\n", "Most of the commits occur during normal working days with a slight peak on Wednesday. There are relatively few commits happening on weekends." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Working behavior of the main contributor\n", "It would be very interesting and easy to see when Linus Torvalds (the main contributor to Linux) is working. But we won't do that because the yet unwritten codex of Software Analytics does tell us that it's not OK to analyze a single person's behavior – especially when such an analysis is based on an uncleaned dataset as we have it here." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Usual working hours\n", "To find out about the working habits of the contributors, we group the commits by `hour` and count the entries (in this case we choose `author`) to see if there are any irregularities. Again, we plot the results with a standard bar chart." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = git_authors\\\n", " .groupby(['hour'])['author']\\\n", " .count().plot(kind='bar')\n", "ax.set_title(\"Distribution of working hours\")\n", "ax.yaxis.set_label_text(\"# commits\")\n", "ax.xaxis.set_label_text(\"hour\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Result**\n", "\n", "The distribution of the working hours is interesting:\n", "- First, we can clearly see that there is a dent around 12:00. So this might be an indicator that developers have lunch at regular times (which is a good thing IMHO).\n", "- Another not so typical result is the slight rise after 20:00. This could be interpreted as the development activity of free-time developers that code for Linux after their day-time job. \n", "- Nevertheless, most of the developers seem to get a decent amount of sleep indicated by low commit activity from 1:00 to 7:00." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Signs of overtime \n", "\n", "At last, we have a look at possible overtime periods by creating a simple model. We first group all commits on a weekly basis per authors. As grouping function, we choose `max()` to get the hour where each author committed at latest per week." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
hour
timestamp_localauthor
2005-04-17Adrian Bunk15
Alexander Nyberg15
Andi Kleen15
Andrea Arcangeli15
Andrew Vasquez15
\n", "
" ], "text/plain": [ " hour\n", "timestamp_local author \n", "2005-04-17 Adrian Bunk 15\n", " Alexander Nyberg 15\n", " Andi Kleen 15\n", " Andrea Arcangeli 15\n", " Andrew Vasquez 15" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "latest_hour_per_week = git_authors.groupby(\n", " [\n", " pd.Grouper( key='timestamp_local', freq='1w'), \n", " 'author'\n", " ]\n", " )[['hour']].max()\n", "\n", "latest_hour_per_week.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we want to know if there were any stressful time periods that forced the developers to work overtime over a longer period of time. We calculate the mean of all late stays of all authors for each week." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
hour
timestamp_local
2005-04-1714.956522
2005-04-2416.494382
2005-05-0112.349398
2005-05-0815.979798
2005-05-1515.984127
\n", "
" ], "text/plain": [ " hour\n", "timestamp_local \n", "2005-04-17 14.956522\n", "2005-04-24 16.494382\n", "2005-05-01 12.349398\n", "2005-05-08 15.979798\n", "2005-05-15 15.984127" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_latest_hours_per_week = \\\n", " latest_hour_per_week \\\n", " .reset_index().groupby('timestamp_local').mean()\n", "mean_latest_hours_per_week.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also create a trend line that shows how the contributors are working over the span of the past years. We use the `polyfit` function from `numpy` for this which needs a numeric index to calculate the polynomial coefficients later on. We then calculate the coefficients with a three-dimensional polynomial based on the hours of the `mean_latest_hours_per_week` DataFrame. For visualization, we decrease the number of degrees and calculate the y-coordinates for all weeks that are encoded in `numeric_index`. We store the result in the `mean_latest_hours_per_week` DataFrame.\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
hourtrend
timestamp_local
2005-04-1714.95652214.742989
2005-04-2416.49438214.743842
2005-05-0112.34939814.744694
2005-05-0815.97979814.745545
2005-05-1515.98412714.746396
\n", "
" ], "text/plain": [ " hour trend\n", "timestamp_local \n", "2005-04-17 14.956522 14.742989\n", "2005-04-24 16.494382 14.743842\n", "2005-05-01 12.349398 14.744694\n", "2005-05-08 15.979798 14.745545\n", "2005-05-15 15.984127 14.746396" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "numeric_index = range(0, len(mean_latest_hours_per_week))\n", "coefficients = np.polyfit(numeric_index, mean_latest_hours_per_week.hour, 3)\n", "polynomial = np.poly1d(coefficients)\n", "ys = polynomial(numeric_index)\n", "mean_latest_hours_per_week['trend'] = ys\n", "mean_latest_hours_per_week.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At last, we plot the `hour` results of the `mean_latest_hours_per_week` DataFrame as well as the `trend` data in one line plot." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n+P/qZmYZyRf27QAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = mean_latest_hours_per_week[['hour', 'trend']].plot(\n", " figsize=(10, 6), \n", " color=['grey','blue'], \n", " title=\"Late hours per weeks\")\n", "ax.set_xlabel(\"time\")\n", "ax.set_ylabel(\"hour\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Result**\n", "\n", "We see no sign of significant overtime periods over 13 years of Linux development. Shortly after the creation of the Git mirror repository, there might have been a time with some irregularities. But overall, there are no signs of death marches. It seems that the Linux development team has established a stable development process." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Closing remarks\n", "\n", "Again, we've seen that various metrics and results can be easily created from a simple Git log output file. With Pandas, it's possible to get to know the habits of the developers of software projects. Thanks to Jupyter's open notebook approach, we can easily adapt existing analysis and add situation-specific information to it as we go along." ] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.2" }, "toc": { "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "toc_cell": true, "toc_position": { "height": "441px", "left": "0px", "right": "1040.17px", "top": "107px", "width": "212px" }, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }