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

Open Grant Proposal: Cross-Platform FUSE API #1826

Open
markg85 opened this issue Nov 23, 2024 · 0 comments
Open

Open Grant Proposal: Cross-Platform FUSE API #1826

markg85 opened this issue Nov 23, 2024 · 0 comments
Assignees

Comments

@markg85
Copy link

markg85 commented Nov 23, 2024

Open Grant Proposal: Cross-Platform FUSE API

Project Name: Cross-Platform FUSE API

Proposal Category: Developer and data tooling

Individual or Entity Name: Individual

Proposer: @markg85

Project Repo(s) https://github.com/crazyfuse (This project will be called Crazyfuse and will live in these repositories)

(Optional) Filecoin ecosystem affiliations: None

(Optional) Technical Sponsor: None

Do you agree to open source all work you do on behalf of this RFP under the MIT/Apache-2 dual-license?: Yes (I intent to use the MIT-0 license)

Project Summary

The goal of this project is to create a cross-platform FUSE (Filesystem in Userspace) API that enables developers to create filesystems that work seamlessly across multiple platforms, including Windows, macOS, and Linux. This API will provide a unified interface for interacting with local filesystems, allowing projects to integrate with these systems more easily.

Currently, developing a filesystem that works across multiple platforms is a challenging task, requiring a significant amount of time and effort to implement and maintain platform-specific code. The lack of a standardized, cross-platform FUSE API hinders the adoption of filesystems in various projects, limiting their ability to provide a seamless user experience.

This project aims to create a foundational infrastructural component that extends beyond the scope of Filecoin/IPFS, but rather addresses a widespread need in filesystem development. By providing a cross-platform FUSE API, we can simplify the process of developing and deploying filesystems, making it easier for projects to integrate with local systems.

Impact

The proposed project will have a significant impact on the Filecoin and IPFS ecosystems by providing a standardized, cross-platform FUSE API that enables developers to create filesystems that work seamlessly across multiple platforms. This will simplify the process of developing and deploying filesystems, making it easier for projects to integrate with local systems.

The benefits of this project include:

  • Simplified development and deployment of filesystems
  • Much improved integration with local systems
  • Potential adoption of filesystems in various (namely, but not exclusive to, distributed storage) projects

The risks of not getting this right include:

  • Continued fragmentation of filesystem development
  • Limited adoption of filesystems in various (namely, but not exclusive to, distributed storage) projects

Success for this project can be measured by the adoption of the cross-platform FUSE API in various projects and the simplicity of developing and deploying filesystems.

Outcomes

The final outcome of this project is a new, well-documented, cross-platform FUSE API that enables developers to create filesystems that work seamlessly across multiple platforms. To demonstrate the effectiveness of the API, a proof-of-concept example implementation will be provided, which will work on at least Linux and Windows. This implementation will be a fully functional filesystem, featuring:

  • Files and folders appear locally on the user's computer, visible in their file browser of choice (e.g., Windows Explorer, macOS Finder, Linux file managers), giving users a seamless and intuitive experience.
  • Users can interact with the filesystem using standard file system operations, such as drag-and-drop, copy-paste, and file system navigation, without needing to learn new commands or interfaces.

The API will be thoroughly documented on a website, providing clear instructions and guidelines for developers to create their own filesystems using the API. This will enable developers to build a wide range of applications and services that can leverage the power of filesystems, without requiring users to have extensive technical knowledge or experience.

By providing a low-barrier-to-entry solution for users to interact with filesystems, we can increase adoption and usage of decentralized storage solutions, and enable a wider range of use cases and applications that can benefit from the power of filesystems.

Adoption, Reach, and Growth Strategies

The target audience for the cross-platform FUSE API are projects that manage user data in various forms. The primary goal is to enable these projects to make their data accessible to users on their local file browser.

To promote the adoption of the API, I will employ the following strategies:

  • Outreach: Relevant projects and organizations will be contacted directly to inform them about the API and its benefits.
  • Blog posts: Articles will be written and published on the project's website to showcase the API's capabilities, provide tutorials, and share success stories.
  • News articles: Efforts will be made to get the API featured in news articles and publications that cater to the target audience.
  • Conference talks: A talk could potentially be given at a future IPFS or Filecoin event to showcase the API and its potential, and to network with potential adopters.

Development Roadmap

The development process will be broken down into 5 milestones, with estimated timelines and resources required for each milestone.

