Small Grant: Sia NFS Gateway (sia-nfs)

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: roland@rauch.com

Great proposal, finally an app that I could use

If there are any questions, or if anything is unclear, please let me know.

Hello,
Can you please provide some more information about this so that i can understand this .

Sure, what do you want to know in particular?

Thanks for your proposal to the Sia Foundation Grants Program. After review, the committee has decided to approve this proposal!

The committee saw your existing work on Github and appreciated your efforts. They liked the focus of your proposal and appreciated your realistic milestones and development goals.

We’ll reach out to the email address provided to start onboarding to the program. Onboarding can take up to a couple of weeks, so we’ll re-align on your milestone dates and deliverables once we’re close. Congratulations!