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
11,726
in the current tree
Bus Factor
5
5 authors are primary owner of 6,480 of 11,726 files
Single-Owner Files
3,199
27.3% of tracked files
Contributors
1,279
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
adev/shared-docs/pipeline/examples/template/package-lock.jsonAngular Robot16
packages/core/src/render3/instructions/foreign_component.tsleonsenft11
packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/standalone/foreign_component.jsleonsenft10
packages/core/test/render3/foreign_component_spec.tsleonsenft10
packages/router/src/router_resource.tsAndrew Scott9
adev/src/content/cdk/cdk_testing_testbed.jsonAngular Robot8
packages/router/src/operators/setup_and_run_resources.tsAndrew Scott8
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_deferred/deferred_secondary_blocks_template.jsKristiyan Kostadinov8
packages/platform-server/src/url.tsAlan Agius8
packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/standalone/foreign_component.local.jsleonsenft8
Table: the 100 most-changed of 3,199 single-owner files
FileSole ownerCommits
adev/shared-docs/pipeline/examples/template/package-lock.jsonAngular Robot16
packages/core/src/render3/instructions/foreign_component.tsleonsenft11
packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/standalone/foreign_component.jsleonsenft10
packages/core/test/render3/foreign_component_spec.tsleonsenft10
packages/router/src/router_resource.tsAndrew Scott9
adev/src/content/cdk/cdk_testing_testbed.jsonAngular Robot8
packages/router/src/operators/setup_and_run_resources.tsAndrew Scott8
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_deferred/deferred_secondary_blocks_template.jsKristiyan Kostadinov8
packages/platform-server/src/url.tsAlan Agius8
packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/standalone/foreign_component.local.jsleonsenft8
adev/shared-docs/providers/BUILD.bazelJoey Perrott8
packages/compiler-cli/src/ngtsc/hmr/src/metadata.tsKristiyan Kostadinov7
packages/compiler-cli/src/ngtsc/annotations/component/src/foreign_component.tsleonsenft7
packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/standalone/foreign_component.tsleonsenft7
adev/shared-docs/directives/search-item/BUILD.bazelJoey Perrott7
adev/src/content/cdk/cdk_testing_selenium_webdriver.jsonAngular Robot6
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_deferred/deferred_with_triggers_template.jsKristiyan Kostadinov6
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_with_pipe_template.jsKristiyan Kostadinov6
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_track_by_field_template.jsKristiyan Kostadinov6
devtools/projects/ng-devtools-backend/src/lib/shared/highlighter/highlights.tsGeorgi Serev6
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/recording-timeline-controls/recording-timeline-controls.component.htmlGeorgi Serev6
tools/bazel/web_test.bzlJoey Perrott6
adev/shared-docs/pipeline/examples/shared/BUILD.bazelJoey Perrott6
adev/shared-docs/components/algolia-icon/BUILD.bazelJoey Perrott6
adev/src/content/cdk/cdk_testing_protractor.jsonAngular Robot5
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_let/TEST_CASES.jsonKristiyan Kostadinov5
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/basic_for_template.jsKristiyan Kostadinov5
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_data_slots_template.jsKristiyan Kostadinov5
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_track_by_index_template.jsKristiyan Kostadinov5
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/recording-visualizer/bargraph-visualizer/bargraph-visualizer.component.tsGeorgi Serev5
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/recording-timeline-controls/recording-timeline-controls.component.tsGeorgi Serev5
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/recording-visualizer/recording-visualizer.component.htmlGeorgi Serev5
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/visualizer-controls/visualizer-controls.component.tsGeorgi Serev5
packages/core/src/interface/foreign_component.tsleonsenft5
packages/core/src/render3/foreign_import.tsleonsenft5
adev/shared-docs/directives/BUILD.bazelJoey Perrott5
packages/router/src/router_resource_feature.tsAndrew Scott4
packages/core/src/internal/get_closest_component_name.tsKristiyan Kostadinov4
packages/core/src/di/service.tsKristiyan Kostadinov4
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_impure_track_reuse_template.jsKristiyan Kostadinov4
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_track_literals_template.jsKristiyan Kostadinov4
packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/ng_modules/empty_fields.jsKristiyan Kostadinov4
packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/ng_modules/variable_providers.jsKristiyan Kostadinov4
packages/core/schematics/migrations/safe-optional-chaining/safe-optional-chaining.spec.tsMatthieu Riegler4
packages/compiler-cli/src/ngtsc/typecheck/extended/test/checks/defer_trigger_misconfiguration/defer_trigger_misconfiguration_spec.tsSkyZeroZx4
devtools/projects/ng-devtools-backend/src/lib/directive-forest/manager.tsGeorgi Serev4
devtools/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-pane/property-view/property-view.component.tsGeorgi Serev4
devtools/projects/ng-devtools-backend/src/lib/hydration/BUILD.bazelGeorgi Serev4
devtools/projects/ng-devtools-backend/src/lib/shared/highlighter/index.tsGeorgi Serev4
devtools/projects/ng-devtools/src/lib/application-services/settings_store.tsGeorgi Serev4
devtools/projects/ng-devtools-backend/src/lib/profiling/capture.tsGeorgi Serev4
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/frame-selector/frame-selector.component.scssGeorgi Serev4
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/record-formatter/flamegraph-formatter/flamegraph-formatter.tsGeorgi Serev4
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/recording-timeline-controls/recording-timeline-controls.component.scssGeorgi Serev4
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/recording-visualizer/execution-details/execution-details.component.scssGeorgi Serev4
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/visualizer-controls/visualizer-controls.component.htmlGeorgi Serev4
devtools/projects/ng-devtools/src/lib/shared/signals-visualizer/signals-visualizer.component.tsGeorgi Serev4
devtools/projects/ng-devtools/src/lib/devtools-tabs/router-tree/router-tree-fns.tsGeorgi Serev4
devtools/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-pane/property-view/property-view-body/property-view-body.component.tsGeorgi Serev4
devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/profiler-import-dialog/profiler-import-dialog.component.tsGeorgi Serev4
devtools/projects/ng-devtools/src/styles/_inputs.scssGeorgi Serev4
packages/platform-server/test/utils_spec.tsAlan Agius4
devtools/projects/shell-browser/src/app/breakpoint_manager.tsEdu4
integration/animations/e2e/src/animations.e2e-spec.tsJessica Janiuk4
.github/actions/deploy-docs-site/lib/main.mtsJoey Perrott4
.github/actions/deploy-docs-site/lib/deploy.mtsJoey Perrott4
adev/shared-docs/tsconfig-test.jsonJoey Perrott4
packages/core/schematics/utils/tsurge/executors/global_meta_exec.tsPaul Gschwendtner4
packages/core/schematics/migrations/signal-queries-migration/migration_config.tsPaul Gschwendtner4
skills/dev-skills/angular-developer/references/environment-configuration.mdAmine3
packages/router/test/activated_route_injector.spec.tsAndrew Scott3
packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/abstract_directive.jsAndrew Scott3
packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/abstract_directive.tsAndrew Scott3
packages/compiler-cli/preprocessor/ng-analyze/src/query/module_scope.rsKristiyan Kostadinov3
packages/compiler-cli/preprocessor/ng-analyze/src/analyzer/di_facts.rsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_deferred/deferred_with_duplicate_external_dep_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_let/let_in_child_view_inside_i18n_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_let/let_in_i18n_and_child_view_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_let/let_in_i18n_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_let/let_preceded_by_i18n_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_arrow_functions/arrow_function_defined_let.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/model_inputs/model_component_definition.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_let/let_invalid_forward_ref_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_let/let_local_forward_refs_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_let/let_local_refs_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_let/let_optimization_listener_template.jsKristiyan Kostadinov3
packages/compiler-cli/src/ngtsc/annotations/component/src/selectorless.tsKristiyan Kostadinov3
packages/compiler-cli/src/ngtsc/hmr/src/update_declaration.tsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_template_root_node_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_template_track_method_nested_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_template_track_method_root_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_element_root_node_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_control_flow/for_pure_track_reuse_template.jsKristiyan Kostadinov3
packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/nested_template_context_many_bindings_template.jsKristiyan Kostadinov3
adev/src/app/features/home/components/signals-demo/signals-demo.tsMatthieu Riegler3
adev/src/app/features/tutorial/tutorial-navigation-list.tsMatthieu Riegler3
adev/src/content/tools/devtools/BUILD.bazelMatthieu Riegler3
adev/src/content/tools/devtools/profiler.mdMatthieu Riegler3
adev/shared-docs/pipeline/shared/marked/transformations/code.mtsMatthieu Riegler3
devtools/projects/ng-devtools-backend/src/lib/profiling/profiler/native.tsGeorgi Serev3

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
Matthieu Riegler2,0541704,722
Joey Perrott1,7792124,622
Kristiyan Kostadinov1,1693143,109
Alex Rickabaugh7796202,009
Paul Gschwendtner6991462,234
Andrew Scott6253562,744
Pete Bacon Darwin458281,122
SkyZeroZx4091751,282
twerske391103693
Georgi Serev380245824
Alan Agius218771,383
Miles Malerba18837564
Wagner Maciel16335276
Ben Hong136112516
Aleksander Bodurri13250352
Angular Robot1235360
Shuaib Hasan Akib1208688
Jessica Janiuk10954940
Matthew Beck9559281
Misko Hevery924716
Dylan Hunn886444
Kam8728560
Andrew Kushnir80141,243
JoostK6935920
JiaLiPassion6627388

