Read 2026-10-04
ocornut/imgui: technical due diligence, read from its repository
What Borehole read in ocornut/imgui's code and history at 46ff5a7: its licence, security advisories, releases, review practice, tests, dependencies and operations. Every finding cites the file and line it rests on. The full report also covers the team and asks the questions the code cannot answer.
| Dimension | Rating |
|---|---|
| Architecture & Codebase — including AI provenance | strong |
| Engineering Process & SDLC Maturity | adequate |
| Product & Engineering Maturity | adequate |
| Security & Reliability Posture | strong |
| Observability & Operations | not assessable |
| Fit with the Acquirer | not assessable |
What the repository says
.github/pull_request_template.md:9: states a policy on AI-generated contributions
Architecture & Codebase — including AI provenance
strongimgui.cpp is 18,706 lines, 97× this codebase's median file
adequateThe median source file here is 191 lines. 9 files exceed 1,910 lines, the largest being 18,706. Size is not a defect on its own — some problems genuinely live in one place — but these are where merge conflicts, review fatigue and single-owner knowledge concentrate, and they are the first thing that slows an inheriting engineer down.
imgui.cpp:1 — 18,706 lines (97× median) |
imgui_demo.cpp:1 — 11,395 lines (59× median) |
imgui_widgets.cpp:1 — 11,163 lines (58× median) |
imgui_draw.cpp:1 — 6,833 lines (35× median) |
imstb_truetype.h:1 — 5,086 lines (26× median) |
Engineering Process & SDLC Maturity
adequateTests are absent or token
adequate0 test files against 72 source files (0.0%). This does not measure whether the tests are good, only whether enough of them exist for the codebase to be changed safely by someone who did not write it — which is exactly the situation after an acquisition.
| 0 test files / 72 source files |
Product & Engineering Maturity
adequateChange keeps returning to the same few files
adequateFive files out of 946 absorb 55% of all file-level change. Concentration like this is where debt is usually being serviced rather than repaid: the same code is reopened because it is load-bearing, fragile, or both. A repository cannot tell you which — that is a conversation with the team.
imgui.cpp — 4,966 commits touched it |
imgui.h — 2,692 commits touched it |
imgui_internal.h — 2,067 commits touched it |
imgui_widgets.cpp — 1,492 commits touched it |
imgui_demo.cpp — 1,373 commits touched it |
527 unresolved debt markers, 4.5 per thousand lines
adequateThe codebase carries 527 TODO, FIXME, HACK or XXX markers across 115,983 lines. These are the team's own notes about work they knew was unfinished. A high density is not automatically bad — it can mean an honest team — but every one of them is a decision deferred, and after an acquisition they are deferred onto someone who was not in the room.
.github/ISSUE_TEMPLATE/issue_template.yml:29 — value: "Version 1.XX, Branch: XXX (master/docking/etc.)" |
.github/ISSUE_TEMPLATE/issue_template.yml:30 — placeholder: "Version 1.XX, Branch: XXX (master/docking/etc.)" |
.github/ISSUE_TEMPLATE/issue_template.yml:65 — XXX _(please provide as much context as possible)_ |
backends/imgui_impl_allegro5.cpp:93 — // FIXME-OPT: Unfortunately Allegro doesn't support 32-bit packed colors so we have to con |
backends/imgui_impl_allegro5.cpp:94 — // FIXME-OPT: Consider inlining al_map_rgba()? |
Security & Reliability Posture
strongNo finding.
Observability & Operations
not assessableNot rated: only 4 of 16 checks could reach a conclusion here; the rest do not apply to this repository or could not read it.
Fit with the Acquirer
not assessableNot rated: structurally not assessable from a repository.
Read more, or read your own
The full report on ocornut/imgui: every dimension, the questions for the room, and the audit log.
Survey a repository: free on public repositories. Private code is read on your own machine by a collector whose source you can read first.