Fork me on GitHub

To avoid confusion developers of Fuse4X have decided to merge the project into OSXFUSE (another popular fuse port for OSX). The process is in progress but as of now (December 2013) is not finished yet.

Fuse4X allows you to extend Mac OS X's native file handling capabilities via 3rd-party file systems. It can be used as a software building block other products.

As a user, installing the Fuse4X software package will let you use any 3rd-party file system written atop Fuse4X.

As a developer, you can use the Fuse4X SDK to write numerous types of new file systems as regular user-mode programs. The content of these file systems can come from anywhere: from the local disk, from across the network, from memory, or any other combination of sources. Writing a file system using Fuse4X is orders of magnitude easier and quicker than the traditional approach of writing in-kernel file systems. Since Fuse4X file systems are regular applications (as opposed to kernel extensions), you have just as much flexibility and choice in programming tools, debuggers, and libraries as you have if you were developing standard Mac OS X applications.

In more technical terms, Fuse4X implements a mechanism that makes it possible to implement a fully functional file system in a user-space program on Mac OS X (10.5 and above). It provides API compatible with the FUSE (File-system in USEr space) API that originated on Linux. Therefore, many existing FUSE file systems become readily usable on Mac OS X.

The Fuse4X software consists of a kernel extension and various user-space libraries and tools. It comes with C-based and Objective-C based SDKs. If you prefer another language (say, Python or Java), you should be able to create file systems in those languages after you install the relevant language bindings yourself.

Goal and Vision of the project

Fuse4X has been forked off MacFuse project with intention to make it "FUSE reference implementation". Most Fuse filesystems are developed on Linux and later ported to other platforms such as FreeBSD/MacOSX/Solaris. All these filesystems expect that libfuse works the same way on all supported platforms. In general this is not true for MacFuse.

MacFuse (that for severals years was de-facto the main implementation of libfuse on macosx) had never compatibility as a project goal. The MacFuse author had motto "MacFuse is not Fuse" and over the years MacFuse became incompatible with the upstream project. While other forks (for FreeBSD/NetBSD/...) are developed closely with the Linux version, MacFuse development was more like a ghetto without dialogue with the rest of the FUSE community.

The goal of Fuse4X project is to develop FUSE implementation that is fully-compatible with the upstream project. Fuse4X pays a lot of attention to communication with the FUSE community as well. Fuse4X developers try to contribute its changes to the upstream project when possible.

It is highly recommended for cross-platform applications to use Fuse4X OSXFUSE. Also its binary distribution includes macfuse compatibility layer that allows legacy applications run together with fuse4x-specific applications.