Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

evaluate FIDL for inter-node communication #426

Closed
tiziano88 opened this issue Jan 6, 2020 · 5 comments
Closed

evaluate FIDL for inter-node communication #426

tiziano88 opened this issue Jan 6, 2020 · 5 comments
Assignees

Comments

@tiziano88
Copy link
Collaborator

Our messaging system relies on sending bytes and handles separately, but we don't yet have a good mechanism for serialising and deserialising data structures from Rust or C++ into these components, so we currently do this by hand and inconsistently in our examples.

FIDL seems to address this by providing a mechanism for serialising and also for performing RPCs and message based communication, so it may be useful to look into it and see whether we can integrate it in Oak (both in the runtime, and also as an option for developers developing applications for Oak).

related to #420
blocks #389

@tiziano88 tiziano88 self-assigned this Jan 8, 2020
tiziano88 added a commit to tiziano88/oak that referenced this issue Jan 8, 2020
Some of the new features are needed for future FIDL support.

ref project-oak#426
tiziano88 added a commit to tiziano88/oak that referenced this issue Jan 8, 2020
We will need the `fidlc` and `fidlgen` binaries from it.

ref project-oak#426
tiziano88 added a commit to tiziano88/oak that referenced this issue Jan 8, 2020
The packages are all unmodified, apart from adding a `README.md` file
each to clarify provenance, and a `Cargo.toml` file when necessary.

ref project-oak#426
tiziano88 added a commit to tiziano88/oak that referenced this issue Jan 9, 2020
Some of the new features are needed for future FIDL support.

ref project-oak#426
@tiziano88
Copy link
Collaborator Author

@wildarch I wonder whether this is something you would be interested in looking into? I can provide more details in person the coming week, but I think this is potentially a good issue because:

  • it is interesting / non trivial
  • it is pretty Rust-specific
  • it is not currently blocking other parts of the project (so it would work well as an ongoing 20% kind of task)

For now perhaps you can read up on FIDL and take a look at some of the previous related PRs (some merged, some abandoned), e.g.: #442 #444 #445

@tiziano88 tiziano88 assigned wildarch and unassigned tiziano88 Mar 1, 2020
@wildarch
Copy link
Contributor

wildarch commented Mar 2, 2020

Sounds interesting! I'll take a look this week 😄

@wildarch
Copy link
Contributor

wildarch commented Mar 5, 2020

After some discussion with @tiziano88 I have decided to experiment with passing channels over GRPC/Protobuf first. Tracking that work in #673.

I will come back to working on this issue depending on the outcome of the experiment.

The main reason I'm hesitating to bet on using FIDL is that it is currently very much tied to the Fuchsia ecosystem, if this changes then FIDL might become a much more appealing alternative.

@wildarch
Copy link
Contributor

wildarch commented Jan 8, 2021

Since #1108 we support passing handles between nodes as fields in protocol buffers, so I don't think there is a need to still look into FIDL.

@wildarch wildarch closed this as completed Jan 8, 2021
@tiziano88
Copy link
Collaborator Author

Well, FIDL would still be much more expressive than protobuf I think, having generics, and the ability to pass references to other services in a type safe way. I would say we would need similar features either in protobuf, or for Rust structs, at some point.

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

No branches or pull requests

2 participants