Sighttrue
Last reading 2026-08-07 14:41 UTC age unavailable without scripting

Six things a repository cannot tell you.

A project can have commits this week and a package nobody has shipped in two years. A base image can weigh two hundred times its lightest sibling. A name one keystroke from something you install every day can already be taken. Read from the package registries, Docker Hub, OSV and Stack Overflow.

Last actually shipped

Read from the registries, not from git. Every "is this maintained" badge in circulation reads a repository’s last push — but a push is what a maintainer does for themselves, and a release is what reaches the projects depending on them. The two come apart constantly.

158Packages read
31Median days since release
22Silent over a year
Longest without a release
Package Registry Days quiet Last version
rails npm 4649 4.1.0-beta
lnd npm 3595 0.0.2
babel npm 3462 6.23.0
kibana npm 3349 5.1.1
hapi npm 2741 18.1.0
faiss pypi 2670 1.5.3
openzeppelin-contracts npm 2053 4.0.0
onnxruntime npm 1984 1.7.0
kustomize npm 1556 4.5.4
apache-iceberg pypi 1378 0.0.3
@tanstack/router npm 1292 0.0.1-beta.53
bellman crates 1236 0.14.0
tokenizers npm 1181 0.13.3
walletconnect-monorepo npm 1141 2.8.2
redux npm 958 5.0.1
crates median 38 days
npm median 30 days
pypi median 24 days

What the first line of your Dockerfile costs

A tag is a moving target — the image behind it today is not the one behind it last month. That is why the rebuild date is here: a tag nobody has rebuilt in months is shipping months of unpatched distribution packages, and it looks identical to one built this morning. Sizes are what Docker Hub reports for the compressed image.

39Tags read
15Official images
180Days since the stalest rebuild
Heaviest tags, against the lightest tag of the same image
Tag Size Over its lightest sibling Days since rebuild
rust:1 597 MB +274 MB 1
ruby:3.4 421 MB +378 MB 1
python:3.13 413 MB +396 MB 1
python:3.12 411 MB +394 MB 1
node:24 409 MB +351 MB 1
node:22 408 MB +351 MB 1
rust:1-alpine 352 MB +29 MB 21
mongo:8 337 MB lightest 15
golang:1.24 324 MB +241 MB 180
rust:1-slim 323 MB lightest 2
Longest since the image behind the tag was rebuilt
Tag Days since rebuild Size
golang:1.24 180 324 MB
golang:1.24-alpine 180 83 MB
alpine:latest 52 4 MB
python:3.13-alpine 50 17 MB
alpine:3.22 45 4 MB
caddy:2-alpine 44 24 MB

Names one keystroke away

These names exist on npm and are one edit from a package people install. That is the entire claim. None of them is being called malicious, and none should be read that way — near names are routinely forks, ports, translations, or somebody’s abandoned first attempt. Only deletions and transpositions are swept, so this finds fewer than exist and never claims to be a complete list.

123Neighbouring names that exist
31Packages swept
Real package, and the names on npm one edit from it
Package Neighbours Names that exist
bootstrap 15 boostrap, boosttrap, bootsrap, bootsrtap, bootstap, bootstarp, bootstra, bootstrp
express 11 epress, epxress, experss, expess, expres, exprses, exprss, exress
jest 6 ejst, est, jes, jet, jets, jst
jquery 6 jqeury, jquey, jqury, juery, qjuery, query
mobx 6 mbox, mbx, mob, mox, moxb, obx
pnpm 6 npm, nppm, pnm, pnmp, pnp, ppm
redux 6 edux, rdux, redu, redx, reudx, reux
viem 6 iem, veim, vem, vie, vim, vime

Advisory load by ecosystem

Not a survey of any ecosystem. A few dozen hand-picked projects per registry, chosen for being prominent, which is exactly the population most likely to have advisories filed against it. Counts are all-time, so age and scrutiny raise them as readily as danger does. The registries are not the same size or the same age, and per-package is the only comparison worth making — even that one is soft.

All-time advisories across the packages watched here
Registry Advisories Packages affected Per affected package Most
pypi 2141 36 of 63 59.5 tensorflow, django, apache-airflow
brew 1243 12 of 25 103.6 libtensorflow, django-completion, onnx
npm 461 39 of 75 11.8 next, directus, hono
crates 96 11 of 20 8.7 surrealdb, diesel, tokio

How many people it would survive losing

The bus factor is how many contributors, from the most prolific down, account for half the commits. One means half a project’s history came from a single person. Three things it is not: commit count is not contribution, and review, triage and documentation leave few commits while a project cannot run without them; it is history rather than the present, so a founder who left three years ago still dominates; and a low number is a fact about a distribution, never an accusation about anybody. A contributor count with a plus sign was capped at a hundred.

387Projects measured
84Where one person wrote half
3Median bus factor
Most concentrated commit history
Repository Bus factor Largest share Contributors Commits counted
ethers-io/ethers.js 1 100.0% 1 826
OpenZeppelin/openzeppelin-contracts-upgradeable 1 99.7% 4 1,247
rqlite/rqlite 1 97.8% 61 8,152
pocketbase/pocketbase 1 97.7% 44 2,442
pgvector/pgvector 1 97.5% 23 1,910
evanw/esbuild 1 96.2% 100+ 4,415
jOOQ/jOOQ 1 95.6% 86 14,598
oobabooga/text-generation-webui 1 86.9% 100+ 5,407
junegunn/fzf 1 86.3% 100+ 3,465
rwf2/Rocket 1 83.9% 100+ 2,187
karpathy/minGPT 1 83.8% 11 80
sqlalchemy/sqlalchemy 1 83.8% 100+ 17,156
BurntSushi/ripgrep 1 83.0% 100+ 1,896
tornadoweb/tornado 1 82.3% 100+ 4,423
prisma/prisma 1 81.3% 21 8,019

Is anybody still asking

Volume has fallen across nearly every tag on Stack Overflow since assistants started answering these questions instead, so a tag falling is the baseline rather than the finding — the median tag here moved -24.2%. What survives that is the last column: how a tag moved against the rest over the same window. Under 25 questions in the earlier window there is no percentage at all, because four to two is a fifty percent collapse and means nothing.

534Questions in 30 days
-24.2%Median tag, against the 30 days before
30Tags read
Most asked about, and how each sits against the median tag
Tag Questions Change Points vs median
python 175 −26.5% −2.3
java 71 −22.0% +2.2
typescript 28 +7.7% +31.9
spring-boot 25 −35.9% −11.7
rust 24 too few
angular 23 −8.0% +16.2
kotlin 23 too few
swift 19 too few
postgresql 18 too few
reactjs 17 too few
node.js 16 −36.0% −11.8
docker 14 too few