All developers

sashwinbalaji

Developer

sashwinbalaji

sashwinbalaji@google.com

122 commits~6 files/commit

Performance

YoY:+7150%
2026Previous year

Insights

Key patterns and highlights from this developer's activity.

Peak MonthJan'26495 performance
Growth Trend↑154%vs prior period
Avg Files/Commit6files per commit
Active Days68of 455 days
Top Repoperfetto122 commits

Effort Over Time

Breakdown of growth, maintenance, and fixes effort over time.

Bug Behavior

Beta

Bugs introduced vs. fixed over time.

Investment Quality

Beta

Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.

44%Productive TimeGrowth 83% + Fixes 17%
40%Maintenance Time
17%Wasted Time
How it works

Methodology

Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.

Relationship to Growth / Maintenance / Fixes

The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.

Proposed API Endpoint

Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:

POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json

Request:
{
  "startTime": "2025-01-01T00:00:00Z",
  "endTime": "2025-12-31T23:59:59Z",
  "bucketSize": "BUCKET_SIZE_MONTH",
  "groupBy": ["repository_id" | "deliverer_email"]
}

Response:
{
  "productivePct": 74,
  "maintenancePct": 18,
  "wastedPct": 8,
  "buckets": [
    {
      "bucketStart": "2025-01-01T00:00:00Z",
      "productive": 4.2,
      "maintenance": 1.8,
      "wasted": 0.6
    }
  ]
}

Recent Activity

Latest analyzed commits from this developer.