Milestone 1: Windows Backend Implementation

  • Tasks: Design and implementation of Windows-specific backend for the FUSE API
  • Estimated duration: 1.5 months
  • Resources: Myself, with expertise in Windows development
  • Dependencies: None

Milestone 2: Linux Backend Implementation

  • Tasks: Design and implementation of Linux-specific backend for the FUSE API
  • Estimated duration: 1.5 months
  • Resources: Myself, with expertise in Linux development
  • Dependencies: None

Milestone 3: macOS Backend Implementation

  • Tasks: Design and implementation of macOS-specific backend for the FUSE API
  • Estimated duration: 1.5 months
  • Resources: Myself, with expertise in macOS development
  • Dependencies: Availability of alternative filesystem implementation for macOS (due to Apple's deprecation of kernel drivers)

Milestone 4: FUSE API Development

  • Tasks: Design and implementation of the cross-platform FUSE API
  • Estimated duration: 1 month
  • Resources: Myself, with expertise in API design and development
  • Dependencies: Completion of at least two backend implementations

Milestone 5: Proof of Concept and Documentation

  • Tasks: Implementation of a working proof of concept that demonstrates the FUSE API's functionality on at least two platforms without code changes, along with comprehensive documentation of the API and its usage
  • Estimated duration: 1.5 months
  • Resources: Myself, with expertise in API testing and documentation
  • Dependencies: None

Assuming all milestones can be completed as planned, the total project duration is estimated to be approximately 7 months.

Total Budget Requested

I request funding on a month-by-month basis for the duration of the project, which is currently estimated to be approximately 7 months. Each month, an automatic transfer of €20,000 will be required to ensure the project's continued progress. The total amount of money requested for the entire 7-month period is €140,000.

To ensure the project's success, I propose that we schedule a monthly call to monitor progress, discuss any challenges or risks, and make adjustments to the project plan as needed. If there is a risk of the project taking longer than estimated, we can decide together whether it makes sense to continue with the project and allocate additional funding.

Milestone # Description Deliverables Completion Date Funding
1 Windows Backend Implementation Functional Windows backend for FUSE API - -
2 Linux Backend Implementation Functional Linux backend for FUSE API - -
3 macOS Backend Implementation Functional macOS backend for FUSE API - -
4 FUSE API Development Cross-platform FUSE API - -
5 Proof of Concept and Documentation Working proof of concept and comprehensive documentation - -

Maintenance and Upgrade Plans

To ensure the long-term sustainability of the FUSE API, I plan to leverage the open-source nature of the project to encourage community involvement and contributions.

  • Community-driven maintenance: I hope that developers who implement the API will take an active role in reporting bugs, submitting patches, and contributing to the project's maintenance.
  • Personal investment: As the project's creator, I will continue to be personally invested in the project's success and will contribute to bug fixes and releases to the best of my abilities.
  • Commercial support: For organizations that require priority support or custom development, I will be available for hire to work on fixes and features.
  • Community building: I aim to attract a small community of developers who can contribute to the project's maintenance and future development. By hosting the project on GitHub, I hope to foster a collaborative environment that encourages contributions and feedback.

By relying on a combination of community-driven maintenance, personal investment, and commercial support, I believe that the FUSE API can continue to evolve and improve over time, even after the initial development phase is complete.

Team

Team Members

  • Mark Gaiser

Team Member LinkedIn Profiles

Team Website

  • Not applicable

Relevant Experience

I have experience working on projects that aim to make decentralized technologies more accessible to the average user. In the past, I have worked on integrating IPFS protocols into existing tools, such as ffmpeg and curl. I am confident that I can bring this project to a successful end.

Team code repositories

Additional Information

Please contact me at [email protected] for discussing the grant agreement and general next steps.

Although the project will be developed under the terms of the MIT/Apache-2 dual-license, I personally prefer to release my work under the MIT-0 license.

Throughout the development of this project, I intend to attend all relevant Filecoin and IPFS conferences to share the project's progress and engage with the community. I would greatly appreciate sponsorship for attending these events, covering travel costs, accommodation, and event registration fees. Please note that the time spent attending these events will not be included in the project's milestones and duration.

By supporting this project, you will not only be contributing to the development of a vital piece of infrastructure but also enabling me to share this work with the broader community, fostering collaboration and growth in the ecosystem.

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

3 participants