open-rmf / open-rmf/crossflow

Allow buffers to specify their message type

Open
#60 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
72
Forks
16
PR merge metrics
No merged PRs in 30d

Description

In this PR conversation I brought up the idea of having an optional "stable name" for message types which can then be referred to by buffer and join operations for cases where the target message type can't be reasonably inferred.

Ultimately we decided to pass on this idea because stable names are tricky to get right. We managed to implement the majority of buffer and join use cases without it.

However I've found situations where there's no way for a buffer operation to infer its target. If all the nodes using a buffer are using buffer access to put values in and out then the buffer itself cannot infer what its underlying data type is. In this situation the only way to make it work is to specify the message name for the buffer.

Even trying to specify a target accessing node wouldn't work because a node could access many different buffers simultaneously. In theory there might be convoluted ways to infer it with backward propagation, but this will probably be difficult to implement and confusing for users.

After #48 is finished we should revisit this feature in a follow-up PR.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the linked PR 51 discussion and issue #48, then trace the buffer and join operations. Define how a buffer can accept an explicit message type when inference is impossible, while preserving existing inference behavior. Done means buffer access works for the described case and the behavior is covered by the project's relevant tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.