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

remotefs: remote filesystem toolkit #18

Open
progrium opened this issue Nov 17, 2023 · 0 comments
Open

remotefs: remote filesystem toolkit #18

progrium opened this issue Nov 17, 2023 · 0 comments
Milestone

Comments

@progrium
Copy link
Contributor

9P is a protocol for remote filesystems like NFS. It's very simple and designed around a handful of RPC methods. We want to use this as the basis for interacting with remote filesystems over a pipe (specifically a Duplex pipe, and using Duplex RPC). Most immediately this will be used to expose the Wanix project directory to the Wanix environment via the dev server, but is expected to be a general purpose primitive that will eventually become part of the Tractor Toolkit.

Unlike other filesystem implementations, this involves two components. The first is a MutableFS implementation that is the client side, using 9P messages over Duplex to proxy FS operations to a host side. The second is the host, which is a Duplex server handling 9P messages to serve an FS implementation. This means you can take any MutableFS and put it in this host object and it will serve that FS to the client side.

This is not technically a 9P compatible implementation because 9P expects a different transport, but it is semantically compatible, so if that's ever needed an adapter can be written. We can likely use an existing 9P implementation in Go (there are several), as long as its decomposition allows us to ignore serialization and transport to use Duplex instead. There are also later versions of 9P, namely 9P2000/Styx, but these aren't necessarily preferred. We can also simplify the protocol as needed for now, such as removing auth (this is not intended to be used over a public endpoint).

@progrium progrium modified the milestones: 0.2, soon Nov 17, 2023
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

No branches or pull requests

1 participant