HashMessageDateFilesEffort
6c69806This commit provides **bug fixes** for the regex subsystem, addressing issues with both `libpcre2` build configuration and `RE2` type consistency. It updates the `tools/gen_android_bp` script and `Android.bp` files to use `whole_static_libs` for `libpcre2` when linked into `cc_library_static` and host targets, ensuring its symbols are correctly embedded and propagated to downstream consumers like `libandroid_runtime` and `libinputflinger`. Additionally, the `src/base/regex/regex_re2.h` header is modified to use `absl::string_view` for the `groups_` member, aligning its type with the `RE2::Match()` signature to prevent potential type mismatches across different build environments. This ensures robust and correct linking and type handling for regex functionalities.Mar 313waste
29d6612This commit performs a **refactoring** and **maintenance** task within the **Trace Processor's plugin core**. It explicitly adds the `<type_traits>` header include to `src/trace_processor/core/plugin/plugin.h`, ensuring all necessary type trait functionalities are directly available. This change improves build robustness by preventing potential compilation errors that could arise from implicit header dependencies, thereby enhancing the reliability of the **plugin system**.Mar 311maint
9862dfdThis commit performs a significant **refactoring** within the **`trace_processor`** by **removing a redundant internal regex wrapper** (`trace_processor/util/regex.h`). All components that previously relied on this wrapper now **directly utilize `base::Regex`**, streamlining the codebase. This change impacts regex functionality in the **dataframe query planner** (`StringConstraint`), the **bytecode interpreter's string filtering** (`StringFilterRegexImpl`), the **systrace importer's line tokenization** (`SystraceLineTokenizer`), and several **SQL intrinsic functions** such as `Regexp` and `RegexpExtract`. The migration simplifies regex handling and removes platform-specific support checks, enhancing maintainability and consistency across the project.Mar 3118maint
8051316This commit introduces **new capabilities** to the `base::Regex` module by integrating **RE2 and PCRE2 as optional regex backends**. These powerful engines can be selected at compile time via `PERFETTO_RE2` and `PERFETTO_PCRE2` build flags, with RE2 becoming the default on most platforms and PCRE2 on Android, offering significant **performance and feature enhancements** over `std::regex`. This required extensive **refactoring** of the `src/base/regex` implementation and comprehensive **build system updates** across GN, Bazel, and Android.bp, including new static library targets in `buildtools` and modifications to build flag generation scripts. The change provides greater flexibility and **performance improvements** for regular expression processing throughout Perfetto, particularly benefiting platform-specific deployments and complex regex operations.Mar 3135maint
34cd2b0This commit introduces a new **`base::Regex`** abstraction, which wraps `std::regex`, to standardize regular expression operations within the project. This **refactoring** effort migrates all existing direct uses of `std::regex` across various **Perfetto modules**, including `protozero/filtering`, `trace_processor/metrics`, and `tracing/service`, to utilize the new `base::Regex` interface. The change provides a consistent and potentially extensible API for regex functionality, improving **code maintainability** and enabling future enhancements or alternative regex backends. Comprehensive **unit tests and benchmarks** are included to validate the new `base::Regex` implementation.Mar 3118maint
10f7d5dThis commit primarily **fixes a type casting error** within the **Perfetto SDK's high-level track event library**. Specifically, it corrects the `reinterpret_cast` type from `Int64` to `Double` in the `InstanceOp` function when handling `PERFETTO_TE_HL_EXTRA_TYPE_COUNTER_DOUBLE`, ensuring that double-precision floating-point counter values are accurately recorded. Additionally, this commit performs a **minor cleanup** by removing a redundant `default_buffer_exhausted_policy` assignment. This **bug fix** improves the reliability of performance data collection by preventing misinterpretation of floating-point metrics in Perfetto traces.Mar 312waste
f0851b9This commit introduces a **new feature** to the **`tools/install-build-deps` script**, adding a `--public-pypi` command-line option. This option explicitly forces `pip` to use the public PyPI index when installing Python dependencies, overriding any default or privately configured package sources. This enhancement provides greater flexibility and control for users, allowing them to bypass private mirrors and ensure public package resolution during the build dependency setup. It improves the robustness of the dependency installation process in varied network environments.Mar 301grow
de58655This commit **introduces a new configuration flag**, `use_pcre2`, within the **Perfetto project** to control the **PCRE2 regex backend** on **Android**. Defined in `perfetto_flags.aconfig`, this **feature addition** provides explicit control over which regex engine is used for Perfetto operations on Android devices. It primarily affects the **Perfetto configuration system** and the **regex processing subsystem** on Android, allowing developers to manage this core dependency and potentially switch between regex implementations.Mar 301grow
533c6caThis commit **fixes a bug** in the **tracing buffer V2** (`tbV2`) where the `kChunkIncomplete` flag was prematurely cleared during rescraping operations. Specifically, the `CopyChunkUntrusted` function in `src/tracing/service/trace_buffer_v2.cc` is modified to ensure this flag is only removed when a chunk is genuinely complete, preventing incorrect state management for incomplete trace data. This **bug fix** improves the **reliability of trace data collection** by preserving the accurate status of chunks during their lifecycle. A new regression test, `ScrapeRecommitPreservesIncomplete`, has been added to `src/tracing/service/trace_buffer_v2_unittest.cc` to verify this behavior and prevent future regressions.Mar 272waste
a447c36This commit introduces a **new capability** to the **Perfetto tracing service**, enabling automatic trace capture when `traced_probes` disconnects from `traced`. It adds a trigger `perfetto.traced_probes.disconnect` that fires within the `DisconnectProducer` method when `traced_probes` unexpectedly terminates. This feature, guarded by the `trigger_perfetto_on_traced_probes_disconnect` aconfig flag, allows pre-configured trace sessions to automatically collect crucial diagnostics, significantly improving the debugging process for `traced_probes` crashes.Mar 263grow
c8c7739This commit **refactors** the **systrace parsing logic** by **removing the `pid_str` field** from the `SystraceLine` data structure. The `pid_str` field, which likely stored a string representation of the process ID, was deemed redundant or no longer necessary for core functionality. This change **simplifies the `SystraceLine` definition**, potentially **reducing memory overhead** and streamlining data handling within the **systrace analysis subsystem**. Downstream components that previously accessed `pid_str` will need to be updated, ensuring a more efficient and focused data model for systrace events.Mar 252–
f305e49This commit **fixes a bug** in the `tools/run_presubmit` script that prevented correct `merge-base` determination in **Android environments** when `repo upload` invoked the `pre-push` hook with a direct URL. The **presubmit logic** is improved by filtering out URL-like remote arguments and introducing fallback remotes like `origin/main` and `goog/main` for robust merge-base identification. This ensures that **presubmit checks** function reliably for Android developers, avoiding failures due to incorrect remote parsing. The change specifically targets the `run_presubmit` script's handling of Git remotes.Mar 241waste
cfea5bcThis commit **enhances the user interface** by introducing a consistent sorting mechanism for Android flags within the trace viewer. It modifies the `loadAndroidData` function in the **Android tab** of the `dev.perfetto.TraceInfoPage` plugin. Specifically, an `ORDER BY` clause is added to the underlying SQL query to sort Android flags by package and then by name. This **new feature** improves the readability and organization of trace information, making it easier for users to analyze Android-specific data.Mar 241grow
3c99795This commit **improves documentation** within the **Perfetto tracing protobuf definitions**. It adds explanatory comments to the `pkg` and `container` fields of the `AndroidAflags.Flag` message in both `protos/perfetto/trace/android/android_aflags.proto` and `protos/perfetto/trace/perfetto_trace.proto`. This **maintenance** change clarifies the purpose and usage of these fields, enhancing the understanding of Android Aflags data for developers and tools consuming Perfetto traces. The scope is limited to **protobuf schema documentation**, providing better context for data interpretation.Mar 244maint
0810c5dThis commit introduces **full support for Android aflags** within Perfetto, enabling comprehensive analysis of aconfig flag states. It **integrates new parsing logic** into the `AndroidProbesParser` to extract aflags data from traces, which is then stored in a new `android_aflags` table and exposed via a `aflags.sql` standard library view in the **Trace Processor**. The **Perfetto UI** is also enhanced with a dedicated 'Android Aflags' section on the `TraceInfoPage`'s Android tab, providing a detailed grid for visualization. This **new capability** significantly improves the ability to debug and analyze Android system configurations by making aconfig flag information readily accessible.Mar 2318grow
5d32182This commit introduces a **new capability** to Perfetto by adding the `android.aflags` data source within the **`traced_probes`** subsystem. This data source captures snapshots of Android aconfig flags by invoking `aflags list --format proto` and parsing the binary protobuf output. The work involved defining new proto messages (`AndroidAflagsConfig`, `AndroidAflags`), implementing the `AndroidAflagsDataSource` class in `src/traced/probes/android_aflags/`, and integrating it into the Perfetto build system and `ProbesProducer`. This enhancement allows Perfetto to monitor and analyze Android system configurations more comprehensively.Mar 2321grow
cb566a4This commit introduces a **new feature** to the **`DataGrid` component's JSON export functionality**, significantly enhancing the readability of exported data. It **refactors the `formatAsJSON` utility** to use human-readable column display names as keys in the exported JSON objects, replacing the previously used internal UUID aliases. This change ensures consistency with TSV and Markdown exports, making the JSON output much easier for users to understand and process. The update primarily affects the `ui` module's data export utilities, improving the overall **usability** of the DataGrid.Mar 203grow
04410d4This commit introduces a **new capability** by **automating the generation and upload of amalgamated C and C++ SDKs** within the **LUCI CI pipeline**. The `perfetto.py` recipe now includes an `UploadSDK` function, integrated into `RunSteps` for official builds, which pushes these SDK artifacts to GCS. This change significantly streamlines the **release process** by enabling downstream tools like `package-github-release-artifacts` to download SDK sources directly from GCS instead of generating them locally, and updates `roll-prebuilts` to correctly reference these CI-generated SDKs. The overall impact is a more efficient and consistent workflow for making Perfetto SDKs available.Mar 66grow
f3d613aThis commit **refactors the `stats` table schema** within the **Trace Processor's SQLite integration** to ensure data integrity. It **updates the primary key** for the `stats` table in `src/trace_processor/sqlite/stats_table.cc` to be a composite key of `name` and `idx`. This change addresses an issue where certain statistics names, such as `ftrace_cpu_bytes_begin` or `traced_buf_v2`, were not unique on their own, leading to potential key conflicts. By including the `idx` column, the commit guarantees that all entries in the `stats` table are uniquely identifiable, thereby improving the **reliability of trace processing statistics**.Mar 61maint
5998a41This commit **fixes** an issue in the **UI's trace loading logic** where the `local_cache_key` was incorrectly generated when trace metadata only contained a global session UUID. The `getTraceInfo` function in `ui/src/core/load_trace.ts` is updated to prioritize per-trace UUIDs, then fall back to a global session UUID, and finally use trace ID and type for cache key generation. This **bug fix** ensures **correct and stable caching** for traces loaded in the UI, preventing issues with trace identification and retrieval when only a global session UUID is present. It improves the reliability of the `local_cache_key` URL parameter for the **Perfetto UI**.Mar 62maint
6c69806Mar 31

