In 2007, an engineer at Google named Amit Singh released one of the best programs for Mac ever written. It was amazing, incredible and even a little magical; and most Mac users probably never even realized it existed. It was called MacFuse.
MacFuse was a very interesting program. It took something very old (the computer filesystem) and made it new again, and thereby changed the world.
In the bad old days, writing file systems was the stuff of nightmares. It required blood sacrifice, misery and pain. If you messed up big, it could crash an entire computer system. If you only messed up a little bit, it would “only” result in data corruption and the loss of digital memories.
Fuse/MacFuse changed all that, though. Instead of requiring that an aspiring file systems developer work at the level of the kernel, it allowed for the work to happen in the “user-space”. This meant that the implemented file system code could be run by non-privileged users, and for all intents and purposes the file system was nothing more than a simple program.
By greatly simplifying the process of writing file systems, MacFuse opened the doors to all kinds of innovation. The code got incorporated into virtualization packages such as VMware Fusion and Parallels; and other developers made it available to end-users through projects such as MacFusion. MacFuse made it easier for users to connect their computers in new and interesting ways. If you wanted to connect to Wikipedia, or Google, or Flickr via a MacFuse plugin, you could.
It was file exchange Nirvana; and then, Snow Leopard killed it.
In fairness, I should probably point out that Snow Leopard killed lots of things. It caused old programs to stop working, corrupted data, and destroyed user accounts outright. From its release, Snow Leopard has been a gigantic mess. (Until quite recently, that is.) And though Apple has fixed some of the bugs (since version 10.6.3, things have gotten a lot better), there are some very important programs (like MacFuse) that still don’t work, and this caused problems. In the case of MaFuse, the problems have have come to (somewhat) impact my personal and professional lives. To be more specific, the broken state of has been hampering the release of Time Drive (my backup program). For, you see, the most recent version of Time Drive requires a Fuse plugin for one of the new features to work correctly.
On Linux, there isn’t a problem. The debian package system downloads sshfs and, boom, you’re ready to go. On Mac, though, it doesn’t work at all.
It doesn’t even pretend to work, and I find that to be rather annoying. More than annoying, actually. I find it to be aggravating, infuriating and it makes me want to hit someone. But as much as I would like to engage in violence, that is not going to solve the problem. And I very much wish to fix the problem. So … I did.
With the help of various online postings, I patched the MacFuse source code and created a version that is compatible with Snow Leopard. I also figured out how to build a command line copy of sshfs so that Time Drive will work. The combination of these two actions both made me feel better and even made Mac OS X feel like a magical platform again. (Well, almost.)
The remainder of this post will describe how you can get these things working for you. It will cover where to get the files, how to install them, and a brief guide to life simplification via MacFuse.
Words of Warnings and Wisdom
This series of posts will include two different guides to using MacFuse. The first will cover the installation of the patched and slightly revamped plugin, and how you can use Fuse to connect to other computers via FTP or SSH with MacFusion. The second will show how to install a command line version of sshfs, and thereby enable the “Remote Folders” features of Time Drive.
For most users of OS X, you probably will want to stop at the end of the first guide. By then you will have been exposed to a fantastic tool, and probably thought of a few ways it can change your life. The second guide requires quite a bit more effort (including compiling files from source), and though it provides some nice advantages (such as the ability to directly use all the features of Time Drive), you may not consider it worth the extra work.
In this series, I will make reference to four different files. These include:
- MacFuse 2.1.7 Installer (2.6 MB). The binary installation package for MacFuse. This version has been recompiled for both the 32 bit and 64 bit Snow Leopard kernels and against the Snow Leopard SDK.
- MacFusion. This is an open source program that makes it easy to mount remote server folders via secure shell (SSH) or FTP. It can be downloaded from the project’s home page.
- MacFuse 2.1.7 Source (6.0 MB). This zipped file contains the patched source code for MacFuse. You will need it to configure and compile the ssh command line program.
- sshfs 2.2 Source Code (126 KB). Source code for the sshfs command line program. Required to use the remote folders of Time Time Drive.
If you will be following the first guide only, you will only need the MacFuse installer and MacFusion. If you will be following the steps of the second guide, you will need the MacFuse source code and sshfs in addition to XCode and the gcc compilers. (For instructions on where to find XCode and how to install the GCC compilers, see the first half of this blog post.)
Guide 1: MacFuse Installation and MacFusion
To install MacFuse, download the installer file and extract the installation package. Then, double click on the .pkg file and follow the on-screen directions.
You will be prompted to accept the license agreement and select an installation drive.
And prior to installing the files, you will need to enter an administrator username and password for the computer.
When you press “Ok”, the Mac OS X package installer will take care of installing the proper frameworks and plugins.
Once MacFuse has been installed, you are ready to return to file sharing Nirvana. A good way to do this is by using a MacFuse front-end known as MacFusion. MacFusion makes it really easy to connect to remote computers via secure shell and FTP. Here’s how it works:
First, you download, extract and launch the application (like any other Mac program). Then, you enter in some details about the computer you’re connecting to and you press “Ok”. And … that’s about all there is to it.
To connect to the remote computer, all you have to then do is click on the “Mount” button next to the listing.
MacFusion (via MacFuse) will then create a connection and let you access the files on the remote computer as though they were stored on your local hard drive. After the initial configuration, you don’t need to mess with passwords, configuration dialogs or connection settings. It Just Works.
MacFusion includes plugin for both SSH and FTP.
Though it may sound a silly, the ability to instantly and quickly access your files through the operating system Finder is an enormous boost to productivity. It really can change your entire world. No longer are you forced to use multiple programs, copy information, or implement complicated versioning systems. Instead, you mount the remote computer, select the files that you need, work on them and unmount the computer when you’re done. Ten levels of complexity are instantly eliminated.
But if you only think of Fuse as a fancy FTP or SSH system, you are thinking much too narrowly. MacFuse makes it easy to access other information in ways that you might not have considered before. For example, do you use BootCamp and have an itch to get at your Windows files with read/write access from Mac? Well, it turns out that there is a Fuse plugin for NTFS that will let you do that.
Or have you ever wanted to use your GMail account to store your data? Well, there is a MacFuse plugin for that too. You can even use MacFuse to create true Spotlight smart folders that generate their contents on the fly.
There are a huge number of plugins, and it’s pretty likely that if you’ve thought about it, someone has created a plugin. You just need to open your mind to the possibilities; and in the next post of this series, I will describe one way that you can do so. That blog positing will show you how to go further and configure/compile Fuse plugins from the command line.