FUSE is a project that makes it easy for developers to build filesystems and virtual filesystems, by allowing their code to run in userspace, rather than at the kernel level.
What this practically means is that it is relatively simple for any developer to create programs that allow you to access data and services through your filesystem - for example, GmailFS allows you to save and retrieve data through attachments in your Gmail account.
In this post, I'm going to round up four useful implementations of FUSE and briefly explain what each one does and how it could be useful to you.
Some digital cameras make themselves appear to your computer as a simple USB Mass Storage Device, in the same way as a USB memory stick. Others, however, use a system called Picture Transfer Protocol (PTP).
While it is possible to use the Gphoto library and programs to access PTP-based cameras, it arguably isn't as easy as being able to access the photos through any application, like you would if it were mass storage.
That's where Gphotofs comes in. It provides a FUSE-based bridge, so that even cameras that use PTP can work just like Mass Storage devices, by mounting that camera into a directory.
Gphotofs should be available as a package called gphotofs in most Linux distributions.
SFTP is an FTP-like protocol that runs atop of the Secure Shell (SSH) and allows you to transfer files between a remote server and your local machine in a completely secure manner.
While some desktop environments like KDE allow you to transparently access files through SFTP in their applications, SSHFS is an official FUSE project that makes this even easier, and desktop-independent.
With SSHFS, you mount a SSH/SFTP server and directly mount the remote filesystem into a directory on your machine. Now any application, regardless of whether it's KDE, GNOME or even a command line program can transparently read and write to the remote machine on the fly.
This project is especially useful for dual boot users and others who need to access Windows filesystems.
NTFS-3G is a stable read and write driver for Microsoft's NTFS file system. You can use NTFS-3G to access Windows partitions and safely read and write data to and from them.
Previously, the only reliable support for NTFS was read, so people who dual booted Windows and Linux would be able to read their Windows files in Linux, but not write them. NTFS-3G, since February 2007, has provided the solution to that problem, making the lives of a lot of switchers that bit easier.
Technically speaking, NTFS-3G can now be run independently of FUSE, so it isn't necessarily a FUSE implementation anymore.
This one might seem a little bit more of a proof of concept rather than something that might seriously be useful at first, but WikipediaFS is interesting nonetheless.
As the name suggest, it allows you to mount Wikipedia (or any Wikimedia-based wiki, for that matter) inside a directory on your system.
You can then read the articles in the wiki (in the source wiki format) and edit them. Any edits you make locally are instantly saved back to the wiki.
On Wikipedia specifically, this might be useful if you're a heavy editor and want to use your favourite text editor rather than the web interface, but it also may be useful for creating scripts and programs that manipulate wikis, by abstracting the job of fetching and pushing the data, so you only have to manipulate files in your application.
What are your favourite uses of FUSE - whether genuinely useful or just cool proof of concepts? Share in the comments.