Project Name:
Sia NFS Gateway (sia-nfs)
Name of the organization or individual submitting the proposal:
Roland Rauch
Describe your project:
sia-nfs provides access to one or more Sia buckets via a regular NFS interface, allowing any compatible client to access the hosted files and directories directly without the need to run a Sia client or renterd. This gateway can be used from localhost to mount a Sia filesystem locally or made available to an entire network. Accessing and mounting are not limited to Linux; clients on MacOS, Windows, and possibly other operating systems should work without major issues. sia-nfs will be implemented in Rust, a safe and performant modern programming language, and will be available on all platforms where renterd is available. The resulting binary will be a standalone solution with no other dependencies besides renterd and common system libraries. This project proposal is in response to an RFP found at https://sia.tech/grants.
How does the projected outcome serve the Foundation’s mission of user-owned data?
Direct NFS accessibility offers several advantages:
- It allows transparent access to Sia-hosted content from most applications.
- A single gateway can make Sia content available to an entire network.
- NFS clients are well-established and available on many platforms.
- Enterprise integration will be much easier with the gateway, fitting into existing IT strategies.
Grant Specifics
Amount of money requested and justification with a reasonable breakdown of expenses:
The total amount requested is USD 6,400, which covers:
- 8 weeks of full-time work (320 hours @ USD 20/hour).
No additional equipment is required. During development, the testnet will be used, so no SC are required.
What are the goals of this small grant?
The goal of the grant is to provide enough funding to allow the development of the Sia NFS Gateway. The time estimate is based on previous experience building virtual file systems and the existence of an NFS server library that can be used.
Development Timeline:
Two milestones are planned:
- Milestone 1: Version 0.1.0 at the end of week 4. This version will be very basic and mostly untested. Basic functionality will be mostly complete, but performance will be slow, metadata caching will not be present, and write support might not be stable.
- Milestone 2: Version 0.2.0 at the end of week 8. Metadata caching will be implemented, and performance will have improved accordingly. Write support will now be stable (however, partial writes might not be supported). Clients on major platforms (Linux, Windows, MacOS) will have been tested. Usage documentation and a Docker image will be available. This will be the first generally usable release.
Features & Scope:
- A single, standalone program that runs on every platform where renterd is available.
- Integrated metadata cache to improve access performance, reduce latency, and lower usage costs.
- Fully open source (Apache-2.0 license) with a public repository on GitHub.
- Basic usage documentation and example configurations.
- A small, standalone Docker image that includes sia-nfs and renterd for a complete out-of-the-box solution.
Potential risks that may affect the outcome of the project:
- The current renterd API is not ideal for some filesystem usage patterns. This can lead to performance issues and will require certain trade-offs such as proactive metadata caching and usage limitations, e.g., partial writes cannot be easily supported.
- Excessive metadata caching could lead to stale data as the current renterd API has no mechanism to subscribe to external change events.
- NFS is a somewhat archaic protocol with a diverse number of clients. The NFS server library this project is going to use (https://github.com/xetdata/nfsserve) is a young project, and compatibility is still limited. Depending on the use case and the client used, this could lead to issues that could limit the gateway’s usefulness.
- Windows does not come with its NFS client preinstalled. It needs to be installed first and requires Windows Pro, so Home users will not be able to use it. If widespread Windows support is required, WebDAV support could be added. However, this would add 2-3 weeks of additional development and testing time and would therefore require additional funding.
Development Information
Will all of your project’s code be open-source?
Yes, the code will be fully open source and will be made available on GitHub (Apache-2.0 license). Furthermore, all libraries used are also open source.
Leave a link where the code will be accessible for review.
A repository will be created on GitHub once the grant is approved.
Do you agree to submit monthly progress reports?
Certainly!
Contact Info
Email: [email protected]