Rings
facebook/react
first ring May 2013 · 160 rings · 21,620 commits · 2,085 hands · cut at 7dfc7cc, 2026-08-03
How to read this
Every mark is a git factTap the wood for its period, its subsystem and the commits behind them.
- 1Pith The first commit. It drifts toward whichever subsystem took the work.
- 2Ring One period. Width is that period's churn, log-scaled against the busiest one.
- 3Wedge A top-level directory. Arc = its share of lifetime churn, largest at 12 o'clock.
- 4Sealed pocket A directory that stopped and is gone from HEAD.
- 5Knot A branch that lived 30 days or more and carried 3+ commits, then merged.
- 6Scar A period where reverts crossed 5% of its commits.
- 7Bark Thickness = distinct authors of the last 12 periods. Counted, never named.
- 160
- rings, one per month
- 21,620
- commits
- 2,085
- hands
- 27
- knots
- 4
- scars
- Cyanotype
- ink
Share it
The wedges
| Top-level path | Share of lifetime churn | At HEAD |
|---|---|---|
| compiler | 37.2% | present |
| packages | 31.5% | present |
| src | 11.3% | sealed pocket |
| fixtures | 6.0% | present |
| docs | 5.2% | sealed pocket |
| scripts | 2.7% | present |
| / | 2.1% | present |
| extension | 1.4% | sealed pocket |
Cut yours
npx busfactor ringsOffline, no signup, nothing uploaded. Private repositories included.What every mark counts
| Mark | Git fact | How it is counted |
|---|---|---|
| One ring | One period of the repo's life | commit author dates, UTC |
| Ring width | Lines added + removed that period, log-scaled against the busiest period | git log --numstat |
| Tight band | A quiet period | same |
| Wide flush | A rewrite or a big push | same |
| Dark ring edge | Latewood: darker where the period was busier | same |
| Wedge | A top-level directory; arc = its share of lifetime churn, largest at 12 o'clock going clockwise | numstat path prefixes |
| Bright grain | That directory dominated that period's churn | per-period churn share |
| Knot | A merged branch that lived >= 30 days with >= 3 commits, sitting in the subsystem it touched most | merge parents, walked |
| Scar | A period where reverts were >= 5% of commits and >= 3 of them | commit subjects starting with revert or reverted |
| Sealed pocket | A top-level directory that stopped and is gone from HEAD | git ls-tree HEAD |
| Off-centre pith | The trunk leans toward wherever the work moved | dominant wedge per period, accumulated |
| Lighter outer wood | Sapwood: the last 12 periods | ring index |
| Bark thickness | Distinct author emails in the sapwood window | hashed locally, counted, never named |
| Ink | The language family whose files were touched most often | numstat rows by file extension |