Conversation
84ecd9e to
df9de93
Compare
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>
df9de93 to
0450557
Compare
- 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. |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
Addressed — incorporated into the MANIFESTO Why section alongside Emerson's comment. The paragraph now covers both the undocumented interfaces point and the scaling/automated tooling angle.
emersonknapp
left a comment
There was a problem hiding this comment.
Some comments from our discussion today.
docs/MANIFESTO.md
Outdated
|
|
||
| ## 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. |
There was a problem hiding this comment.
code and entities as needed
There was a problem hiding this comment.
Done — updated to "generates the code and entities as needed".
docs/ROSGRAPH.md
Outdated
| covering the four goals of the ROSGraph Working Group: | ||
|
|
||
| ``` | ||
| rosgraph |
There was a problem hiding this comment.
Seeing this more as specific components that may or may not be wrapped by user interfaces like a CLI:
- Node spec
- Code generation
- Runtime discovery
- Node-level unit testing
- Graph analysis & comparison (integration-level testing)
- Documentation generation
There was a problem hiding this comment.
Call out order of importance:
- Node Spec (NoDL) most core part of the whole thing.
- 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.
rclcpprclpyrclrs??
Open question: implementation language for the generator tooling?
Hard requirement: nodl-generator is installable as part of a ROS distro (apt-get install, etc)
There was a problem hiding this comment.
Architecture requirement for codegen, sidechannel plugin for other language client libraries - rcljava or whatever
There was a problem hiding this comment.
All addressed in the ROSGRAPH rewrite. The proposal now frames these as independent, composable components (not CLI subcommands), ordered by priority:
- Node Spec (NoDL)
- Code Generation — plugin architecture for additional client libraries (e.g. rcljava), must be distro-installable
- Runtime Discovery
- Node-level Unit Testing
- Graph Analysis & Comparison (integration-level)
- Documentation Generation
Also calls out the open question on implementation language for the generator tooling.
- MANIFESTO: add undocumented interfaces problem, update wording - ROSGRAPH: greatly summarise from 1715 to 133 lines - Remove sections 3-12 (architecture, phasing, language choice, etc.) - Remove design principles (redundant with key insights) - Replace CLI subcommand tree with prioritised components - Add codegen requirements (plugin arch, distro-installable) - Condense gap table to bullet list - Clarify discovery vs monitoring distinction Signed-off-by: Luke Sy <sylukewicent@gmail.com>
1719062 to
fc02a8c
Compare
Signed-off-by: Luke Sy <sylukewicent@gmail.com>
alistair-english
left a comment
There was a problem hiding this comment.
this is much better to me (a good length!), and i think its worth having something in the repo as a starting point
docs/ROSGRAPH.md
Outdated
| 3. **Runtime Discovery** — introspect a running system and produce NoDL | ||
| specs from observed nodes. Enables brownfield adoption: point at an | ||
| existing system, generate `interface.yaml` files for every node, then | ||
| iteratively refine them. Unlike runtime monitoring (component 5), |
There was a problem hiding this comment.
i suppose its not the same (one-time vs continuous), but i suspect it will actually be the same thing (continuous monitoring = generate a spec from a running system and check for diffs)
|
|
||
| - Node A publishes `/cmd_vel` as `Twist`. Node B subscribes to | ||
| `/cmd_vel` as `String`. You discover this at runtime — or don't, | ||
| because the subscriber silently receives nothing. |
There was a problem hiding this comment.
along this line of thought - refactoring topic names across a system is difficult (e.g. you change your teleop node to produce /cmd instead of /cmd_vel and aren't sure what the downstream implications are)
docs/ROSGRAPH.md
Outdated
|
|
||
| ### Key Insights | ||
|
|
||
| Three key insights drive the design: |
There was a problem hiding this comment.
I don't really understand the significantce of the first two - are they worth the words?
docs/ROSGRAPH.md
Outdated
|
|
||
| ```yaml | ||
| schema_version: "1.0" | ||
| node: |
There was a problem hiding this comment.
a nitty-gritty schema design thing, but interface.yaml shouldn't have node and package keys - defining the node and package is not the responsbility of the yaml file.
In the chain of responsibility:
package has a -> node has an -> interface.
Interface doesnt look back the other way.
emersonknapp
left a comment
There was a problem hiding this comment.
Looks good, we should move forward. With caveat that I agree with @alistair-english comments. The key insights are a little hard to understand what they're trying to say, may not be necessary. And, the schema proposal may be too much detail here - but it doesn't hurt to have it, called out explicitly as an "illustrative directional example" but not concrete proposal. We will work on the schema itself as focused reviews.
- Add topic rename as a concrete problem example - Reframe discovery vs monitoring as same mechanism, different cadence - Collapse Key Insights to the one load-bearing point (codegen) - Remove node/package keys from interface.yaml example
Summary
Founding design documents for the rosgraph project:
docs/MANIFESTO.md— project direction: why, what, howdocs/ROSGRAPH.md— technical proposal: problem statement, prioritised components, key insights, and example schemadocs/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
interface.yamland what the tooling produces from it