Self-Admitted Technical Debt · Ruby on Rails
Where Rails hides its technical debt
The SATD literature built on Java says developers write TODO,
FIXME, HACK to flag debt.
Rails developers don’t. Across 1.55 million lines of Ruby in
five major projects, over half of acknowledged technical debt takes a different form —
rubocop:disable — a category absent from every SATD taxonomy published so far.
How this was made
From 1.55 million lines of Ruby to a typology
- 11,546,031 lines · 5 projects
Every
.rbfile in the repositories of Decidim, Discourse, Solidus, Spree, and Mastodon, scanned for ten SATD keywords – TODO, FIXME, HACK,rubocop:disable, and six more. - 2907 raw comments extracted
Keyword matching produces noise – the word “review” appears in feature names,
rubocop:disablehides inside test fixtures. A stratified sample of 400 comments was read by hand to measure per-keyword false-positive rates. - 3775 / 398 validated · Scenario A / B
False-positive rates are projected back onto the full dataset. Results are reported twice – once including
rubocop:disableas formalized SATD, once excluding it – because the literature disagrees on whether linter suppressions count as debt.
Data was extracted in March 2026 from the default branch of each repository – no feature branches, forks, or tags. Every GitHub link in the browser below is pinned to the exact commit analyzed on that date, so lines and files stay frozen in time.
The scripts, raw 907-comment dataset, the 400-comment validated sample, and per-module statistics are all archived on Zenodo under a permanent DOI. Any number on this page can be reproduced from that archive.
The scenario story
Projects diverge when rubocop:disable leaves the table
Decidim’s corrected density drops from 0.59 to
0.04 when linter suppressions are excluded – 91% of its formalized debt
lives in rubocop:disable. Mastodon stays high. Flip the toggle to see it.
Explore the dataset
400 comments, read by hand
The keyword scan returned 907 candidate comments across five projects. 400 of them – a stratified sample covering every keyword and every project – were then read and classified manually. Those 400 are the ones you can browse below. Filter, search, and click through to the exact line on GitHub.
Cite & use
Everything is reproducible
The full peer-reviewed paper is published in American Impact Review. The dataset (907 raw SATD comments, 400 manually classified), all Python analysis scripts, and the per-module statistics live on Zenodo under a permanent DOI. Any number shown here comes directly from that archive – no post-hoc adjustments.