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 only one author has ever changed. The more a file has changed, the more knowledge is at risk if that person leaves.
| File | Sole owner | Commits |
|---|---|---|
| docs/examples/CMakeLists.txt | Viktor Szakats | 25 |
| CMake/FindNettle.cmake | Viktor Szakats | 23 |
| tests/server/first.c | Viktor Szakats | 14 |
| CMake/FindLibssh.cmake | Viktor Szakats | 13 |
| CMake/FindRustls.cmake | Viktor Szakats | 13 |
| CMake/FindLibgsasl.cmake | Viktor Szakats | 12 |
| CMake/FindCares.cmake | Viktor Szakats | 12 |
| tests/cmake/test.sh | Viktor Szakats | 10 |
| CMake/FindLibssh2.cmake | Viktor Szakats | 10 |
| CMake/FindLDAP.cmake | Viktor Szakats | 10 |
| File | Sole owner | Commits |
|---|---|---|
| docs/examples/CMakeLists.txt | Viktor Szakats | 25 |
| CMake/FindNettle.cmake | Viktor Szakats | 23 |
| tests/server/first.c | Viktor Szakats | 14 |
| CMake/FindLibssh.cmake | Viktor Szakats | 13 |
| CMake/FindRustls.cmake | Viktor Szakats | 13 |
| CMake/FindLibgsasl.cmake | Viktor Szakats | 12 |
| CMake/FindCares.cmake | Viktor Szakats | 12 |
| tests/cmake/test.sh | Viktor Szakats | 10 |
| CMake/FindLibssh2.cmake | Viktor Szakats | 10 |
| CMake/FindLDAP.cmake | Viktor Szakats | 10 |
| CMake/FindLibidn2.cmake | Viktor Szakats | 10 |
| CMake/FindLibuv.cmake | Viktor Szakats | 10 |
| lib/vquic/cf-ngtcp2-cmn.h | Stefan Eissing | 10 |
| CMake/FindLibpsl.cmake | Viktor Szakats | 9 |
| tests/cmake/test.c | Viktor Szakats | 8 |
| scripts/perlcheck.sh | Viktor Szakats | 8 |
| scripts/CMakeLists.txt | Viktor Szakats | 8 |
| tests/cmake/CMakeLists.txt | Viktor Szakats | 8 |
| CMake/FindQuiche.cmake | Viktor Szakats | 8 |
| src/mk-file-embed.pl | Viktor Szakats | 7 |
| lib/curlx/strdup.c | Viktor Szakats | 7 |
| scripts/checksrc-all.pl | Viktor Szakats | 7 |
| docs/cmdline-opts/form-escape.md | Daniel Stenberg | 7 |
| docs/cmdline-opts/cookie-jar.md | Daniel Stenberg | 7 |
| projects/vms/config_h.com | Viktor Szakats | 6 |
| tests/libtest/unitcheck.h | Viktor Szakats | 6 |
| docs/cmdline-opts/remote-header-name.md | Daniel Stenberg | 6 |
| docs/cmdline-opts/http3.md | Daniel Stenberg | 6 |
| docs/cmdline-opts/digest.md | Daniel Stenberg | 6 |
| docs/cmdline-opts/etag-save.md | Daniel Stenberg | 6 |
| docs/cmdline-opts/ftp-port.md | Daniel Stenberg | 6 |
| docs/cmdline-opts/trace-ascii.md | Daniel Stenberg | 6 |
| .github/renovate.json | Viktor Szakats | 5 |
| projects/OS400/curlmain.c | Viktor Szakats | 5 |
| CMake/cmake_uninstall.in.cmake | Viktor Szakats | 5 |
| .github/scripts/shellcheck.sh | Viktor Szakats | 5 |
| lib/curlx/strdup.h | Viktor Szakats | 5 |
| docs/cmdline-opts/no-clobber.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/basic.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/compressed-ssh.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/max-filesize.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/pass.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/sasl-ir.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/_GLOBBING.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/alt-svc.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/proxy-pass.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/_PROGRESS.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/proto-redir.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/trace-ids.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/proxy-ntlm.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/etag-compare.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/remote-name.md | Daniel Stenberg | 5 |
| docs/cmdline-opts/trace.md | Daniel Stenberg | 5 |
| .github/actions/pkg-install/action.yml | Viktor Szakats | 4 |
| projects/Windows/README.md | Viktor Szakats | 4 |
| projects/vms/build_vms.com | Viktor Szakats | 4 |
| projects/vms/curl_gnv_build_steps.txt | Viktor Szakats | 4 |
| projects/vms/readme | Viktor Szakats | 4 |
| CMake/FindGnuTLS.cmake | Viktor Szakats | 4 |
| tests/data/test2506 | Daniel Stenberg | 4 |
| docs/cmdline-opts/_DESCRIPTION.md | Daniel Stenberg | 4 |
| tests/data/test1627 | Daniel Stenberg | 4 |
| docs/cmdline-opts/proto.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/abstract-unix-socket.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/oauth2-bearer.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/ssl-reqd.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/proxy-tlsauthtype.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/proxy-tlspassword.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/proxy-tlsuser.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/proto-default.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/post301.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/post302.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/tcp-nodelay.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/proxy-cert.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/proxy-ssl-allow-beast.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/proxy-tlsv1.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/doh-cert-status.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/globoff.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/interface.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/negotiate.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/ntlm.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/proxy-digest.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/happy-eyeballs-timeout-ms.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/dump-header.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/expect100-timeout.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/fail-early.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/ntlm-wb.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/parallel-immediate.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/next.md | Daniel Stenberg | 4 |
| docs/cmdline-opts/proxy-negotiate.md | Daniel Stenberg | 4 |
| projects/OS400/curlcl.c | Viktor Szakats | 3 |
| .github/scripts/shellcheck-ci.sh | Viktor Szakats | 3 |
| tests/cmake/test.cpp | Viktor Szakats | 3 |
| lib/curlx/basename.c | Viktor Szakats | 3 |
| .github/scripts/yamlcheck.sh | Viktor Szakats | 3 |
| projects/vms/build_gnv_curl_pcsi_desc.com | Viktor Szakats | 3 |
| CMake/FindLibbacktrace.cmake | Viktor Szakats | 3 |
| lib/curlx/wait.h | Viktor Szakats | 3 |
| lib/vquic/cf-ngtcp2.h | Stefan Eissing | 3 |
| lib/vquic/cf-quiche.h | Stefan Eissing | 3 |
Primary owner = the author with the most commits to a file. Solely owned = files only that author has touched.
| Author | Files owned | Solely owned | Files touched |
|---|---|---|---|
| Daniel Stenberg | 2,386 | 246 | 4,165 |
| Viktor Szakats | 1,851 | 132 | 3,881 |
| Stefan Eissing | 173 | 40 | 886 |
| Steve Holme | 56 | 0 | 512 |
| Dan Fandrich | 24 | 1 | 1,505 |
| Yang Tse | 22 | 0 | 583 |
| Joshua Rogers | 10 | 8 | 100 |
| Max Dymond | 7 | 7 | 123 |
| Sameeh Jubran | 7 | 7 | 78 |
| Zheng Yu | 5 | 2 | 22 |
| Samuel Henrique | 4 | 0 | 66 |
| Memduh Çelik | 4 | 0 | 6 |
| Max Mehl | 3 | 1 | 775 |
| Yedaya Katsman | 3 | 0 | 95 |
| Michiel van Slobbe | 3 | 3 | 9 |
| xhon-pelushi | 3 | 1 | 6 |
| Jay Satiro | 2 | 1 | 458 |
| Patrick Monnerat | 2 | 0 | 380 |
| Aritra Basu | 2 | 2 | 57 |
| Jan Venekamp | 2 | 1 | 41 |
| Alhuda Khan | 2 | 2 | 40 |
| ns-ylambert | 2 | 1 | 10 |
| İlyas Serdar Dursun | 2 | 0 | 7 |
| Kuroda Kayn | 2 | 1 | 7 |
| Ron Kuper | 2 | 0 | 7 |
Files touched by the most people — shared code where changes are most likely to need coordination.
| File | Contributors | Primary owner | Owner share |
|---|---|---|---|
| lib/url.c | 155 | Daniel Stenberg | 59.5% |
| configure.ac | 150 | Daniel Stenberg | 38.9% |
| lib/urldata.h | 145 | Daniel Stenberg | 58.0% |
| include/curl/curl.h | 131 | Daniel Stenberg | 62.6% |
| lib/vtls/openssl.c | 128 | Daniel Stenberg | 36.0% |
| CMakeLists.txt | 118 | Viktor Szakats | 58.0% |
| lib/http.c | 112 | Daniel Stenberg | 61.9% |
| lib/multi.c | 100 | Daniel Stenberg | 56.0% |
| tests/data/Makefile.am | 98 | Daniel Stenberg | 60.2% |
| src/tool_operate.c | 95 | Daniel Stenberg | 45.9% |
| src/tool_getparam.c | 88 | Daniel Stenberg | 48.4% |
| docs/libcurl/symbols-in-versions | 87 | Daniel Stenberg | 49.2% |
| lib/connect.c | 83 | Daniel Stenberg | 50.1% |
| tests/libtest/Makefile.inc | 75 | Daniel Stenberg | 45.1% |
| lib/transfer.c | 70 | Daniel Stenberg | 66.5% |
| lib/setopt.c | 70 | Daniel Stenberg | 54.0% |
| lib/ftp.c | 67 | Daniel Stenberg | 63.8% |
| lib/vtls/schannel.c | 62 | Viktor Szakats | 24.9% |
| tests/runtests.pl | 59 | Daniel Stenberg | 44.9% |
| lib/http2.c | 59 | Daniel Stenberg | 43.8% |
How curl compares with other open source languages and developer tools →
How curl ranks among open source languages and developer tools by AI-assisted commits →
Generate this report for your own repository with gitstats-action · All Gallery reports
Publishes the report to GitHub Pages on every push to main: turn on Pages for the gh-pages branch.
# .github/workflows/gitstats.yml
name: GitStats Report
on:
push:
branches: [main]
permissions:
contents: write
jobs:
gitstats:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: shenxianpeng/gitstats-action@v1
with:
deploy-to-pages: true