Skip to content

Add initial design documents#1

Draft
lsy3 wants to merge 2 commits intoros-tooling:mainfrom
lsy3:docs/initial-design-proposal
Draft

Add initial design documents#1
lsy3 wants to merge 2 commits intoros-tooling:mainfrom
lsy3:docs/initial-design-proposal

Conversation

@lsy3
Copy link

@lsy3 lsy3 commented Feb 22, 2026

Summary

Founding design documents for the rosgraph project:

  • docs/MANIFESTO.md — project direction: why, what, how (short)
  • docs/ROSGRAPH.md — full technical proposal: schema, architecture, phasing, prior art, 51 features across 7 subcommands
  • docs/FAQ.md — audience-organized FAQ covering 9 perspectives (new ROS dev, AI-assisted dev, eng lead, safety engineer, nav2/MoveIt user, skeptic, package maintainer, educator, embedded dev)

Context

These documents are the starting point for WG discussion. The PR serves as the review and acceptance process — please comment inline.

Key sections in ROSGRAPH.md

  • §1 Executive Summary — the problem, the tool, quick start
  • §3 Architecture — graph model, schema layers, subcommands
  • §4 Phasing — what ships when
  • §5 Language Choice — Rust vs Python vs hybrid (open decision)
  • §9 Existing Ecosystem — maturity matrix and gap analysis

@lsy3 lsy3 force-pushed the docs/initial-design-proposal branch from 84ecd9e to df9de93 Compare February 22, 2026 18:37
Three founding documents for the rosgraph project:
- MANIFESTO.md: project direction (why, what, how)
- ROSGRAPH.md: full technical proposal (schema, architecture, phasing)
- FAQ.md: audience-organized FAQ covering 9 perspectives

Signed-off-by: Luke Sy <sylukewicent@gmail.com>
@lsy3 lsy3 force-pushed the docs/initial-design-proposal branch from df9de93 to 0450557 Compare February 22, 2026 18:48
- FAQ: reduce from 880 to ~360 lines, add General section with
  cross-cutting questions, keep 2-3 essential per audience
- FAQ: fix all PROPOSAL.md cross-references to ROSGRAPH.md
- FAQ: add launch file / param config convergence question
- ROSGRAPH §3.2: add "Toward a single source of truth" note on
  system.yaml replacing launch files and parameter configs
- ROSGRAPH §12: remove resolved questions section (internal notes)

Signed-off-by: Luke Sy <sylukewicent@gmail.com>

## Why

Robotics engineers spend too much time on ROS plumbing — writing boilerplate, debugging invisible wiring, and keeping launch files in sync with code — instead of building their application.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as systems get larger, they become harder to reason about. The lack of a "well defined" interface (topic, service, action) contracts makes this even harder. It also excludes any ability to have automated tools to give leverage over this problem

Copy link
Member

@emersonknapp emersonknapp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some comments from our discussion today.


## Why

Robotics engineers spend too much time on ROS plumbing — writing boilerplate, debugging invisible wiring, and keeping launch files in sync with code — instead of building their application.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Want to call out that the main interfaces of ROS systems (topics, parameters, services) are by default undocumented and don't have a story for how to do so easily and consistently. Code APIs can be generated but aren't how most users interact with most ROS packages


## What

A declarative, observable ROS graph. Engineers declare what their system should be; tooling generates the code and verifies the running system matches the spec.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code and entities as needed

covering the four goals of the ROSGraph Working Group:

```
rosgraph
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seeing this more as specific components that may or may not be wrapped by user interfaces like a CLI:

  1. Node spec
  2. Code generation
  3. Runtime discovery
  4. Node-level unit testing
  5. Graph analysis & comparison (integration-level testing)
  6. Documentation generation

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Call out order of importance:

  1. Node Spec (NoDL) most core part of the whole thing.
  2. Then, code generation and runtime discovery are the equal-importance next key components to making that NoDL useful.

nodl-generator takes NoDL input and outputs code for a ROS Client Library.

  • rclcpp
  • rclpy
  • rclrs??

Open question: implementation language for the generator tooling?

Hard requirement: nodl-generator is installable as part of a ROS distro (apt-get install, etc)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Architecture requirement for codegen, sidechannel plugin for other language client libraries - rcljava or whatever

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants