Hey everyone,
I was curious about the development activity in a few key Hive repositories, so I decided to take a peek at their commit history over the years. This led me down a fun little path of data visualization using a couple of common command-line tools.
To start, I needed a way to extract the year of every commit in a repository. A simple git
command does the trick. This command gets the commit dates, formats them to show only the year, sorts them, and then counts the number of unique entries for each year.
git log --pretty='format:%cd' --date=format:'%Y' | sort | uniq -c
The output looks something like this:
11 2016
257 2017
939 2018
140 2019
358 2020
57 2021
175 2025
With that data saved to a file, I could then use a simple gnuplot
script to create a nice chart.
gnuplot -p <<-GNUPLOT
set grid
set term pngcairo size 1000, 300
set output 'commits.png'
set title 'hive-nectar'
unset key
plot 'data.dat' using 1:2 with linespoints lw 2 lc rgb 'black'
GNUPLOT
Here's the result for my hive-nectar
library. Since it's a fork of beem
, it includes a lot of history before I took it over. Only the 2025 commits are mine.
Now that I had the basic process down, I expanded it into a reusable Bash script to make it easier to run on any repository with different options. Grab the Gist Here
#!/usr/bin/env bash
set -euo pipefail
# Default options
OUTPUT="commits.png"
TITLE="Number of commits in the repository over time"
START_YEAR=""
REPO_DIR="."
WIDTH=1000
HEIGHT=300
NO_CLEANUP=false
usage() {
cat <<EOF
Usage: $(basename "$0") [options]
Options:
-o, --output FILE Output image file (default: commits.png)
-s, --start YEAR Start year (inclusive; optional)
-t, --title STRING Plot title (default: Number of commits in the repository over time)
-d, --dir DIRECTORY Repository directory (default: current)
-w, --width PIXELS Width of the PNG image (default: 1000)
-H, --height PIXELS Height of the PNG image (default: 300)
--no-cleanup Do not remove temporary data file
-h, --help Show this help
EOF
}
# Parse CLI arguments
while [[ $# -gt 0 ]]; do
case "$1" in
-o | --output)
OUTPUT="$2"
shift 2
;;
-s | --start)
START_YEAR="$2"
shift 2
;;
-t | --title)
TITLE="$2"
shift 2
;;
-d | --dir)
REPO_DIR="$2"
shift 2
;;
-w | --width)
WIDTH="$2"
shift 2
;;
-H | --height)
HEIGHT="$2"
shift 2
;;
--no-cleanup)
NO_CLEANUP=true
shift
;;
-h | --help)
usage
exit 0
;;
--)
shift
break
;;
-*)
echo "Unknown option: $1" >&2
usage
exit 1
;;
*)
break
;;
esac
done
# Create temporary data file
DATA_FILE="$(mktemp)"
if [[ "$NO_CLEANUP" != true ]]; then
trap 'rm -f "$DATA_FILE"' EXIT
fi
# Build data: year count pairs
if [[ -n "${START_YEAR:-}" ]]; then
START_YEAR_INT="$(printf "%d" "$START_YEAR" 2>/dev/null || printf "")"
if [[ -z "$START_YEAR_INT" ]]; then
echo "Invalid start year: $START_YEAR" >&2
exit 1
fi
git -C "$REPO_DIR" log --pretty='format:%cd' --date=format:'%Y' |
sort |
uniq -c |
awk -v s="$START_YEAR_INT" '$2>=s {print $2, $1}' >"$DATA_FILE"
else
git -C "$REPO_DIR" log --pretty='format:%cd' --date=format:'%Y' |
sort |
uniq -c |
awk '{print $2, $1}' >"$DATA_FILE"
fi
if [[ ! -s "$DATA_FILE" ]]; then
echo "No commit data available for the specified options." >&2
exit 0
fi
# Plot with gnuplot (using a here-doc for readability)
gnuplot -p <<-GNUPLOT
set grid
set term pngcairo size ${WIDTH},${HEIGHT}
set output '${OUTPUT}'
set title '${TITLE}'
unset key
plot '${DATA_FILE}' using 1:2 with linespoints lw 2 lc rgb 'black'
GNUPLOT
# If requested, keep the data file; otherwise, the trap will remove it
if [[ "$NO_CLEANUP" = true ]]; then
trap - EXIT
echo "Temporary data file kept at: ${DATA_FILE}"
fi
With the new script, I ran it on a few other key repositories.
What's interesting is the general trend across most of these projects: the number of commits seems to have dropped over time. This suggests two things to me. One, it could mean that the codebases have stabilized and don't require as much work to fix issues as they did in their early days. Two, it might also reflect what many of us have felt: the active developer community has been shrinking. It's likely a combination of both. It is nice to see an upward trend in the Hive-Engine developer community though.
As always,
Michael Garcia a.k.a. TheCrazyGM
Congratulations @thecrazygm! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)
Your next target is to reach 700 comments.
You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOP