asf_roster: ok git: ok github: ok github_commit_authors: ok github_issues: not_applicable github_profile: ok jira: ok ponymail: ok release: ok release_lines: ok security: ok subproject_releases: not_applicable

Conversation patterns classified

Explore individual threads →

Classified patterns in dev@ mailing-list and JIRA-comment messages and threads — escalation, constructive resolution, newcomer treatment and message-level patterns, 2017–2025. Counts and rates only, at the project level; no per-person data, no quotations, and no links from any number below back to an individual message (COMMUNITY-HEALTH.md §7.3/§7.4). Want to see individual sampled threads instead — linked to the public archive? See the Thread explorer (DECISIONS.md D27).

Summary
Tone over time

Weighted share of classified messages in each COMMUNITY-HEALTH.md §2.2 intensity tier, by quarter — a fixed, versioned mapping (never raw sentiment, §1.2), stacked to 100% per quarter. Tiers stack bottom (closing/positive) to top (attack); a quarter missing from a venue's chart is below the §5.1 minimum-sample floor ("insufficient data"), shown as a gap rather than a fabricated zero.

dev@ mailing list
JIRA comments

Omitted for insufficient_data: dev@ mailing list (2012Q2, 2012Q3)

Summary: 2017–2019 vs. 2023–2025

Counts per 1,000 classified messages at the headline (0.5 probability) cutoff, pooled and weighted across each window's sampled quarters, with thread-level bootstrap 95% confidence intervals. "CIs overlap" states only whether the two windows' intervals overlap — it does not characterize any difference as an improvement or a decline.

dev@ mailing list

2017-2019: 3458 messages, 354 authors · 2023-2025: 4016 messages, 182 authors

Label 2017-2019 (per 1,000) 2023-2025 (per 1,000) CIs overlap
acknowledgment 80.12 [69.37, 90.31] 102.21 [89.66, 115.77] overlapping
compromise_offer 88.65 [74.71, 102.54] 108.04 [94.09, 120.89] overlapping
constructive_counterargument 131.37 [114.79, 147.79] 122.68 [105.00, 139.59] overlapping
dismissiveness 7.93 [3.97, 13.18] 2.88 [1.23, 4.76] overlapping
evidence_based_argument 161.28 [144.45, 180.77] 110.77 [98.65, 124.04] not overlapping
gatekeeping 0.26 [0.00, 0.84] 0.24 [0.00, 0.75] overlapping
hostility 7.37 [4.40, 10.87] 3.70 [1.77, 6.11] overlapping
personal_attack 0.58 [0.00, 1.53] 0.22 [0.00, 0.69] overlapping
resolution_marker 43.52 [33.20, 55.78] 40.61 [32.29, 49.87] overlapping
sarcasm 6.95 [4.02, 10.38] 7.58 [4.50, 10.94] overlapping
status_authority_invocation 1.59 [0.30, 2.97] 1.47 [0.29, 2.87] overlapping
technical_disagreement 106.04 [91.37, 122.64] 120.59 [106.20, 135.85] overlapping

JIRA comments

2017-2019: 4443 messages, 323 authors · 2023-2025: 3862 messages, 158 authors

Label 2017-2019 (per 1,000) 2023-2025 (per 1,000) CIs overlap
acknowledgment 133.25 [121.01, 146.19] 90.51 [79.13, 102.77] not overlapping
compromise_offer 166.02 [147.43, 185.86] 116.09 [101.30, 130.24] not overlapping
constructive_counterargument 226.85 [207.34, 247.01] 179.01 [158.79, 199.16] not overlapping
dismissiveness 2.95 [1.47, 4.59] 1.96 [0.61, 3.37] overlapping
evidence_based_argument 379.06 [360.65, 398.89] 365.61 [346.48, 386.84] overlapping
gatekeeping 0.25 [0.00, 0.76] 0.00 [0.00, 0.00] overlapping
hostility 2.55 [0.87, 4.65] 1.28 [0.28, 2.44] overlapping
personal_attack 0.55 [0.00, 1.45] 0.34 [0.00, 1.09] overlapping
resolution_marker 113.66 [102.96, 124.85] 113.86 [99.61, 127.65] overlapping
sarcasm 4.92 [2.52, 7.71] 1.69 [0.52, 3.03] overlapping
status_authority_invocation 0.57 [0.00, 1.48] 1.07 [0.22, 2.28] overlapping
technical_disagreement 198.52 [177.87, 221.37] 134.97 [118.54, 150.07] not overlapping

Explore individual threads →

Newcomer treatment

Newcomer treatment

How messages directed at a newcomer (fewer than 3 prior messages in that venue at message time) are classified — constructive (acknowledgment/compromise offer/resolution marker) and dismissive/hostile responses are reported as two separate rates, never netted into one number.

dev@ mailing list
Window Newcomer-directed messages Distinct newcomers Constructive response rate Dismissive/hostile response rate
2017-2019 260 176 13.1% [8.8%, 17.3%] 3.8% [1.5%, 6.5%]
2023-2025 88 55 27.3% [18.2%, 38.6%] 1.1% [0.0%, 3.4%]
JIRA comments
Window Newcomer-directed messages Distinct newcomers Constructive response rate Dismissive/hostile response rate
2017-2019 164 122 15.2% [9.8%, 20.7%] 1.8% [0.0%, 4.3%]
2023-2025 50 38 20.0% [10.0%, 30.0%] 0.0% [0.0%, 0.0%]
How disagreements go

How disagreements go

Thread-level rates, derived deterministically from message-level classifications (COMMUNITY-HEALTH.md §2.3) — escalation, constructive resolution, abandonment after friction, and pile-on. A rate renders as "insufficient data" below its own minimum sample floor (§5.1/§5.2), which is expected for the rarer pile-on rate.

dev@ mailing list
Window Escalation rate Constructive resolution rate Abandonment after friction Pile-on rate
2017-2019 4.7% [1.4%, 8.6%] 13.5% [8.2%, 19.2%] 47.0% [32.6%, 62.3%] insufficient data
2023-2025 0.7% [0.0%, 1.8%] 12.4% [8.5%, 16.7%] 42.2% [26.8%, 57.8%] insufficient data
JIRA comments
Window Escalation rate Constructive resolution rate Abandonment after friction Pile-on rate
2017-2019 1.1% [0.0%, 2.7%] 48.0% [41.8%, 53.7%] 32.4% [16.9%, 49.9%] insufficient data
2023-2025 2.1% [0.0%, 4.7%] 46.8% [38.9%, 54.2%] insufficient data insufficient data
Message patterns

Year-over-year by label

Counts per 1,000 classified messages by label and year — one small mini-chart per label, year on the horizontal axis, with a shaded 95% confidence-interval band. Constructive and negative labels are two independent-scale groups of panels, and each panel's own y-axis scales independently within its group, so a less-common label's trend is never flattened by a more-common one. Years shown are whichever the controls below select; a year with insufficient_data for the selected venue is left out of the chart entirely (noted below) rather than shown as zero.

Constructive / discussion
Negative

Message patterns by year

Counts per 1,000 classified messages at the headline (0.5) cutoff, one panel per label, with a shaded 95% confidence interval band. Constructive and negative labels are shown as separate small-multiple groups so they are never visually netted against each other. Tables below each chart are the same data in full, as a no-JavaScript fallback.

dev@ mailing list
Constructive labels
Year Messages Authors acknowledgment compromise_offer constructive_counterargument evidence_based_argument resolution_marker technical_disagreement
2012 425 91
2013 745 133
2014 704 134
2015 787 132
2016 977 186
2017 1195 194
2018 1466 167
2019 797 135
2020 1426 140
2021 1388 119
2022 1101 109
2023 1093 97
2024 1336 106
2025 1587 110
2026 792 92
Negative labels
Year Messages Authors dismissiveness hostility personal_attack sarcasm gatekeeping status_authority_invocation
2012 425 91
2013 745 133
2014 704 134
2015 787 132
2016 977 186
2017 1195 194
2018 1466 167
2019 797 135
2020 1426 140
2021 1388 119
2022 1101 109
2023 1093 97
2024 1336 106
2025 1587 110
2026 792 92
JIRA comments
Constructive labels
Year Messages Authors acknowledgment compromise_offer constructive_counterargument evidence_based_argument resolution_marker technical_disagreement
2012 1798 159
2013 1602 150
2014 1864 167
2015 1722 194
2016 1524 166
2017 1440 173
2018 1521 130
2019 1482 146
2020 1705 118
2021 1792 104
2022 1837 94
2023 1867 91
2024 1127 82
2025 868 76
2026 511 60
Negative labels
Year Messages Authors dismissiveness hostility personal_attack sarcasm gatekeeping status_authority_invocation
2012 1798 159
2013 1602 150
2014 1864 167
2015 1722 194
2016 1524 166
2017 1440 173
2018 1521 130
2019 1482 146
2020 1705 118
2021 1792 104
2022 1837 94
2023 1867 91
2024 1127 82
2025 868 76
2026 511 60
Method & limits

Method & limits

  • Thread sampling: 60 threads per (venue, quarter) stratum, sampler seed 110, weighted by inclusion probability; 59 quarters covered (2012Q1–2026Q3).
  • JIRA comments: thread = one CASSANDRA JIRA issue's comment stream; quarter = the calendar quarter of the issue's created_at (jira/issue), since a JIRA issue has no separate thread-start concept in this schema and created_at is the closest analog to a mailing-list thread's root message time.
  • dev@ mailing list: thread = a dev@ Pony Mail thread (ponymail/message_thread); quarter = the calendar quarter of the thread's started_at (root message time); every message in a sampled thread is attributed to that one quarter, even if later replies land in a following quarter.
  • Headline probability cutoff: 0.5; sensitivity cutoffs: 0.7, 0.9. Thread-derivation headline cutoff: 0.5. A newcomer is anyone with fewer than 3 prior messages in that venue at message time.
  • Minimum sample floors: ≥30 messages and ≥10 distinct authors per cell, else "insufficient data" (COMMUNITY-HEALTH.md §5.1); thread-level rates use their own §5.2 floors (30 qualifying threads / 5 distinct participants, or 5 distinct targets for pile-on).
  • GitHub PR comments are out of scope for v1 (DECISIONS.md D7) -- only dev@ and JIRA comments are covered by this run.
  • Venues not covered by this snapshot: user@ mailing list, GitHub PR comments, ASF Slack.
Probability index floor (run-wide, uncalibrated)

Every message carries a small residual probability for every label, so the (secondary, trend-only) probability index has a floor even where a label essentially never applies. This is that floor — the unweighted median message probability per label, times 1,000, computed once across the whole run.

LabelFloor (per 1,000)
acknowledgment120.00
compromise_offer70.00
constructive_counterargument80.00
dismissiveness50.00
evidence_based_argument70.00
gatekeeping10.00
hostility20.00
personal_attack20.00
resolution_marker30.00
sarcasm30.00
status_authority_invocation20.00
technical_disagreement50.00
Public-benchmark sensitivity thresholds

Applied only to labels with a strong public mapping, each calibrated against a specific public dataset's best-F1 threshold — see docs/benchmark/public-v1.md.

LabelThresholdDatasetPermissive
hostility 0.4 Ferreira, Cheng & Adams -- LKML incivility ("Shut the f**k up", 2021) no
personal_attack 0.15 Ferreira, Cheng & Adams -- LKML incivility ("Shut the f**k up", 2021) yes
sarcasm 0.6 Ferreira, Adams & Cheng -- GitHub locked issues ("How heated is it?", 2022) no
Coverage

38479 of 38520 sampled messages were classified for this run. Truncated to fit the classifier's per-request length budget: 0. Skipped (never classified): 0.

Total classification cost for this run: $0.00; cumulative: $1.23.

What is not published
  • No per-person data of any kind, at any aggregation tier (COMMUNITY-HEALTH.md §7.3).
  • No quotations, and no link from any number above back to a specific message (§7.3/§7.4).
  • Any cell, rate, or label below its own §5.1/§5.2 minimum sample floor — shown as "insufficient data", never silently omitted.
  • No composite or blended "interaction health" score (§5.1).
  • No causal commentary on why any year's numbers differ from another's (§8).

Mailing-list metrics, computed from metadata only — sender, timestamp and thread structure — never message content.

dev@

dev@ reply responsiveness

Unanswered Thread Rate — dev@

established

55.9% Aug 2026

Based on: project-specific (no established CHAOSS/literature equivalent)

user@

user@ reply responsiveness

Same definitions, population and exclusions as dev@'s pair above (self-replies and automated senders excluded, completed-period rule) — reported separately, never combined with dev@.

Unanswered Thread Rate — user@

established

100.0% Apr 2026 backfill pending

Based on: project-specific (no established CHAOSS/literature equivalent)

List activity

List activity

Monthly volume for both lists — total messages, new threads started, and distinct sender addresses — computed from message metadata only. Unlike the reply- responsiveness metrics above, these are raw activity counts with no automated-sender exclusion.

Messages per month
New threads per month
Distinct senders per month
Charts default to the last 3 years.

Faint points mark a month flagged low-n or insufficient data — its statistic (a rate, an HHI, a median) comes from too few underlying events to be reliable on its own. Hover a point for its exact n and flag; the value itself is unchanged.

Not yet covered