Aveloxis Metrics — Improvements on CHAOSS metrics
Aveloxis implements the metric families below with deliberate,
practical deviations from their nominal CHAOSS definitions. This page
is generated in lockstep with the /api/v1/metrics catalog (a test
fails the build if they drift); the GUI’s inline metric popovers and
its reference page render the same content.
Temporal metrics are served by GET /api/v1/compare (weekly or
monthly buckets, default window = trailing 3 years); snapshot
metrics by GET /api/v1/compare/snapshot. Up to 7 entities
(repositories or forge organizations) per comparison; an organization
is the union of its tracked repositories, with DISTINCT applied across
the union for people-counting metrics.
Contributors {#contributors}
id:
contributors· kind: temporal · unit: peopleOur definition: Distinct people with ANY contribution event (issue, change request, commit, comment, or event action) in the bucket. Soft-deleted merge-loser identities excluded.
Improvement on CHAOSS: Counts resolved platform identities (cntrb_id) across ALL activity types in one pass, rather than per-activity contributor lists.
CHAOSS nominal: https://chaoss.community/kb/metric-contributors/
Change Requests {#change_requests}
id:
change_requests· kind: temporal · unit: change requestsOur definition: Change requests (PRs/MRs) OPENED per bucket, state-agnostic. Companion series: change_requests_merged.
Improvement on CHAOSS: State-agnostic open counts with merged as a separate series, so review throughput and demand are not conflated.
CHAOSS nominal: https://chaoss.community/kb/metric-change-requests/
Change Requests Merged {#change_requests_merged}
id:
change_requests_merged· kind: temporal · unit: change requestsOur definition: Change requests merged per bucket (by merge time).
Improvement on CHAOSS: Bucketed by MERGE time, not open time — measures acceptance when it happened.
CHAOSS nominal: https://chaoss.community/kb/metric-change-requests-accepted/
Issues {#issues}
id:
issues· kind: temporal · unit: issuesOur definition: Issues opened per bucket, state-agnostic. Companion series: issues_closed.
Improvement on CHAOSS: Single state-agnostic series with closure as a companion, matching how triage teams read demand.
CHAOSS nominal: https://chaoss.community/kb/metric-issues-new/
Issues Closed {#issues_closed}
id:
issues_closed· kind: temporal · unit: issuesOur definition: Issues closed per bucket (by close time).
Improvement on CHAOSS: Closer attribution (closed_by) is collected/derived separately for ‘who closes’ analysis.
CHAOSS nominal: https://chaoss.community/kb/metric-issues-closed/
Code Change Commits {#code_change_commits}
id:
code_change_commits· kind: temporal · unit: commitsOur definition: Distinct default-branch commits per bucket (authored time). Matches the forge’s own commit metadata counts.
Improvement on CHAOSS: Default-branch-only via git log (not –all), deduplicated by commit hash across the per-file storage model.
CHAOSS nominal: https://chaoss.community/kb/metric-code-changes-commits/
Committers {#committers}
id:
committers· kind: temporal · unit: peopleOur definition: Distinct resolved commit authors per bucket. Commits whose author could not be resolved to a platform identity (~8% fleet-wide) are excluded and documented.
Improvement on CHAOSS: Uses deterministic platform-resolved identities (cmt_ght_author_id), not raw email strings, so renames and aliases collapse correctly.
CHAOSS nominal: https://chaoss.community/kb/metric-committers/
Burstiness {#burstiness}
id:
burstiness· kind: temporal · unit: B coefficientOur definition: Goh–Barabási B = (σ−μ)/(σ+μ) over bucketed activity counts (commits + change requests + issues), computed per bucket over a trailing 26-bucket window. B ∈ [−1,1]: −1 metronome-regular, 0 Poisson-random, →1 bursty.
Improvement on CHAOSS: Computed over bucketed activity counts rather than raw inter-event times — tractable at fleet scale and stable for cross-project comparison.
CHAOSS nominal: https://chaoss.community/kb/metric-burstiness/
Project Velocity {#project_velocity}
id:
project_velocity· kind: temporal · unit: z-scoreOur definition: Composite of issues closed, change requests merged, and commits: each series is z-scored against the entity’s own window mean, then averaged per bucket. Unitless; comparable across projects of different sizes.
Improvement on CHAOSS: Self-normalized z-score composite instead of raw log-log axes, so a 7-entity overlay reads directly.
CHAOSS nominal: https://chaoss.community/kb/metric-project-velocity/
Contributor Retention (Drive-by vs Repeat) {#contributor_retention}
id:
contributor_retention· kind: temporal · unit: contributorsOur definition: Each contributor in the entity’s repo set is classified by their TOTAL contribution count over all collected history (distinct commits, issues opened, change requests opened, reviews, and conversation comments): below the threshold = drive-by, at/above = repeat (?retention_threshold, default 4, mirroring 8Knot’s Contributions Required input). Contributors bucket by the month of their FIRST contribution; the series counts drive-by vs repeat per bucket. Bots and soft-deleted merge-loser identities are excluded.
Improvement on CHAOSS: Splits every new-contributor cohort into drive-by vs repeat by eventual total engagement (an 8Knot port), computed live from base tables over resolved platform identities — so one chart answers both ‘how many arrived’ and ‘how many stayed’.
CHAOSS nominal: https://chaoss.community/kb/metric-new-contributors/
This is the only multi-series temporal metric: GET /api/v1/compare
responses carry each entity’s points (per-bucket TOTAL new
contributors) plus a parts object with the drive_by and repeat
component series. The classification threshold is per-request
(?retention_threshold=N, N ≥ 1); the classification window is ALL
collected history, so a contributor’s drive-by/repeat class never
changes with the chart’s zoom level.
Labor Investment {#labor_investment}
id:
labor_investment· kind: snapshot · unit: person-monthsOur definition: COCOMO-II basic estimate from the latest source scan: person-months = 2.94 × KLOC^1.0997. Reported in person-months; multiply by your loaded cost per person-month for currency.
Improvement on CHAOSS: Derived from measured KLOC (SCC scan) with the cost multiplier left explicit and documented rather than baked in.
CHAOSS nominal: https://chaoss.community/kb/metric-labor-investment/
Upstream Code Dependencies {#upstream_dependencies}
id:
upstream_dependencies· kind: snapshot · unit: dependenciesOur definition: Count of direct RUNTIME-scope manifest dependencies with resolvable releases; detail carries median libyear staleness plus total_count/dev_count/dev_median_libyear companions for the non-runtime (dev/test/build/optional/peer) split.
Improvement on CHAOSS: Pairs the raw count with median libyear so ‘many but fresh’ and ‘few but rotten’ are distinguishable; the headline covers shipped (runtime) dependencies since v0.27.46 so dev-tooling expansion never inflates it.
CHAOSS nominal: https://chaoss.community/kb/metric-upstream-code-dependencies/
License Coverage {#license_coverage}
id:
license_coverage· kind: snapshot · unit: percent of filesOur definition: Percent of scanned source files carrying a detected SPDX license expression; detail carries files scanned and distinct SPDX ids.
Improvement on CHAOSS: File-level scancode detection (not just declared license), so partial/mixed licensing is visible.
CHAOSS nominal: https://chaoss.community/kb/metric-license-coverage/