Reports › Contract docs › name-research
Name research: 20 alternatives to RobotDiagnostics
2026-10-22. The scored list behind two decisions: keep the name RobotDiagnostics (superseded) and the name is RobotDx. Written by Claude Code (Opus 5.5) for Zach on the day, from a public availability check of each domain and package name. Availability is as of 22 October 2026 and goes stale; the scores are the analysis that day, not a later ruling.
The question
The working name was IO diagnostics. Zach liked the idea of shipping this sub-part of the system as its own thing, found robotdiagnostics.dev cool but long, and asked for 20 other possible names for the type, the repo and the domain. His lean was to keep "diagnostics", because it is the word ROS people already use for this very specific thing (the /diagnostics topic, the OK, WARN, ERROR and STALE levels, the aggregator tree, rqt_robot_monitor).
Criteria
| Criterion | Weight |
|---|---|
| A ROS person recognises it | 35% |
It reads as Robot<Type> beside RobotPart and RobotDescription |
20% |
| The domains and the PyPI name are free | 15% |
| It covers the whole scope: status, staleness, identity and actions | 15% |
| It is short and easy to spell | 15% |
The scored list
"Free" means unregistered. "Parked" means a reseller holds it and it is for sale. A registry can still charge a premium for a free name.
| # | Name | .com | .dev | PyPI | Score | Why |
|---|---|---|---|---|---|---|
| robotdiagnostics | parked, for sale | free | free | 4.40 | The only cost is length and spelling | |
| 1 | robotdiag | parked | free | free | 4.15 | Best short form; use as a redirect |
| 2 | robotdiags | free | free | free | 4.10 | Every domain is free, but it reads like slang |
| 3 | robothealth | parked, for sale | free | free | 4.00 | Plain English, but "health" means nothing specific in ROS |
| 4 | robotobd | free | free | free | 3.95 | A car's on-board diagnostics port; it says cars |
| 5 | diagnosticstatus | free | free | free | 3.80 | Literally the ROS message type; no "robot" in it |
| 6 | openrobotdiagnostics | free | free (.org too) | free | 3.70 | A nod to Open Robotics, but it reads as affiliated with them, who hold the ROS trademark |
| 7 | robotmonitor | taken | free | taken | 3.70 | Nods to rqt_robot_monitor, but the PyPI name is gone |
| 8 | partdiagnostics | free | free | free | 3.50 | Ties to RobotPart, but leaves out wires and software |
| 9 | robotdoctor | taken | free | free | 3.50 | Like ros2 doctor, it means a one-off setup check, not live status |
| 10 | robotstatus | taken | free | free | 3.50 | Generic, and easy to confuse with robot state (joint states) |
| 11 | iodiagnostics | free | free | free | 3.30 | The working name; covers IO only, and software components are wanted later |
| 12 | diagnosticarray | free | free | free | 3.30 | The container type; weaker than DiagnosticStatus |
| 13 | robotheartbeat | free | free | free | 3.20 | A heartbeat shows only whether something is alive, one slice (STALE) |
| 14 | robotvitals | for sale | free | free | 3.15 | A medical metaphor with no robotics meaning |
| 15 | robothealthkit | free | free | free | 3.15 | Collides with Apple's HealthKit trademark |
| 16 | robotselftest | free | free | free | 3.15 | ROS's self_test means on-demand tests only |
| 17 | robotdtc | free | free | free | 3.10 | Diagnostic trouble codes, as in cars: faults only, and jargon |
| 18 | robotfaultcodes | free | free | free | 3.00 | Faults only |
| 19 | robotselfcheck | free | free | free | 2.80 | Narrow, and no existing meaning to lean on |
| 20 | robottelltale | free | free | free | 2.60 | A car's warning lamps are tell-tales (ISO 2575). Charming, but nobody knows the word |
Dropped before scoring, because the .com was taken
robodiag, robodiagnostics, botdiagnostics, robotdiagnostic, robotdiagnosis, robotdx (the note adds that "Dx" is medical shorthand for diagnosis), robotpulse, robotwatch, robottelemetry, robotinspector, robotcheckup, robotpreflight, robotmedic and diagkit. Any "medkit" name would also collide with ros2_medkit, a live ROS 2 diagnostics project.
What was recommended
Keep robotdiagnostics, on robotdiagnostics.dev, and keep ROS's own type names inside the package so that DiagnosticStatus reads with zero relearning. Dependencies point one way: the diagnostics package depends on nothing, a part in the RobotParts catalogue may list the statuses it emits, and the catalogue is never imported by diagnostics.
What happened next
On 23 October Zach chose RobotDx anyway. The decision, and what stayed the same under the new name, is on its own page.