# Filesystem in Userspace

> software interface for Unix-like operating systems that lets non-privileged users create file systems without editing kernel code

**Wikidata**: [Q966451](https://www.wikidata.org/wiki/Q966451)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/Filesystem_in_Userspace)  
**Source**: https://4ort.xyz/entity/filesystem-in-userspace

## Summary
Filesystem in Userspace (FUSE) is a software interface for Unix-like operating systems that allows non-privileged users to create file systems without editing kernel code. It provides a secure method for users to mount and interact with custom file systems through user-space programs.

## Key Facts
- FUSE allows non-privileged users to create and mount custom file systems without requiring kernel modifications
- Licensed under both GNU Library General Public License v2.0 and GNU General Public License v2.0
- Latest stable version is 3.2.0, released on September 12, 2017
- Available on GitHub at https://github.com/libfuse/libfuse
- Written primarily in C programming language
- Supports multiple operating systems including Linux, FreeBSD, NetBSD, and macOS (via macFUSE)
- Has 19 Wikipedia language editions and 66 sitelinks across Wikimedia projects
- Used by related projects including ifuse and macFUSE

## FAQs
### Q: What is FUSE used for?
A: FUSE is used to create custom file systems that can be mounted by non-privileged users without requiring kernel modifications. It's commonly used for network file systems, archive mounting, and specialized storage solutions.

### Q: Is FUSE free to use?
A: Yes, FUSE is free software licensed under both the GNU Library General Public License v2.0 and the GNU General Public License v2.0.

### Q: What programming language is FUSE written in?
A: FUSE is primarily written in the C programming language.

## Why It Matters
FUSE revolutionized file system development by democratizing the process and making it accessible to non-privileged users. Before FUSE, creating a new file system required kernel-level programming privileges and often necessitated modifying the operating system's core code. This created significant barriers to entry and limited file system innovation to a small group of kernel developers. FUSE eliminated these barriers by providing a user-space interface that handles all the complex kernel interactions, allowing developers to focus on file system logic rather than low-level kernel programming. This has led to rapid innovation in file system technology, enabling everything from cloud storage integration to specialized archival systems. The framework has become so fundamental that it's included in major Linux distributions and has inspired similar implementations on other operating systems, significantly expanding the ecosystem of available file systems and storage solutions.

## Notable For
- Enables non-privileged users to create custom file systems without kernel modifications
- Provides a stable, well-documented API that has become the standard for user-space file system development
- Supports a wide range of operating systems including Linux, FreeBSD, NetBSD, and macOS
- Powers numerous popular file system projects including SSHFS, NTFS-3G, and various cloud storage integrations
- Maintains backward compatibility while evolving with new features across major version updates

## Body
### Architecture and Design
FUSE operates through a client-server model where the FUSE kernel module acts as the server and user-space programs act as clients. When a file system operation is requested, the kernel module forwards the request to the user-space program, which processes it and returns the result. This architecture allows file system operations to be handled entirely in user space while maintaining the appearance of a native file system to applications.

### Version History
FUSE has evolved through multiple major versions, with the 2.x series providing long-term stability and the 3.x series introducing new features and improvements. Version 3.0.0 was released on December 9, 2016, followed by incremental updates including 3.0.1 through 3.0.2, 3.1.0 through 3.1.1, and the current stable 3.2.0. The 2.9.x series continues to receive maintenance updates, with 2.9.7 being the latest stable release in that branch.

### Implementation Details
The FUSE framework consists of a kernel module that provides the bridge between user space and kernel space, and a userspace library (libfuse) that simplifies the development of file system implementations. The kernel module handles the low-level details of file system operations, while libfuse provides a high-level API for developers to implement their file system logic. This separation of concerns allows developers to focus on file system functionality rather than kernel programming complexities.

### Cross-Platform Support
While originally developed for Linux, FUSE has been ported to multiple operating systems. FreeBSD and NetBSD include native FUSE support, while macOS uses a variant called macFUSE. The framework's portability has made it a standard tool for file system development across different Unix-like systems, with consistent behavior and APIs across platforms.

### Performance Considerations
FUSE operations involve context switches between kernel space and user space, which can introduce some overhead compared to native file systems. However, modern implementations include various optimizations such as caching and asynchronous operation handling to minimize performance impacts. For many use cases, the convenience and flexibility of FUSE outweigh the minor performance penalties, especially for network file systems and specialized storage solutions where native kernel support would be impractical.

## References

1. [SourceForge](https://sourceforge.net/projects/fuse/)
2. [Release 3.0.0. 2016](https://github.com/libfuse/libfuse/releases/tag/fuse-3.0.0)
3. [Release 3.2.0. 2017](https://github.com/libfuse/libfuse/releases/tag/fuse-3.2.0)
4. [Release 3.1.1. 2017](https://github.com/libfuse/libfuse/releases/tag/fuse-3.1.1)
5. [Release 3.1.0. 2017](https://github.com/libfuse/libfuse/releases/tag/fuse-3.1.0)
6. [Release 3.0.2. 2017](https://github.com/libfuse/libfuse/releases/tag/fuse-3.0.2)
7. [Release 3.0.1. 2017](https://github.com/libfuse/libfuse/releases/tag/fuse-3.0.1)
8. [Release 2.9.7. 2016](https://github.com/libfuse/libfuse/releases/tag/fuse-2.9.7)
9. [Release 2.9.6. 2016](https://github.com/libfuse/libfuse/releases/tag/fuse-2.9.6)
10. [Release 2.9.5. 2016](https://github.com/libfuse/libfuse/releases/tag/fuse_2_9_5)
11. [Release 2.9.4. 2015](https://github.com/libfuse/libfuse/releases/tag/fuse_2_9_4)
12. [Release 3.2.1. 2017](https://github.com/libfuse/libfuse/releases/tag/fuse-3.2.1)
13. [Release 3.2.2. 2018](https://github.com/libfuse/libfuse/releases/tag/fuse-3.2.2)
14. [Release 3.2.3. 2018](https://github.com/libfuse/libfuse/releases/tag/fuse-3.2.3)
15. [Release 3.2.4. 2018](https://github.com/libfuse/libfuse/releases/tag/fuse-3.2.4)
16. [Release 2.9.8. 2018](https://github.com/libfuse/libfuse/releases/tag/fuse-2.9.8)
17. [Release 3.2.5. 2018](https://github.com/libfuse/libfuse/releases/tag/fuse-3.2.5)
18. [Release 3.2.6. 2018](https://github.com/libfuse/libfuse/releases/tag/fuse-3.2.6)
19. [Release 3.3.0. 2018](https://github.com/libfuse/libfuse/releases/tag/fuse-3.3.0)
20. [Release 3.4.1. 2018](https://github.com/libfuse/libfuse/releases/tag/fuse-3.4.1)
21. [Release 2.9.9. 2019](https://github.com/libfuse/libfuse/releases/tag/fuse-2.9.9)
22. [Release 3.4.2. 2019](https://github.com/libfuse/libfuse/releases/tag/fuse-3.4.2)
23. [Release 3.5.0. 2019](https://github.com/libfuse/libfuse/releases/tag/fuse-3.5.0)
24. [Release 3.6.0. 2019](https://github.com/libfuse/libfuse/releases/tag/fuse-3.6.0)
25. [Release 3.6.1. 2019](https://github.com/libfuse/libfuse/releases/tag/fuse-3.6.1)
26. [Release 3.6.2. 2019](https://github.com/libfuse/libfuse/releases/tag/fuse-3.6.2)
27. [Release 3.7.0. 2019](https://github.com/libfuse/libfuse/releases/tag/fuse-3.7.0)
28. [1bcd8f445b5e. 2019](https://github.com/libfuse/libfuse/releases/tag/fuse-3.8.0)
29. [Release 3.9.0. 2019](https://github.com/libfuse/libfuse/releases/tag/fuse-3.9.0)
30. [Release 3.9.1. 2020](https://github.com/libfuse/libfuse/releases/tag/fuse-3.9.1)
31. [Release 3.9.2. 2020](https://github.com/libfuse/libfuse/releases/tag/fuse-3.9.2)
32. [Release 3.9.3. 2020](https://github.com/libfuse/libfuse/releases/tag/fuse-3.9.3)
33. [Release 3.10.0. 2020](https://github.com/libfuse/libfuse/releases/tag/fuse-3.10.0)
34. [Release 3.10.1. 2020](https://github.com/libfuse/libfuse/releases/tag/fuse-3.10.1)
35. [Release 3.10.2. 2021](https://github.com/libfuse/libfuse/releases/tag/fuse-3.10.2)
36. [Release 3.10.3. 2021](https://github.com/libfuse/libfuse/releases/tag/fuse-3.10.3)
37. [Release libfuse 3.10.4](https://github.com/libfuse/libfuse/releases/tag/fuse-3.10.4)
38. [Release libfuse 3.10.5](https://github.com/libfuse/libfuse/releases/tag/fuse-3.10.5)
39. [Release libfuse 3.11.0](https://github.com/libfuse/libfuse/releases/tag/fuse-3.11.0)
40. [Release libfuse 3.12.0](https://github.com/libfuse/libfuse/releases/tag/fuse-3.12.0)
41. [Release 3.13.0. 2023](https://github.com/libfuse/libfuse/releases/tag/fuse-3.13.0)
42. [Release 3.13.1. 2023](https://github.com/libfuse/libfuse/releases/tag/fuse-3.13.1)
43. [Release 3.14.0. 2023](https://github.com/libfuse/libfuse/releases/tag/fuse-3.14.0)
44. [Release 3.14.1. 2023](https://github.com/libfuse/libfuse/releases/tag/fuse-3.14.1)
45. [Release 3.15.0. 2023](https://github.com/libfuse/libfuse/releases/tag/fuse-3.15.0)
46. [Release 3.15.1. 2023](https://github.com/libfuse/libfuse/releases/tag/fuse-3.15.1)
47. [Release 3.16.1. 2023](https://github.com/libfuse/libfuse/releases/tag/fuse-3.16.1)
48. [Release 3.16.2. 2023](https://github.com/libfuse/libfuse/releases/tag/fuse-3.16.2)
49. [Release 3.17.2. 2025](https://github.com/libfuse/libfuse/releases/tag/fuse-3.17.2)
50. [fuse-3.17.4. 2025](https://github.com/libfuse/libfuse/releases/tag/fuse-3.17.4)