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 |
|---|---|---|
| vendor/github.com/cilium/statedb/types.go | Jussi Maki | 20 |
| vendor/github.com/cilium/statedb/part/txn.go | Jussi Maki | 13 |
| vendor/github.com/cilium/statedb/reconciler/types.go | Jussi Maki | 11 |
| vendor/github.com/cilium/statedb/http.go | Jussi Maki | 10 |
| vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto | André Martins | 9 |
| vendor/k8s.io/apimachinery/pkg/conversion/converter.go | André Martins | 9 |
| vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go | André Martins | 9 |
| vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go | André Martins | 9 |
| vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go | André Martins | 9 |
| vendor/github.com/cilium/statedb/reconciler/reconciler.go | Jussi Maki | 9 |
| File | Sole owner | Commits |
|---|---|---|
| vendor/github.com/cilium/statedb/types.go | Jussi Maki | 20 |
| vendor/github.com/cilium/statedb/part/txn.go | Jussi Maki | 13 |
| vendor/github.com/cilium/statedb/reconciler/types.go | Jussi Maki | 11 |
| vendor/github.com/cilium/statedb/http.go | Jussi Maki | 10 |
| vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto | André Martins | 9 |
| vendor/k8s.io/apimachinery/pkg/conversion/converter.go | André Martins | 9 |
| vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go | André Martins | 9 |
| vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go | André Martins | 9 |
| vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go | André Martins | 9 |
| vendor/github.com/cilium/statedb/reconciler/reconciler.go | Jussi Maki | 9 |
| vendor/github.com/cilium/statedb/iterator.go | Jussi Maki | 9 |
| vendor/github.com/cilium/statedb/reconciler/incremental.go | Jussi Maki | 9 |
| pkg/loadbalancer/cell/cell.go | Jussi Maki | 9 |
| cilium-dbg/cmd/envoy_adminclient.go | Marco Hofstetter | 9 |
| vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go | André Martins | 8 |
| pkg/loadbalancer/redirectpolicy/testdata/address.txtar | Jussi Maki | 8 |
| pkg/fqdn/service/cell.go | Vipul Singh | 8 |
| tools/dpgen/util.go | Timo Beckers | 8 |
| tools/dpgen/maps.go | Timo Beckers | 8 |
| pkg/bgp/manager/reconciler/policies.go | Rastislav Szabo | 8 |
| vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto | André Martins | 7 |
| vendor/k8s.io/client-go/tools/clientcmd/api/zz_generated.deepcopy.go | André Martins | 7 |
| vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/deepcopy.go | André Martins | 7 |
| vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/deepcopy.go | André Martins | 7 |
| vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/register.go | André Martins | 7 |
| vendor/k8s.io/apimachinery/pkg/runtime/error.go | André Martins | 7 |
| vendor/github.com/gogo/protobuf/proto/encode.go | André Martins | 7 |
| vendor/github.com/gogo/protobuf/proto/text.go | André Martins | 7 |
| .github/actions/multi-pool/configs.yaml | Fabio Falzoi | 7 |
| vendor/github.com/cilium/statedb/graveyard.go | Jussi Maki | 7 |
| vendor/github.com/cilium/statedb/any_table.go | Jussi Maki | 7 |
| pkg/k8s/apis/cilium.io/client/crds/v2alpha1/ciliumnetworkdriverclusterconfigs.yaml | Bernardo Soares | 7 |
| pkg/k8s/apis/cilium.io/client/crds/v2alpha1/ciliumnetworkdrivernodeconfigs.yaml | Bernardo Soares | 7 |
| pkg/k8s/apis/cilium.io/v2alpha1/network_driver_types.go | Bernardo Soares | 7 |
| standalone-dns-proxy/cmd/root.go | Vipul Singh | 7 |
| standalone-dns-proxy/pkg/client/cell.go | Vipul Singh | 7 |
| .github/actions/cl2-modules/egw/modules/masq-test.yaml | Marco Iorio | 7 |
| pkg/datapath/loader/types/loader.go | Timo Beckers | 7 |
| pkg/kpr/kpr.go | Martynas Pumputis | 7 |
| vendor/k8s.io/client-go/tools/cache/expiration_cache_fakes.go | André Martins | 6 |
| vendor/github.com/coreos/go-semver/semver/semver.go | André Martins | 6 |
| vendor/golang.org/x/oauth2/internal/token.go | André Martins | 6 |
| vendor/k8s.io/api/core/v1/well_known_labels.go | André Martins | 6 |
| vendor/k8s.io/apimachinery/pkg/util/net/util.go | André Martins | 6 |
| vendor/k8s.io/apimachinery/pkg/watch/mux.go | André Martins | 6 |
| vendor/k8s.io/client-go/pkg/apis/clientauthentication/zz_generated.deepcopy.go | André Martins | 6 |
| vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go | André Martins | 6 |
| vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go | André Martins | 6 |
| vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go | André Martins | 6 |
| vendor/k8s.io/apimachinery/pkg/util/json/json.go | André Martins | 6 |
| vendor/golang.org/x/tools/go/ast/astutil/imports.go | André Martins | 6 |
| vendor/k8s.io/apimachinery/pkg/fields/selector.go | André Martins | 6 |
| pkg/datapath/linux/routing/reconciler/manager.go | Fabio Falzoi | 6 |
| vendor/github.com/cilium/statedb/lpm_index.go | Jussi Maki | 6 |
| vendor/github.com/cilium/statedb/README.md | Jussi Maki | 6 |
| vendor/github.com/cilium/statedb/deletetracker.go | Jussi Maki | 6 |
| operator/cmd/lifecycle.go | Jussi Maki | 6 |
| pkg/envoy/xds_server_benchmark_test.go | Jarno Rajahalme | 6 |
| pkg/envoy/xdsnew/watch_test.go | Jarno Rajahalme | 6 |
| pkg/clustermesh/operator/metrics.go | Arthur Outhenin-Chalandre | 6 |
| standalone-dns-proxy/pkg/lookup/lookup_test.go | Vipul Singh | 6 |
| pkg/datapath/loader/fake/loader.go | Timo Beckers | 6 |
| .github/workflows/build-images-base-renovate.yaml | André Martins | 5 |
| .github/actions/cosign/action.yaml | André Martins | 5 |
| vendor/k8s.io/apimachinery/pkg/util/strategicpatch/meta.go | André Martins | 5 |
| vendor/k8s.io/apimachinery/pkg/api/meta/conditions.go | André Martins | 5 |
| vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go | André Martins | 5 |
| vendor/golang.org/x/oauth2/internal/oauth2.go | André Martins | 5 |
| vendor/golang.org/x/oauth2/token.go | André Martins | 5 |
| vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/generated_expansion.go | André Martins | 5 |
| vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto | André Martins | 5 |
| vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go | André Martins | 5 |
| vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.defaults.go | André Martins | 5 |
| vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/zz_generated.deepcopy.go | André Martins | 5 |
| vendor/k8s.io/apimachinery/pkg/watch/zz_generated.deepcopy.go | André Martins | 5 |
| vendor/k8s.io/client-go/rest/zz_generated.deepcopy.go | André Martins | 5 |
| vendor/k8s.io/client-go/tools/clientcmd/api/v1/zz_generated.deepcopy.go | André Martins | 5 |
| vendor/k8s.io/client-go/util/flowcontrol/throttle.go | André Martins | 5 |
| vendor/github.com/containernetworking/cni/pkg/version/plugin.go | André Martins | 5 |
| vendor/github.com/json-iterator/go/README.md | André Martins | 5 |
| vendor/k8s.io/client-go/tools/clientcmd/api/v1/conversion.go | André Martins | 5 |
| vendor/github.com/json-iterator/go/iter_object.go | André Martins | 5 |
| vendor/github.com/json-iterator/go/reflect_extension.go | André Martins | 5 |
| vendor/github.com/json-iterator/go/reflect_map.go | André Martins | 5 |
| vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/register.go | André Martins | 5 |
| vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/register.go | André Martins | 5 |
| vendor/google.golang.org/grpc/call.go | André Martins | 5 |
| vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/helpers.go | André Martins | 5 |
| vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/generated_expansion.go | André Martins | 5 |
| cilium-dbg/cmd/ip_list.go | Joe Stringer | 5 |
| pkg/datapath/plugins/cell.go | Jordan Rife | 5 |
| operator/pkg/networkpolicy/external-groups/cell.go | Casey Callendrello | 5 |
| vendor/github.com/cilium/statedb/internal/sortable_mutex.go | Jussi Maki | 5 |
| vendor/github.com/cilium/statedb/index/set.go | Jussi Maki | 5 |
| pkg/loadbalancer/tests/main_test.go | Jussi Maki | 5 |
| contrib/examples/statedb/example.go | Jussi Maki | 5 |
| pkg/loadbalancer/redirectpolicy/testdata/skiplb-addr.txtar | Jussi Maki | 5 |
| pkg/metrics/sampler.go | Jussi Maki | 5 |
| pkg/k8s/resource/event.go | Jussi Maki | 5 |
| cilium-cli/encrypt/ipsec_rotate_key_test.go | Viktor Kurchenko | 5 |
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 |
|---|---|---|---|
| André Martins | 4,884 | 2,105 | 9,054 |
| Tam Mach | 3,949 | 1,902 | 6,492 |
| Tobias Klauser | 2,003 | 408 | 4,744 |
| Michi Mutsuzaki | 1,668 | 1,391 | 2,209 |
| Hadrien Patte | 1,162 | 838 | 3,273 |
| Bokang Li | 940 | 741 | 1,265 |
| Robin Hahling | 833 | 655 | 1,274 |
| Vlad Ungureanu | 693 | 93 | 782 |
| Julian Wiedmann | 576 | 379 | 1,758 |
| Jussi Maki | 520 | 230 | 1,144 |
| Nick Young | 448 | 285 | 893 |
| Joe Stringer | 410 | 178 | 1,727 |
| Thomas Graf | 396 | 124 | 1,167 |
| Arthur Outhenin-Chalandre | 353 | 292 | 1,181 |
| Timo Beckers | 313 | 91 | 1,166 |
| Marco Iorio | 289 | 59 | 1,039 |
| Rastislav Szabo | 280 | 165 | 460 |
| Jarno Rajahalme | 269 | 89 | 1,478 |
| Chris Tarazi | 267 | 149 | 2,526 |
| Marco Hofstetter | 238 | 72 | 1,251 |
| Quentin Monnet | 171 | 6 | 1,788 |
| Louis DeLosSantos | 167 | 60 | 1,540 |
| Casey Callendrello | 157 | 54 | 658 |
| Bernardo Soares | 150 | 136 | 294 |
| Yoyo Wu | 141 | 84 | 212 |
Files touched by the most people — shared code where changes are most likely to need coordination.
| File | Contributors | Primary owner | Owner share |
|---|---|---|---|
| install/kubernetes/cilium/values.yaml | 268 | Tam Mach | 8.1% |
| install/kubernetes/cilium/README.md | 245 | Tam Mach | 9.4% |
| Documentation/helm-values.rst | 224 | Tam Mach | 10.2% |
| install/kubernetes/cilium/values.yaml.tmpl | 210 | Tam Mach | 7.0% |
| install/kubernetes/cilium/templates/cilium-configmap.yaml | 182 | Tam Mach | 6.6% |
| USERS.md | 175 | Bill Mulligan | 6.9% |
| Documentation/spelling_wordlist.txt | 169 | André Martins | 6.6% |
| pkg/option/config.go | 168 | Daniel Borkmann | 8.0% |
| Documentation/cmdref/cilium-agent.md | 147 | Thomas Graf | 7.4% |
| daemon/cmd/daemon_main.go | 142 | Marco Hofstetter | 11.7% |
| install/kubernetes/cilium/values.schema.json | 132 | Arthur Outhenin-Chalandre | 5.1% |
| Documentation/operations/upgrade.rst | 105 | Joe Stringer | 7.9% |
| pkg/defaults/defaults.go | 89 | Thomas Graf | 12.1% |
| Makefile | 87 | André Martins | 15.6% |
| vendor/modules.txt | 85 | Tobias Klauser | 14.0% |
| pkg/datapath/linux/config/config.go | 84 | Daniel Borkmann | 11.9% |
| CODEOWNERS | 84 | Paul Chaignon | 8.5% |
| daemon/cmd/daemon.go | 81 | Marco Hofstetter | 19.1% |
| bpf/bpf_lxc.c | 80 | Julian Wiedmann | 20.1% |
| go.mod | 80 | Tobias Klauser | 16.0% |
How Cilium compares with other CNCF graduated projects →
How Cilium ranks among CNCF graduated projects 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