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.