This commit provides **bug fixes** for the regex subsystem, addressing issues with both `libpcre2` build configuration and `RE2` type consistency. It updates the `tools/gen_android_bp` script and `Android.bp` files to use `whole_static_libs` for `libpcre2` when linked into `cc_library_static` and host targets, ensuring its symbols are correctly embedded and propagated to downstream consumers like `libandroid_runtime` and `libinputflinger`. Additionally, the `src/base/regex/regex_re2.h` header is modified to use `absl::string_view` for the `groups_` member, aligning its type with the `RE2::Match()` signature to prevent potential type mismatches across different build environments. This ensures robust and correct linking and type handling for regex functionalities.

3 fileswaste
29d6612Mar 31

This commit performs a **refactoring** and **maintenance** task within the **Trace Processor's plugin core**. It explicitly adds the `<type_traits>` header include to `src/trace_processor/core/plugin/plugin.h`, ensuring all necessary type trait functionalities are directly available. This change improves build robustness by preventing potential compilation errors that could arise from implicit header dependencies, thereby enhancing the reliability of the **plugin system**.

1 filesmaint
9862dfdMar 31

This commit performs a significant **refactoring** within the **`trace_processor`** by **removing a redundant internal regex wrapper** (`trace_processor/util/regex.h`). All components that previously relied on this wrapper now **directly utilize `base::Regex`**, streamlining the codebase. This change impacts regex functionality in the **dataframe query planner** (`StringConstraint`), the **bytecode interpreter's string filtering** (`StringFilterRegexImpl`), the **systrace importer's line tokenization** (`SystraceLineTokenizer`), and several **SQL intrinsic functions** such as `Regexp` and `RegexpExtract`. The migration simplifies regex handling and removes platform-specific support checks, enhancing maintainability and consistency across the project.

18 filesmaint
8051316Mar 31

This commit introduces **new capabilities** to the `base::Regex` module by integrating **RE2 and PCRE2 as optional regex backends**. These powerful engines can be selected at compile time via `PERFETTO_RE2` and `PERFETTO_PCRE2` build flags, with RE2 becoming the default on most platforms and PCRE2 on Android, offering significant **performance and feature enhancements** over `std::regex`. This required extensive **refactoring** of the `src/base/regex` implementation and comprehensive **build system updates** across GN, Bazel, and Android.bp, including new static library targets in `buildtools` and modifications to build flag generation scripts. The change provides greater flexibility and **performance improvements** for regular expression processing throughout Perfetto, particularly benefiting platform-specific deployments and complex regex operations.

35 filesmaint
34cd2b0Mar 31

This commit introduces a new **`base::Regex`** abstraction, which wraps `std::regex`, to standardize regular expression operations within the project. This **refactoring** effort migrates all existing direct uses of `std::regex` across various **Perfetto modules**, including `protozero/filtering`, `trace_processor/metrics`, and `tracing/service`, to utilize the new `base::Regex` interface. The change provides a consistent and potentially extensible API for regex functionality, improving **code maintainability** and enabling future enhancements or alternative regex backends. Comprehensive **unit tests and benchmarks** are included to validate the new `base::Regex` implementation.

18 filesmaint
10f7d5dMar 31

This commit primarily **fixes a type casting error** within the **Perfetto SDK's high-level track event library**. Specifically, it corrects the `reinterpret_cast` type from `Int64` to `Double` in the `InstanceOp` function when handling `PERFETTO_TE_HL_EXTRA_TYPE_COUNTER_DOUBLE`, ensuring that double-precision floating-point counter values are accurately recorded. Additionally, this commit performs a **minor cleanup** by removing a redundant `default_buffer_exhausted_policy` assignment. This **bug fix** improves the reliability of performance data collection by preventing misinterpretation of floating-point metrics in Perfetto traces.

2 fileswaste
f0851b9Mar 30

This commit introduces a **new feature** to the **`tools/install-build-deps` script**, adding a `--public-pypi` command-line option. This option explicitly forces `pip` to use the public PyPI index when installing Python dependencies, overriding any default or privately configured package sources. This enhancement provides greater flexibility and control for users, allowing them to bypass private mirrors and ensure public package resolution during the build dependency setup. It improves the robustness of the dependency installation process in varied network environments.

1 filesgrow
de58655Mar 30

This commit **introduces a new configuration flag**, `use_pcre2`, within the **Perfetto project** to control the **PCRE2 regex backend** on **Android**. Defined in `perfetto_flags.aconfig`, this **feature addition** provides explicit control over which regex engine is used for Perfetto operations on Android devices. It primarily affects the **Perfetto configuration system** and the **regex processing subsystem** on Android, allowing developers to manage this core dependency and potentially switch between regex implementations.

1 filesgrow
533c6caMar 27

This commit **fixes a bug** in the **tracing buffer V2** (`tbV2`) where the `kChunkIncomplete` flag was prematurely cleared during rescraping operations. Specifically, the `CopyChunkUntrusted` function in `src/tracing/service/trace_buffer_v2.cc` is modified to ensure this flag is only removed when a chunk is genuinely complete, preventing incorrect state management for incomplete trace data. This **bug fix** improves the **reliability of trace data collection** by preserving the accurate status of chunks during their lifecycle. A new regression test, `ScrapeRecommitPreservesIncomplete`, has been added to `src/tracing/service/trace_buffer_v2_unittest.cc` to verify this behavior and prevent future regressions.

2 fileswaste
a447c36Mar 26

This commit introduces a **new capability** to the **Perfetto tracing service**, enabling automatic trace capture when `traced_probes` disconnects from `traced`. It adds a trigger `perfetto.traced_probes.disconnect` that fires within the `DisconnectProducer` method when `traced_probes` unexpectedly terminates. This feature, guarded by the `trigger_perfetto_on_traced_probes_disconnect` aconfig flag, allows pre-configured trace sessions to automatically collect crucial diagnostics, significantly improving the debugging process for `traced_probes` crashes.

3 filesgrow
c8c7739Mar 25

This commit **refactors** the **systrace parsing logic** by **removing the `pid_str` field** from the `SystraceLine` data structure. The `pid_str` field, which likely stored a string representation of the process ID, was deemed redundant or no longer necessary for core functionality. This change **simplifies the `SystraceLine` definition**, potentially **reducing memory overhead** and streamlining data handling within the **systrace analysis subsystem**. Downstream components that previously accessed `pid_str` will need to be updated, ensuring a more efficient and focused data model for systrace events.

2 files–
f305e49Mar 24

This commit **fixes a bug** in the `tools/run_presubmit` script that prevented correct `merge-base` determination in **Android environments** when `repo upload` invoked the `pre-push` hook with a direct URL. The **presubmit logic** is improved by filtering out URL-like remote arguments and introducing fallback remotes like `origin/main` and `goog/main` for robust merge-base identification. This ensures that **presubmit checks** function reliably for Android developers, avoiding failures due to incorrect remote parsing. The change specifically targets the `run_presubmit` script's handling of Git remotes.

1 fileswaste
cfea5bcMar 24

This commit **enhances the user interface** by introducing a consistent sorting mechanism for Android flags within the trace viewer. It modifies the `loadAndroidData` function in the **Android tab** of the `dev.perfetto.TraceInfoPage` plugin. Specifically, an `ORDER BY` clause is added to the underlying SQL query to sort Android flags by package and then by name. This **new feature** improves the readability and organization of trace information, making it easier for users to analyze Android-specific data.

1 filesgrow
3c99795Mar 24

