BUSFACTOR.TECH
Rings

burntsushi/ripgrep

first ring February 2016 · 127 rings · 2,284 commits · 497 hands · cut at 7525479, 2026-08-03

burntsushi/ripgrep as a tree-trunk cross-section
How to read this
Every mark is a git fact
1234567
  1. 1Pith The first commit. It drifts toward whichever subsystem took the work.
  2. 2Ring One period. Width is that period's churn, log-scaled against the busiest one.
  3. 3Wedge A top-level directory. Arc = its share of lifetime churn, largest at 12 o'clock.
  4. 4Sealed pocket A directory that stopped and is gone from HEAD.
  5. 5Knot A branch that lived 30 days or more and carried 3+ commits, then merged.
  6. 6Scar A period where reverts crossed 5% of its commits.
  7. 7Bark Thickness = distinct authors of the last 12 periods. Counted, never named.
Tap the wood for its period, its subsystem and the commits behind them.
127
rings, one per month
2,284
commits
497
hands
0
knots
0
scars
Ultramarine
ink

Share it

The wedges

Top-level pathShare of lifetime churnAt HEAD
crates27.8%present
src16.0%sealed pocket
grep9.7%sealed pocket
/8.3%present
ignore5.8%sealed pocket
tests4.9%present
grep-printer4.8%sealed pocket
grep-searcher4.4%sealed pocket

Cut yours

npx busfactor ringsOffline, no signup, nothing uploaded. Private repositories included.

What every mark counts

MarkGit factHow it is counted
One ringOne period of the repo's lifecommit author dates, UTC
Ring widthLines added + removed that period, log-scaled against the busiest periodgit log --numstat
Tight bandA quiet periodsame
Wide flushA rewrite or a big pushsame
Dark ring edgeLatewood: darker where the period was busiersame
WedgeA top-level directory; arc = its share of lifetime churn, largest at 12 o'clock going clockwisenumstat path prefixes
Bright grainThat directory dominated that period's churnper-period churn share
KnotA merged branch that lived >= 30 days with >= 3 commits, sitting in the subsystem it touched mostmerge parents, walked
ScarA period where reverts were >= 5% of commits and >= 3 of themcommit subjects starting with revert or reverted
Sealed pocketA top-level directory that stopped and is gone from HEADgit ls-tree HEAD
Off-centre pithThe trunk leans toward wherever the work moveddominant wedge per period, accumulated
Lighter outer woodSapwood: the last 12 periodsring index
Bark thicknessDistinct author emails in the sapwood windowhashed locally, counted, never named
InkThe language family whose files were touched most oftennumstat rows by file extension