Taming Mac OS X File Systems

Thursday, January 11, 2007 at 11:57 AM

Posted by Amit Singh, Mac Engineering Manager

Google is a fantastic company to work for. I could cite numerous reasons why. Take the concept of "20 percent time." Google engineers are encouraged to spend 20 percent of their time pursuing projects they're passionate about. I started one such exciting project some time back, and I'm pleased to announce that Google is releasing the fruits of this project as an open source contribution to the Macintosh community. That project is MacFUSE, a Mac OS X version of the popular FUSE (File System in User Space) mechanism, which was created for Linux and subsequently ported to FreeBSD.

FUSE makes it possible to implement a very functional file system in a normal program rather than requiring a complex addition to the operating system. More importantly, the FUSE API is very easy to program for. The large number of interesting and/or useful FUSE file systems out there is a testament to this. An often-cited example of such a useful file system is sshfs, which until now was not available on Mac OS X.

One of the missions of the Google Macintosh team is to contribute to the Mac community and make the Mac OS X experience better for users and developers. We hope that MacFUSE will not only make several existing FUSE file systems readily available to Macintosh users--typically, right out of the box--but will also help Macintosh developers give vent to their creative fervor and come up with innovative products and file systems that we have never seen before.

The MacFUSE implementation Google is releasing today includes the following components:
  • A virtual file system (VFS) kernel extension
  • A special-purpose mount_fusefs program
  • A patch to the FUSE user-space library
  • A patch to the SSHFS file system
More details on using and developing for MacFUSE are available on the project's Google Code page.

Small disclaimer: Please note that MacFUSE is a complex piece of software, and it is a work in progress. We believe in releasing early and often, so we're releasing it now so that the community can help us to make it more robust.

Finally, I would like to express my thanks to the FUSE developers for having created FUSE in the first place. Miklos Szeredi did a wonderful job with FUSE on Linux, and Csaba Henk did an equally great job porting FUSE to FreeBSD.

Enjoy your file systems!