This commit **improves documentation** within the **Perfetto tracing protobuf definitions**. It adds explanatory comments to the `pkg` and `container` fields of the `AndroidAflags.Flag` message in both `protos/perfetto/trace/android/android_aflags.proto` and `protos/perfetto/trace/perfetto_trace.proto`. This **maintenance** change clarifies the purpose and usage of these fields, enhancing the understanding of Android Aflags data for developers and tools consuming Perfetto traces. The scope is limited to **protobuf schema documentation**, providing better context for data interpretation.

4 filesmaint
0810c5dMar 23

This commit introduces **full support for Android aflags** within Perfetto, enabling comprehensive analysis of aconfig flag states. It **integrates new parsing logic** into the `AndroidProbesParser` to extract aflags data from traces, which is then stored in a new `android_aflags` table and exposed via a `aflags.sql` standard library view in the **Trace Processor**. The **Perfetto UI** is also enhanced with a dedicated 'Android Aflags' section on the `TraceInfoPage`'s Android tab, providing a detailed grid for visualization. This **new capability** significantly improves the ability to debug and analyze Android system configurations by making aconfig flag information readily accessible.

18 filesgrow
5d32182Mar 23

This commit introduces a **new capability** to Perfetto by adding the `android.aflags` data source within the **`traced_probes`** subsystem. This data source captures snapshots of Android aconfig flags by invoking `aflags list --format proto` and parsing the binary protobuf output. The work involved defining new proto messages (`AndroidAflagsConfig`, `AndroidAflags`), implementing the `AndroidAflagsDataSource` class in `src/traced/probes/android_aflags/`, and integrating it into the Perfetto build system and `ProbesProducer`. This enhancement allows Perfetto to monitor and analyze Android system configurations more comprehensively.

21 filesgrow
cb566a4Mar 20

This commit introduces a **new feature** to the **`DataGrid` component's JSON export functionality**, significantly enhancing the readability of exported data. It **refactors the `formatAsJSON` utility** to use human-readable column display names as keys in the exported JSON objects, replacing the previously used internal UUID aliases. This change ensures consistency with TSV and Markdown exports, making the JSON output much easier for users to understand and process. The update primarily affects the `ui` module's data export utilities, improving the overall **usability** of the DataGrid.

3 filesgrow
04410d4Mar 6

This commit introduces a **new capability** by **automating the generation and upload of amalgamated C and C++ SDKs** within the **LUCI CI pipeline**. The `perfetto.py` recipe now includes an `UploadSDK` function, integrated into `RunSteps` for official builds, which pushes these SDK artifacts to GCS. This change significantly streamlines the **release process** by enabling downstream tools like `package-github-release-artifacts` to download SDK sources directly from GCS instead of generating them locally, and updates `roll-prebuilts` to correctly reference these CI-generated SDKs. The overall impact is a more efficient and consistent workflow for making Perfetto SDKs available.

6 filesgrow
f3d613aMar 6

This commit **refactors the `stats` table schema** within the **Trace Processor's SQLite integration** to ensure data integrity. It **updates the primary key** for the `stats` table in `src/trace_processor/sqlite/stats_table.cc` to be a composite key of `name` and `idx`. This change addresses an issue where certain statistics names, such as `ftrace_cpu_bytes_begin` or `traced_buf_v2`, were not unique on their own, leading to potential key conflicts. By including the `idx` column, the commit guarantees that all entries in the `stats` table are uniquely identifiable, thereby improving the **reliability of trace processing statistics**.

1 filesmaint
5998a41Mar 6

This commit **fixes** an issue in the **UI's trace loading logic** where the `local_cache_key` was incorrectly generated when trace metadata only contained a global session UUID. The `getTraceInfo` function in `ui/src/core/load_trace.ts` is updated to prioritize per-trace UUIDs, then fall back to a global session UUID, and finally use trace ID and type for cache key generation. This **bug fix** ensures **correct and stable caching** for traces loaded in the UI, preventing issues with trace identification and retrieval when only a global session UUID is present. It improves the reliability of the `local_cache_key` URL parameter for the **Perfetto UI**.

2 filesmaint

Work Patterns

Beta

Commit activity distribution by hour and day of week. Shows when this developer is most active.

Collaboration

Beta

Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.

NavigaraNavigara
OrganizationsDistributionCompareResearch
NavigaraNavigara
OrganizationsDistributionCompareResearch