Code Ownership

Ownership is measured by how many commits each author made to each file in the current tree. It highlights bus-factor risk (files only one person has ever touched) and where knowledge is concentrated. The bus factor is the smallest number of people who are, between them, primary owner of more than half of the files.

Files Tracked
56,770
in the current tree
Bus Factor
3
3 authors are primary owner of 32,748 of 56,770 files
Single-Owner Files
31,344
55.2% of tracked files
Contributors
3,860
authors who changed files

Bus factor risk — single-owner files

Files only one author has ever changed. The more a file has changed, the more knowledge is at risk if that person leaves.

FileSole ownerCommits
deps/npm/man/man1/npm-pkg.1npm team69
deps/npm/man/man7/logging.7npm team61
deps/npm/man/man7/dependency-selectors.7npm team54
deps/npm/man/man7/package-spec.7npm team54
deps/npm/man/man1/npm-query.1npm team52
deps/npm/man/man1/npm-login.1npm team49
deps/npm/docs/output/commands/npm-pkg.htmlnpm team45
deps/npm/tap-snapshots/test/lib/docs.js.test.cjsnpm team45
deps/npm/docs/output/commands/npm-query.htmlnpm team39
deps/npm/docs/output/using-npm/dependency-selectors.htmlnpm team39
Table: the 100 most-changed of 31,344 single-owner files
FileSole ownerCommits
deps/npm/man/man1/npm-pkg.1npm team69
deps/npm/man/man7/logging.7npm team61
deps/npm/man/man7/dependency-selectors.7npm team54
deps/npm/man/man7/package-spec.7npm team54
deps/npm/man/man1/npm-query.1npm team52
deps/npm/man/man1/npm-login.1npm team49
deps/npm/docs/output/commands/npm-pkg.htmlnpm team45
deps/npm/tap-snapshots/test/lib/docs.js.test.cjsnpm team45
deps/npm/docs/output/commands/npm-query.htmlnpm team39
deps/npm/docs/output/using-npm/dependency-selectors.htmlnpm team39
deps/npm/lib/commands/publish.jsnpm team39
deps/npm/man/man1/npm-sbom.1npm team38
deps/npm/docs/output/using-npm/logging.htmlnpm team36
deps/npm/docs/output/commands/npm-login.htmlnpm team35
deps/npm/docs/output/commands/npm-sbom.htmlnpm team35
deps/npm/docs/output/using-npm/package-spec.htmlnpm team35
deps/npm/docs/output/configuring-npm/npm-global.htmlnpm team33
deps/npm/docs/output/configuring-npm/npm-json.htmlnpm team33
deps/npm/test/lib/commands/publish.jsnpm team33
deps/npm/tap-snapshots/test/lib/commands/config.js.test.cjsnpm team32
deps/corepack/dist/lib/corepack.cjsNode.js GitHub Bot30
deps/npm/lib/commands/install.jsnpm team28
deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.jsnpm team28
deps/npm/lib/commands/view.jsnpm team26
deps/npm/docs/output/commands/npm-undeprecate.htmlnpm team25
deps/npm/man/man1/npm-undeprecate.1npm team25
deps/npm/tap-snapshots/test/lib/commands/publish.js.test.cjsnpm team25
deps/npm/test/lib/commands/audit.jsnpm team25
deps/undici/src/docs/docs/api/Dispatcher.mdNode.js GitHub Bot24
deps/npm/lib/commands/unpublish.jsnpm team24
deps/undici/src/lib/dispatcher/client-h1.jsNode.js GitHub Bot23
deps/npm/lib/commands/outdated.jsnpm team23
deps/npm/lib/commands/init.jsnpm team23
deps/v8/src/compiler/typed-optimization.hMichaël Zasso22
deps/npm/docs/output/commands/npm-run.htmlnpm team22
deps/npm/lib/commands/audit.jsnpm team22
deps/npm/lib/commands/ci.jsnpm team22
deps/npm/lib/commands/link.jsnpm team22
deps/npm/lib/commands/ls.jsnpm team22
deps/npm/man/man1/npm-run.1npm team22
deps/npm/lib/commands/completion.jsnpm team21
deps/npm/lib/commands/token.jsnpm team21
deps/npm/lib/commands/update.jsnpm team21
deps/npm/node_modules/@npmcli/package-json/package.jsonnpm team21
deps/npm/test/lib/commands/exec.jsnpm team21
deps/npm/lib/commands/cache.jsnpm team21
deps/cares/RELEASE-NOTES.mdNode.js GitHub Bot20
deps/undici/src/lib/dispatcher/proxy-agent.jsNode.js GitHub Bot20
deps/npm/test/lib/commands/view.jsnpm team20
deps/npm/lib/commands/owner.jsnpm team20
deps/npm/lib/commands/config.jsnpm team20
deps/npm/lib/commands/diff.jsnpm team20
deps/openssl/openssl/include/openssl/x509_acert.hNode.js GitHub Bot19
deps/v8/src/objects/compressed-slots-inl.hMichaël Zasso19
deps/npm/lib/commands/doctor.jsnpm team19
deps/npm/tap-snapshots/test/lib/npm.js.test.cjsnpm team19
deps/npm/lib/commands/exec.jsnpm team19
deps/npm/node_modules/libnpmpublish/lib/publish.jsnpm team18
deps/npm/lib/commands/dist-tag.jsnpm team18
test/parallel/test-crypto-key-objects-to-crypto-key.jsFilip Skokan17
deps/v8/test/cctest/compiler/test-concurrent-shared-function-info.ccMichaël Zasso17
deps/v8/src/heap/memory-chunk-layout.hMichaël Zasso17
deps/npm/lib/commands/pack.jsnpm team17
deps/npm/lib/commands/profile.jsnpm team17
deps/npm/node_modules/sigstore/package.jsonnpm team17
deps/v8/src/codegen/signature.hMichaël Zasso16
deps/v8/src/heap/marking-barrier-inl.hMichaël Zasso16
deps/npm/lib/commands/dedupe.jsnpm team16
deps/npm/lib/commands/help.jsnpm team16
deps/npm/node_modules/@npmcli/arborist/lib/place-dep.jsnpm team16
deps/npm/tap-snapshots/test/lib/commands/completion.js.test.cjsnpm team16
deps/npm/tap-snapshots/test/lib/commands/view.js.test.cjsnpm team16
deps/npm/test/lib/commands/config.jsnpm team16
deps/npm/test/lib/commands/init.jsnpm team16
deps/npm/test/lib/commands/install.jsnpm team16
deps/npm/test/lib/commands/pack.jsnpm team16
deps/npm/test/lib/commands/owner.jsnpm team16
deps/npm/lib/utils/log-file.jsnpm team16
deps/npm/test/lib/commands/unpublish.jsnpm team16
deps/npm/lib/commands/deprecate.jsnpm team16
deps/undici/src/lib/web/websocket/receiver.jsNode.js GitHub Bot15
deps/v8/include/cppgc/member.hMichaël Zasso15
deps/v8/tools/tickprocessor.mjsMichaël Zasso15
deps/v8/src/compiler/constant-folding-reducer.ccMichaël Zasso15
deps/npm/lib/commands/query.jsnpm team15
deps/npm/lib/commands/rebuild.jsnpm team15
deps/npm/node_modules/@sigstore/tuf/package.jsonnpm team15
deps/npm/test/lib/commands/doctor.jsnpm team15
deps/npm/test/lib/commands/ls.jsnpm team15
deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.jsnpm team15
deps/npm/lib/commands/fund.jsnpm team15
deps/npm/lib/commands/access.jsnpm team15
deps/undici/src/lib/handler/redirect-handler.jsNode.js GitHub Bot14
deps/undici/src/types/interceptors.d.tsNode.js GitHub Bot14
deps/undici/src/lib/web/websocket/stream/websocketstream.jsNode.js GitHub Bot14
deps/v8/src/execution/ppc/simulator-ppc.hMichaël Zasso14
deps/v8/src/objects/map-updater.hMichaël Zasso14
deps/v8/src/compiler/machine-graph.hMichaël Zasso14
deps/v8/src/compiler/backend/jump-threading.ccMichaël Zasso14
deps/npm/lib/commands/pkg.jsnpm team14