Showing top 25 of 1279 contributors.

Most shared files

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

FileContributorsPrimary ownerOwner share
CHANGELOG.md120Andrew Kushnir11.6%
package.json112Angular Robot24.5%
packages/router/src/router.ts69Andrew Scott40.3%
.pullapprove.yml66Joey Perrott15.9%
README.md64Igor Minar8.6%
CONTRIBUTING.md60Igor Minar14.0%
gulpfile.js57Igor Minar16.8%
packages/core/src/metadata/directives.ts57Alex Rickabaugh11.5%
packages/core/test/bundling/router/bundle.golden_symbols.json51Andrew Scott29.9%
packages/core/src/core_render3_private_export.ts42Kristiyan Kostadinov13.4%
packages/core/src/core_private_export.ts42Andrew Scott19.2%
packages/router/src/router_module.ts41Andrew Scott36.4%
packages/compiler-cli/test/ngtsc/ngtsc_spec.ts40Alex Rickabaugh22.2%
packages/router/src/directives/router_link.ts39Andrew Scott27.8%
packages/common/http/src/client.ts38Alex Rickabaugh12.7%
packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json37Andrew Scott15.5%
.gitignore37Alex Eagle10.5%
packages/forms/src/validators.ts37Matthieu Riegler11.6%
packages/common/src/directives/ng_for_of.ts37Matthieu Riegler12.9%
packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json36Andrew Scott15.6%