Ownership by author

Primary owner = the author with the most commits to a file. Solely owned = files only that author has touched.

AuthorFiles ownedSolely ownedFiles touched
Michaël Zasso16,5579,69019,741
Node.js GitHub Bot9,3433,20812,057
Joyee Cheung6,8486,20013,435
npm team1,8721,2471,927
René1,5401,2831,811
Aviv Keller1,4741,4601,888
Ben Noordhuis1,2769803,464
James M Snell1,1884063,691
Steven R. Loomis90721,071
Ryan Dahl8694181,737
Chengzhong Wu8386961,598
Shigeki Ohtsu826241,554
Rich Trott729672,107
Ruben Bridgewater654261,476
Filip Skokan6464041,196
Colin Ihrig6403172,067
Myles Borins4111963,128
Ujjwal Sharma403412,154
Yagiz Nizipli3781851,581
Sam Roberts357412,060
Tobias Nießen3551831,021
Antoine du Hamel353892,995
Fedor Indutny337792,203
Matteo Collina321217909
Guy Bedford309258532

Showing top 25 of 3860 contributors.

Most shared files

Files touched by the most people — shared code where changes are most likely to need coordination.

FileContributorsPrimary ownerOwner share
README.md302Rich Trott16.5%
doc/api/fs.md243Antoine du Hamel7.7%
src/node.cc230Ryan Dahl20.2%
lib/fs.js199Joyee Cheung6.5%
doc/api/http.md188Luigi Pinca6.7%
lib/net.js175Ryan Dahl21.2%
doc/api/cli.md170Rafael Gonzaga6.5%
node.gyp167Joyee Cheung9.7%
doc/api/stream.md167Robert Nagy10.8%
Makefile159Ryan Dahl13.4%
doc/api/process.md159Rich Trott7.7%
doc/api/errors.md151James M Snell8.4%
common.gypi144Michaël Zasso30.0%
src/node_crypto.cc144Ben Noordhuis21.8%
doc/api/crypto.md142Tobias Nießen22.2%
lib/internal/errors.js141Ruben Bridgewater10.4%
lib/repl.js133Ruben Bridgewater11.6%
lib/util.js126Ruben Bridgewater13.9%
BUILDING.md121Rich Trott10.7%
src/node_file.cc120Joyee Cheung11.3%