This was generated on 2006/10/17 from

  http://fuse.sourceforge.net/wiki/index.php/LanguageBindings
  http://fuse.sourceforge.net/wiki/index.php/FileSystems
  http://fuse.sourceforge.net/wiki/index.php/OperatingSystems

For an up to date version please see the above pages.  You can also
add new entries there.




Language Bindings
~~~~~~~~~~~~~~~~~

===============================================================================
***** C *****
This is the native API
===============================================================================
***** C++ *****
Name: FUSE++
Author:
Victor_Porton
Homepage:
http://freesoft.ex-code.com/virtual-filesystems.xml
  Description
      Advanced template C++ bindings for FUSE. Also contains several useful
      filesystems. In the future will contain the FTP fs.
===============================================================================
***** C++ *****
Author:
Gerard_J._Cerchio
Download:
http://www.circlesoft.com/fusecpp.h
  Description
      This is perhaps a less advanced C++ Binding, but at least you can see it.
      This object was tested by placing the entire Hello example progam in a
      class, setting the 4 hello operations and calling fuse main with
      dispatch.get_fuseOps() as the third argument. The ls of the mount point
      produces the hello and the cat of the inode produces Hello World!
===============================================================================
***** Java *****
Name: FUSE-J
Author: Peter Levart / peter.levart at select-tech si
Download:
http://sourceforge.net/projects/fuse-j
  Description
      FUSE-J provides Java binding for FUSE. It comes with the "proof-of-
      concept" ZIP filesystem which seems to be pretty stable.
===============================================================================
***** C# *****
Name: SULF - Stackable User-Level Filesystem
Author: Valient Gough / vgough at gmail dot com
Homepage:
http://arg0.net/users/vgough/sulf/index.html
  Description
      SULF allows you to write a Linux filesystem in C#. This is being replaced
      with general SWIG based bindings (see "SWIG Bindings" below)
===============================================================================
***** C# *****
Name: Mono.Fuse
Author: Jonathan Pryor
Homepage:
http://www.jprl.com/Projects/mono-fuse.html
  Description
      Mono.Fuse provides bindings for all mono supported languages, with a few
      design choices different from SULF (and SWIG).
===============================================================================
***** Haskell *****
Name: hfuse
Author: Jeremy Bobbio
Darcs repository:
http://darcs.haskell.org/hfuse/
===============================================================================
***** Haskell *****
Name: FuseIO
Author: David Roundy
Darcs repository:
http://abridgegame.org/repos/fuse_example
Mailing list announcement:
http://article.gmane.org/gmane.comp.lang.haskell.cafe/8110
===============================================================================
***** TCL *****
Name: TCL FUSE interface
Author: Colin McCormack? / colin at chinix com
Homepage:
http://mini.net/tcl/13853
===============================================================================
***** Python *****
Name: Python interface for FUSE
Author: Jeff Epler
Maintainer: CsabaHenk
Homepage:
http://fuse.sourceforge.net/wiki/index.php/FusePython
===============================================================================
***** Perl *****
Name: Perl interface for FUSE
Author: Mark Glines
Maintainer: Dobrica Pavlinusic / dpavlin at rot13 org
Homepage:
http://search.cpan.org/~dpavlin/Fuse/
CVS: cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fuse co -P perl
===============================================================================
***** Sh *****
Name: Fuse-J-shfs
Author: Paul "Joey" Clark / joey at hwi ath cx
Homepage:
http://hwi.ath.cx/twiki/bin/view/Neuralyte/FuseJshfs
  Description
      Fuse-J-shfs lets you easily implement a virtual filesystem in Unix
      shellscript. And naturally, it already has some handy vfs implementations
      you can use straight away: gzip, rar, sparse, ...
===============================================================================
***** SWIG bindings *****
Name: FuseWrapper
Author: Valient Gough / valient at gmail dot com
Homepage:
http://arg0.net/wiki/fusewrapper
  Description
      Provides SWIG wrappers for FUSE low-level API, which allows you to create
      filesystems in many high level languages. Basic C#, Java, and Perl
      filesystems have been tested, but any SWIG supported language should be
      possible with a little work.
===============================================================================
***** OCaml *****
Name: OCamlFuse
Homepage:
http://sourceforge.net/projects/ocamlfuse
  Description
      This is an ocaml binding for fuse enabling you to write your own
      multithreaded userspace filesystems using the ocaml programming language.
===============================================================================
***** Pliant *****
Source:
http://fullpliant.org/pliant/browse/file/pliant/linux/storage/fuse.pli?text
===============================================================================
***** Ruby *****
Name: FuseFS
Homepage:
http://rubyforge.org/projects/fusefs
===============================================================================




Filesystems using FUSE
~~~~~~~~~~~~~~~~~~~~~~

===============================================================================
***** OWFS *****
Author: Paul H. Alfille / palfille at partners org
Homepage:
http://owfs.sourceforge.net
  Description
      One Wire File System (OWFS) uses FUSE to expose all the Dallas 1-wire
      sensors, iButtons and memory chips as a filesystem. Devices are
      dynamically included in the directory, and properties like temperature
      are obtained by reading a file.
===============================================================================
***** FunFS *****
Status: alpha
Author: Michael Grigoriev (Net Integration Technologies) / mag at luminal org
Homepage:
http://www.luminal.org/wiki/index.php/FunFS/FunFS
  Description
      FunFS is an advanced network file system with a simple goal: to be better
      than NFS.
===============================================================================
***** EncFS *****
Author: Valient Gough / vgough at pobox com
Homepage:
http://pobox.com/~vgough/encfs.html
  Description
      EncFS provides an encrypted filesystem in user-space. The EncFS module
      itself runs without any special permissions and uses the FUSE library and
      Linux kernel module to provide the filesystem interface.
===============================================================================
***** SMB_for_FUSE *****
Author: Vincent Wagelaar / vincent at ricardis tudelft nl
Homepage:
http://www.ricardis.tudelft.nl/~vincent/fusesmb/
  Description
      With SMB for Fuse you can seamlessly browse your network neighbourhood as
      were it on your own filesystem.
===============================================================================
***** Run-Time-Access *****
Author: Bob Smith / bsmith at linuxtoys org
Homepage:
http://www.runtimeaccess.com/
  Description
      RTA is a specialized memory resident interface to the internal data of
      your application. It is not a stand-alone server but a library which
      attaches to your program and offers up your program's internal structures
      and arrays as tables in a database and as files in a virtual file system.
===============================================================================
***** PhoneBook *****
Author: David McNab / david at rebirthing co nz
Homepage:
http://www.freenet.org.nz/phonebook
  Description
      PhoneBook is expressly designed for use in situations where someone can
      be under pressure (legal, military and/or criminal) to disclose
      decryption keys, and has a 'chaffing' scheme whereby the user can
      disclose only passphrases for non-sensitive material, and credibly deny
      the existence of anything else.
===============================================================================
***** KIO_Fuse_Gateway *****
Author: Alexander Neundorf / neundorf at kde org
Homepage:
http://kde.ground.cz/tiki-index.php?page=KIO+Fuse+Gateway
  Description
      This gateway makes it possible to mount ioslaves or a general ioslave-
      gateway via fuse and make them this way available to all linux apps.
===============================================================================
***** LUFS_bridge *****
Status: alpha
Author: Miklos Szeredi / miklos at szeredi hu
Homepage:
http://sourceforge.net/project/showfiles.php?group_id=121684&package_id=132803
  Description
      This is a modified LUFS daemon, which uses the FUSE kernel module. It is
      binary compatible with existing LUFS filesystems, so no recompilation is
      needed.
===============================================================================
***** Bluetooth_File_System *****
Name: btfs
Author: Collin R. Mulliner / collin at betaversion net
Homepage:
http://www.mulliner.org/bluetooth/btfs.php
  Description
      Btfs is a simple application to map some basic bluetooth functions into
      the filesystem. With btfs a simple ls DEVICES shows you all bluetooth
      devices within range and cp somefile OPUSH/devicename sends the given
      file to the device.
===============================================================================
***** mcachefs *****
Author: Michael Still / mikal at stillhq com
Homepage:
http://lists.samba.org/archive/linux/2004-March/010211.html
  Description
      mcachefs is a simple caching filesystem for Linux using FUSE. It works by
      copying the file that you asked for when the file is opened, and then
      using that copy for all subsequent requests for the file. This is really
      a fairly naive approach to caching, and will be improved in the future.
===============================================================================
***** Fusedav *****
Author: Lennart Poettering / mzshfrqni at 0pointer de
Homepage:
http://0pointer.de/lennart/projects/fusedav/
  Description
      fusedav is a Linux userspace file system driver for mounting WebDAV
      shares. It makes use of FUSE as userspace file system API and neon as
      WebDAV API.
===============================================================================
***** RelFS *****
Author: Vincenzo Ciancia / vincenzo_ml at yahoo it
Homepage:
http://relfs.sourceforge.net/
  Description
      This is a linux userspace filesystem using fuse and a relational database
      to store information about files. Special directories can represent views
      on the database, and many powerful features, such as bayesian
      classification, are added through plugins.
===============================================================================
***** GmailFS *****
Author: Richard Jones / richard at jones name
Homepage:
http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html
  Description
      GmailFS provides a mountable Linux filesystem which uses your Gmail
      account as its storage medium. GmailFS is a Python application and uses
      the FUSE userland filesystem infrastructure to help provide the
      filesystem, and libgmail to communicate with Gmail.
===============================================================================
***** gphoto2-fuse-fs *****
Author: Christopher Lester / lester at hep phy cam ac uk
Homepage:
http://www.hep.phy.cam.ac.uk/~lester/gphoto2-fuse-fs/
  Description
      This program allows mounting a gphoto2 based digital camera so that you
      can access the files via "standard" programs like "ls, cat, tar, gthumb,
      netscape, firefox, etc" rather than just through "gtkam and gphoto2"
===============================================================================
***** CvsFS *****
Author: Patrick Frank / pfrank at gmx de
Homepage:
http://sourceforge.net/projects/cvsfs
  Description
      This provides a package which presents the CVS contents as mountable file
      system. It allows to view the versioned files as like they were ordinary
      files on a disk. There is also a possibility to check in/out some files
      for editing.
===============================================================================
***** User-level_Versioning_File_System *****
Name: Wayback
Author: Brian Cornell / techie at northwestern edu
Homepage:
http://wayback.sourceforge.net/
  Description
      When you use a Wayback file system, old versions of files are never lost.
      No matter how much you change a file or directory, everything is always
      kept in a versioning file so that you never lose important data. Wayback
      provides the ability to remount any already mounted file system with
      versioning support under a different directory.
===============================================================================
***** Trivial Rolebased Authorisation & Capability Statemachine *****
Name: TRACS
Author: Rob J Meijer / rmeijer at xs4all nl
Homepage:
http://www.xs4all.nl/~rmeijer/tracs.html
  Description
      This project is the first spin-off project of the Security Incident
      Policy Enforcement System project. In the process of designing a SIPES,
      the need was recognized for the implementation of an authorisation server
      that provides functionality not provided by any of the current
      authorisation solutions.
===============================================================================
***** SshFS *****
Author: Miklos Szeredi / miklos at szeredi hu
Homepage:
http://fuse.sourceforge.net/sshfs.html
  Description
      This is a filesystem client based on the SSH File Transfer Protocol.
      Since most SSH servers already support this protocol it is very easy to
      set up: i.e. on the server side there's nothing to do. On the client side
      mounting the filesystem is as easy as logging into the server with ssh.
===============================================================================
***** Siefs *****
Author: Dmitry Zakharov aka Chaos / dmitry-z at mail ru
Homepage:
http://chaos.allsiemens.com/siefs
  Description
      SieFS is a virtual filesystem for accessing Siemens mobile phones' memory
      (flexmem or MultiMediaCard?) from Linux. Now you can mount your phone (by
      datacable or IRDA) and work with it like with any other removable
      storage.
===============================================================================
***** Offline Media Content Database *****
Name: MediaDatabase?
Author: Mediadatabase Team
Homepage:
http://mediadatabase.sourceforge.net/
  Description
      MediaDatabase? is database to store filesystem metadata (directory
      structure) and/or audio tracks descriptions of offline media and
      frontends to database (WWW, GUI and CUI). It was developed to fight chaos
      of large compact disk collection but it can help track other removable
      media such as floppy disks and data DVDs.
===============================================================================
***** Cddfs *****
Author: Matthieu Castet
Homepage:
http://castet.matthieu.free.fr/cddfs/
  Description
      Cddfs is a file system for fuse that use libparanoia in order to mount
      your audio cd.
===============================================================================
***** SMBNetFS *****
Author: Mikhail Kshevetskiy / kl at laska dorms spbu ru
Homepage:
http://sourceforge.net/projects/smbnetfs
  Description
      SMBNetFS is a Linux/FreeBSD filesystem that allow you to use samba/
      microsoft network in the same manner as the network neighborhood in
      Microsoft Windows. Main features: periodic rescan of workgroup/computer
      entries, filenames/shares with national character supported, you can
      specify user/password on per share basis. Currently it works on Linux-
      2.4, Linux-2.6 and FreeBSD-6.0.
===============================================================================
***** ntfsmount *****
Author: Yura Pakhuchiy / pakhuchiy at gmail com
Homepage:
http://linux-ntfs.org/
  Description
      ntfsmount is part of ntfsprogs package. It's rely on libntfs, thus it
      have more features than kernel driver. ntfsmount supports file overwrite
      with changes to file size, have limited file and directory creation/
      deletion support, can operate with named data streams and supports
      special Interix files (symlinks, block and character devies, FIFOs and
      sockets).
===============================================================================
***** BitTorrent File System *****
Name: BTSlave
Author: Bill Cox / bill at viasic com
Homepage:
http://btslave.sourceforge.net/
  Description
      BTSlave allows users to mount a BitTorrent? .torrent file as a file
      system.
===============================================================================
***** GfarmFS *****
Author: Takuya Ishibashi / takuya at soum co jp
Homepage:
http://datafarm.apgrid.org/software/gfarmfs-fuse.en.html
  Description
      GfarmFS-FUSE enables you to mount a Gfarm filesystem in userspace. Grid
      Datafarm is a Petascale data-intensive computing project initiated in
      Japan. The challenge involves construction of a Peta- to Exascale
      parallel filesystem exploiting local storages of PCs spread over the
      world-wide Grid.
===============================================================================
***** Clustered_Ordinary_Raid_Network_File_System *****
Name: CORNFS
Author: Ian C. Blenke / icblenke at nks net
Homepage:
http://ian.blenke.com/projects/cornfs/cornfs.html
  Description
      CORNFS is an attempt at creating a distributed filesystem that mirrors N
      copies of files across a group of M number of servers. Everything in
      CORNFS is stored as a file. At any time, it is possible to reconstruct
      the entire filesystem via a simple overlay rsync from the remote
      filesystems.
===============================================================================
***** djmount *****
Author: Rémi Turboult / r3mi at users sourceforge net
Homepage:
http://djmount.sourceforge.net
  Description
      djmount is a UPnP AV client. It mounts the media content of compatible
      UPnP AV devices as a Linux filesystem. The audio and video content on the
      network is automatically discovered, and can be browsed as a standard
      directory tree. djmount should work with any UPnP AV compliant devices or
      software servers.
===============================================================================
***** httpfs *****
Homepage:
http://httpfs.sourceforge.net
  Description
      httpfs
       mounts any file, that is accessible by http, read only. It's clearly
      less than webdav. But it don't need a cooperating server. Only HTTP/1.1
      is necessary.
===============================================================================
***** HTTP-FUSE_KNOPPIX *****
Homepage:
http://unit.aist.go.jp/itri/knoppix/http-fuse/index-en.html
  Description
      HTTP-FUSE-KNOPPIX-4.0 is only 5MB CD image and enables us to use same
      contents of 3.8GB DVD KNOPPIX 4.0. We don't need to download 3.8GB iso
      image at one time and burn DVD.
===============================================================================
***** WikipediaFS *****
Author: Mathieu Blondel
Homepage:
http://wikipediafs.sourceforge.net
  Description
      WikipediaFS is a mountable Linux virtual file system that enables you to
      deal with Wikipedia articles as though they were real files on your hard
      drive.
===============================================================================
***** fusecram *****
Author: Dmitry Morozhnikov
dmiceman@mail.ru
Download:
http://ubiz.ru/dm/fusecram-20051104.tar.bz2
  Description
      FUSE module to mount cramfs images for purposes of
      http://klik.atekon.de/
       project. For details see this article:
      http://www.knoppix.net/forum/viewtopic.php?t=21173
      .
===============================================================================
***** fuseiso *****
Status: beta
Author: Dmitry Morozhnikov
dmiceman@mail.ru
Homepage: FuseIso
Download:
http://ubiz.ru/dm/fuseiso-20061017.tar.bz2
  Description
      FUSE module to mount ISO9660 images for purposes of
      http://klik.atekon.de/
       project.
===============================================================================
***** Logic File System *****
Author: Yoann padioleau (padiolea@irisa.fr)
Homepage:
http://lfs.irisa.fr/~pad/soft/LFSWEB
  Description
      It's something like Spotlight from Apple and WinFS from Microsoft, just
      better. For details see LfsDetails.
===============================================================================
***** FUSE&DPAP *****
Homepage:
http://cgi.sfu.ca/~jdbates/moin/moin.cgi/FUSE&DPAP
  Description
      FUSE filesystem for mounting Apple iPhoto DPAP shares Using this
      filesystem, I can synchronize photos with Gallery using filesystem tools
      like Unison
===============================================================================
***** DBToy *****
Homepage:
http://www.thesaguaros.com/beta/newsag/products/dbtoyfs/
  Description
      DBToy is a fuse-based filesystem for linux, that lets you browse the
      contents of a relational database through a set of directories and xml
      files.
===============================================================================
***** wdfs - webdav filesystem *****
Author: jens m. noedler (noedler at web dot de)
Homepage:
http://noedler.de/projekte/wdfs/
  Description
      wdfs is a webdav filesystem. In combination with Subversion and Apache it
      can be used as a versioning filesystem for Subversion repositories. It is
      based on FUSE v2.3+ and neon v0.24.7+.
===============================================================================
***** compFUSEd *****
Author: Johan Parent (johan at info dot vub dot ac dot be )
Homepage:
http://parallel.vub.ac.be/~johan/compFUSEd
  Description
      An overlay filesystem providing transparant compression with both read
      and write support. This filesystem sits on top of an existing fs. Fully
      configurable, different compression algorithms available (lzo, zlib,
      bzip2). Still young but usable!
===============================================================================
***** FuseCompress *****
Author: Milan Svoboda (milan dot svoboda at centrum dot cz)
Homepage:
http://www.miio.net/fusecompress
  Description
      FuseCompress provides a mountable Linux filesystem which transparently
      compress its content.
===============================================================================
***** FuseFTP *****
Author: Marcus Thiesen (marcus at thiesen dot org)
Homepage:
http://wiki.thiesen.org/page/Fuseftp
  Description
      FuseFTP is a FTP filesystem written in Perl.
===============================================================================
***** CopyFS *****
Authors: Thomas Joubert and Nicolas Vigier (boklm@mars-attacks.org)
Homepage:
http://n0x.org/copyfs/
  Description
      A versionned file system. When you modify a file, any anterior version is
      kept. You can revert to an older version when you want.
===============================================================================
***** GnomeVFS2_FUSE *****
Author: Christian Pellegrin (chripell at gmail dot com)
Homepage:
http://sole.infis.univ.ts.it/~chri/gnome-vfs-fuse-0.1.tar.gz
  Description
      Gateway between FUSE and Gnome VFS2. Allows you to mount everything that
      Nautilus can and looks like a directory.
===============================================================================
***** Flickrfs *****
Author:
Manish_Rai_Jain
Homepage:
http://flickrfs.sourceforge.net
  Description
      Flickr
       virtual filesystem which allows easy uploading/downloading/searching of
      photos through standard linux commands.
===============================================================================
***** FSFS_-_the_Fast_Secure_File_System *****
Author:
Nicola_Cocchiaro
Homepage:
http://fsfs.sf.net
  Description
      The Fast Secure File System exports files and directories securely over
      the network, and lets users store and retrieve encrypted data. It moves
      most cryptography to clients, achieving better scalability.
===============================================================================
***** archivemount_-_mount_archives_(tar,_cpio,_...) *****
Author: Andre Landwehr (andrel at cybernoia de)
Homepage:
http://www.cybernoia.de/software/archivemount/archivemount-0.5.2.tar.gz
  Description
      Gateway between FUSE and
      libarchive
      . Allows mounting of cpio, .tar.gz, .tar.bz2 archives. Reading and
      writing supported. Supports all formats libarchive supports. Current
      status: Most functions implemented but largely untested; feel free to
      report and/or fix bugs...
===============================================================================
***** Fuse::DBI_-_mount_some_data_from_relational_database_as_files *****
Author: Dobrica Pavlinusic (dpavlin at rot13 dot org)
Homepage:
http://www.rot13.org/~dpavlin/fuse_dbi.html
  Description
      Simple way to export one type of data (e.g. html templates or content)
      from any database supported by perl's DBI modules back to filesystem for
      quick editing.
===============================================================================
***** NOOFS_-_Network_Object_Oriented_File_System *****
Author: NOOFS development team (contact at noofs dot org)
Homepage:
http://www.noofs.org/
  Description
      NOOFS (Network Object Oriented File System) is a filesystem which is
      storing its data in an SQL relational database. It supports virtual
      directories, extended attributes, dynamic ACLs, advanced search
      functions, advanced security managament, native data integrity
      management. The project is developed within the framework of an end of
      studies project in EPITECH whose source code is distributed under the
      terms of the GNU General Public License.
===============================================================================
***** LoggedFS_-_The_logged_filesystem *****
Author: remipouak@yahoo.fr
Homepage:
http://loggedfs.sourceforge.net/
  Description
      LoggedFS is a filesystem which allows to see every single operations that
      happens in a filesystem. You can choose which type of files you want to
      log. Then you can see read, write, chmod, chown, etc... that happens on
      files. Logs are added to syslog.
===============================================================================
***** LZOlayer_fs_-_Transparent_compression_filesystem *****
Author: kazikcz@gmail.com
Homepage:
http://north.one.pl/~kazik/pub/LZOlayer
  Description
      LZOlayer_fs is a filesystem which allows you to use compressed files,
      just as they would be normal files. Read and write operations are
      possible. Very young, but seems to be stable and pretty usable. Consumes
      low memory. Supports LZO and ZLIB compression algorithms.
===============================================================================
***** fusepak_-_Support_for_PACK_and_WAD_files *****
Author: Janusz Dziemidowicz <rraptorr@nails.eu.org>
Homepage:
http://fusepak.sourceforge.net
  Description
      Fusepak allows mounting PACK and WAD files (used by many games based on
      idSoftware engine, ie. Quake, Doom, Half-Life).
===============================================================================
***** Grifi:_GridFTP_File_System *****
Author: Leandro Franco (leo dot franco at gmail dot com)
Homepage:
http://grifi.sourceforge.net/
  Description
      grifi is a virtual file system (developed with FUSE) that allows a user
      to mount a remote directory using the GridFTP protocol. It is based on
      the UberFTP client and on FTPFS from the LUFS project.
===============================================================================
***** FunionFS:_An_UnionFS_over_FUSE *****
Author: Stephane APIOU (stephane dot apiou at free dot fr)
Homepage:
http://funionfs.apiou.org
  Description
      FunionFS is the aggregation of two filesystems: a read-only and a read-
      write one. The read-only filesystem could be a CDROM or a flash disk for
      an embedded system. The read-write filesystem could be a Ramdisk or a
      partition on an USB key ... All datas are read from the read-only
      filesystem if they are not present on the read write one. Data are
      written to the read-write filesystem. it's the same principle as the
      unionfs driver used in the well known Knoppix CDROM.
===============================================================================
***** BlogFS *****
Author: Rohan ( rohan.pm@gmail.com )
Homepage:
http://rohanpm.net/blogfs
  Description
      Mount your
      WordPress
       (and maybe other MetaWeblog? compatible) blog(s). Supports reading and
      writing posts.
===============================================================================
***** MythTVfs *****
Author: Kees Cook ( kees@outflux.net )
Homepage:
http://outflux.net/software/pkgs/mythtvfs-fuse/
  Description
      Designed to communicate with a MythTV backend server. It creates an
      overlay filesystem that encodes TV Program metadata (title, episode,
      description) into a filename so that systems that do not natively talk to
      MythTV can still get information about a given show. The initial design
      goal is to make it compatible with the in-filename metadata extraction
      capabilities that will (hopefully) be in future versions of
      Galleon
      .
===============================================================================
***** OpenomyFS *****
Author: Maurice Codik / maurice.codik@gmail.com
Homepage:
http://mauricecodik.com/projects/ofs
  Description
      OpenomyFS uses the Ruby FUSE bindings to create a filesystem that lets
      you access data from your
      Openomy
       account. OpenomyFS lets you download/upload files from your account and
      manage your tags.
===============================================================================
***** Captive_NTFS *****
Author: Jan Kratochvil
Homepage:
http://www.jankratochvil.net/project/captive/
  Description
      Captive provides full secure and transparent write support for
      Microsoft's proprietary NTFS file system by utilizing the original
      ntfs.sys driver of Windows XP. While earlier releases used LUFS, version
      1.1.6.1, released Dec. 29. 2005 has been ported to FUSE.
===============================================================================
***** unionfs-fuse *****
Author: Radek Podgorny (radek@podgorny.cz)
Homepage:
http://podgorny.cz/unionfs-fuse/
  Description
      This is a FUSE based implementation of the well-known unionfs. The
      userland version (this one) is a bit slower but way more flexible.
      Supporting (almost) unlimited number of roots, stats, caching... See
      homepage for more info...
===============================================================================
***** Lkarmafs *****
Author: EV (evidal at iti dot upv dot es)
Homepage:
http://linux-karma.sourceforge.net/lkarmafs.html
  Description
      A user-space filesystem for the 20GB Rio Karma personal digital audio
      player, based on libkarma and FUSE. It provides most usual filesystem
      calls, including support for multiple, concurrent READ/WRITE. File
      properties such as size, permissions, creation and access times, are
      shown as regular file attributes. For all the other properties (codec,
      bit rate, times played, etc.), extended attributes are used. Therefore,
      full access to all the file data and metadata is granted using standart
      GNU-Linux tools.
===============================================================================
***** Apretujado_Filesystem *****
Author: Jose O. Suarez (guebby at gmail dot com)
Homepage:
http://apfs.humorgraficojr.com
  Description
      A read-write-access filesystem with transparent compression. It works on
      real block devices. The filesystem format is simple, but compression and
      speed are enough. The homepage is now in english and spanish.
===============================================================================
***** ELFI *****
Author: Antonio Messina (antonio.messina at ictp dot it)
Homepage:
http://www.egrid.it/sw/elfi
  Description
      A filesystem interface to the LCG-2 GRID storage.
===============================================================================
***** CryptoFS *****
Author Christoph Hohmann (reboot@gmx.ch)
Homepage:
http://reboot.animeirc.de/cryptofs/
  Description
      CryptoFS is a encryption filesystem for Filesystem in Userspace (FUSE).
      Files written to the mount point will be stored encrypted (data and
      filename) in a directory on a normal filesystem.
===============================================================================
***** Afuse *****
Author: Jacob Bower (jacob.bowerNO@SPAMic.ac.uk (remove the caps))
Homepage:
http://afuse.sourceforge.net/
  Description
      A FUSE based automounter.
===============================================================================
***** FUSEPod *****
Author: Keegan Carruthers-Smith (keegan dot csmith at gmail dot com)
Homepage:
http://fusepod.sourceforge.net/
  Description
      A virtual filesystem for accessing your iPod.
===============================================================================
***** CurlFtpFS *****
Author: Robson Braga Araujo (robsonbraga at gmail dot com)
Homepage:
http://curlftpfs.sourceforge.net/
  Description
      A filesystem for accessing FTP sites. It's based on libcurl and
      automatically reconnects when the server times out.
===============================================================================
***** wikifuse *****
Author: Nedko Arnaudov
Homepage:
http://nedko.arnaudov.name/soft/wikifs/wikifuse.py
  Description
      FUSE filesystem for wiki, uses wiki xml-rpc interface v2.
===============================================================================
***** Mountlo *****
Author: Miklos Szeredi / miklos at szeredi hu
Homepage:
http://sourceforge.net/project/showfiles.php?group_id=121684&package_id=150116
  Description
      Loopback mount filesystem- or disk-images without root privileges. All
      filesystems present in the Linux kernel are supported. It works by
      mounting the image inside a User Mode Linux instance and exporing it with
      FUSE. Despite the crude approach it's reasonably fast.
===============================================================================
***** fuse_adfs *****
Author: David Boddie / david at boddie org uk
Homepage:
http://www.boddie.org.uk/david/Projects/Python/FUSE/
  Description
      The fuse_adfs module uses FUSE to present the contents of ADFS reading
      facilities. The filesystem translates ADFS-style filenames to Unix-
      friendly ones and adds suffixes to filenames to help applications
      recognize certain types of files.
===============================================================================
***** rarfs *****
Author: Kent Gustavsson / nedo80 at gmail com
Homepage:
http://vattnadal.mine.nu/rarfs/doku.php?id=start
  Description
      Uses fuse to mount a rar archive that has NOT been compressed
===============================================================================
***** localfs *****
Author:
Victor_Porton
Homepage:
http://freesoft.ex-code.com/virtual-filesystems.xml
  Description
      Simply mirrors a directory, just like a directory hardlink. Intended
      mainly for testing and example.
===============================================================================
***** dereferencefs *****
Author:
Victor_Porton
Homepage:
http://freesoft.ex-code.com/virtual-filesystems.xml
  Description
      Dereferences all symlinks (symbolic links) in a directory. When a symlink
      is moved, it is automatically updated to continue to point to the same
      file.
===============================================================================
***** fsfipi & vaves *****
Author: Václav Jůza / vaclavjuza at gmail dot com
Homepage:
http://fsfipi.sourceforge.net
 (not yet finished), download at
http://sourceforge.net/projects/fsfipi
  Description
      fsfipi: A framework supporting a cascade of filters, which modify the
      behaviour of a filesystem. Each filter uses the same interface for the
      higher level (i. e. the requests, what operations this filesystem shall
      do) and for the lower level interface (performing the file operations).
      Only the lowest level filter uses actual system calls to store files on
      the real file system (localfs) or there is a possibility of making sshfs-
      like lowest level filter. The only highest level filter now is
      fuse_interface, which implements a fuse filesystem daemon and sends the
      requests to the lower level filter.
      vaves: a filter for this framework, implementing a very configurable
      versioning file system.
===============================================================================
***** LAFS *****
Author: Stefan Berndtsson / dev-lafs at slask dot nocrew dot org
Homepage:
http://junk.nocrew.org/~stefan/lafs/
  Description
      A filesystem for organising and categorising files and directories with
      the metadata stored in a PostgreSQL database.
===============================================================================
***** unpackfs *****
Author: Jochen Hepp / jochen dot hepp at gmx dot de
Homepage:
http://www.nongnu.org/unpackfs/
  Description
      A filesystem for transparent unpacking of archives. It shows the content
      of archives right beside them in the filesystem hierarchy. Supported
      archive types are: ace, ar, arj, bzip2, cab, compress, cpio, deb, exe-
      sfx-ace, exe-sfx-rar, exe-sfx-zip, gzip, lha, lzop, mac, openoffice-zip,
      ppmd, rar, share, tar, tnef, uudecode, zip, zoo. All existing and any new
      archiv type are configured in a plain text file.
===============================================================================
***** hierfs *****
Author: Georges Kesseler
Homepage:
http://hierfs.sourceforge.net/
  Description
      a simple way of managing a vast amount of data over multiple CD-R media
      by simulating all files on the CDs as if they were online on the
      harddisk. When a file is accessed, a dialog box asks for the correct CD.
      So any program can be used to acces the data without needing to know the
      files are on CD. Scripts are included for migrating data to CD (which was
      the more difficult work). Note that this project has not been updated
      since 3 years.
===============================================================================
***** fuse-ext2 *****
Author: Jeff Garzik
Homepage:
http://www.kernel.org/pub/linux/kernel/people/jgarzik/fs/
Repository: git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/fuse-ext2.git
  Description
      Uses standard libext2 from e2fsprogs to implement an ext2 filesystem in
      userspace.
===============================================================================
***** TagsFs? *****
Author: Romain Beauxis
Homepage:
https://gna.org/projects/tagsfs
  Description
      TagsFS is a file system for music files. It presents your mp3 and ogg
      files in a virtual tree based on the tags of the files.
      You can browse your files by artist, title and album, as well as
      searching based upon tags.
      The nice aspect of this is that all the virtual files appears as real
      audio files, so that it gives the ability of a complete music library to
      any application you like!
===============================================================================
***** Cromfs *****
Author:
Joel_Yliluoma
Homepage:
http://bisqwit.iki.fi/source/cromfs.html
  Description
      Cromfs is a compressed read-only filesystem, similar to Cramfs and
      Squashfs. It uses the
      lzma
       compression algorithm.
      It splits each file into fixed-size blocks and compresses the blocks
      together in larger clusters, so that blocks from different files are
      compressed together for smaller size. Directories, inodes and block lists
      are also compressed. In some cases, it beats Squashfs by a factor of four
      in terms of compression power. On the flip side, it is noticeably slower
      than its peers, and requires more RAM.
===============================================================================
***** mysqlfs *****
Author: Tsukasa Hamano
Homepage:
https://sourceforge.net/projects/mysqlfs/
  Description
      mysqlfs is linux filesystem which store file in mysql database.
===============================================================================
***** Yacufs *****
Author: Frank Reerink
Homepage:
https://www.uitwisselplatform.nl/projects/yacufs
  Description
      Yacufs is a virtual file system that is able to convert your files on-
      the-fly. It allows you to access various file types as a single file
      type. For instance you can access your music library containing .ogg,
      .flac and .mp3 files, but see them all as if being .mp3 files.
===============================================================================
***** ferrisfuse *****
Author: Ben Martin
Homepage:
http://sourceforge.net/project/showfiles.php?group_id=16036&package_id=191598
  Description
      libferris is a virtual filesystem that exposes various hierarchical data
      including: native (kernel disk IO with fam), XML (mount an XML file as a
      filesystem), DB4, xmldb, Evolution, Firefox, Emacs, LDAP, HTTP, FTP, eet,
      sockets, RDF/XML, RDF/bdb, and mbox.
===============================================================================
***** ZFS *****
Author: Ricardo Correia / rcorreia at wizy org
Homepage:
http://www.wizy.org/wiki/ZFS_on_FUSE
  Description
      ZFS
       is a modern advanced filesystem, originally designed by Sun Microsystems
      for the OpenSolaris? operating system. This project is a port of ZFS to
      the FUSE framework, done as part of the
      Google_Summer_of_Code_2006
       program.
===============================================================================
***** FUR *****
Author: Riccardo Di Meo / riccardo at infis dot univ . trieste D0t it
Homepage:
http://www.infis.univ.trieste.it/~riccardo
  Description
      FUR
       mounts a Windows CE filesystem (read and write) and registry (read only)
      locally. It uses the libraries from the
      SynCE_Project
      .
===============================================================================
***** 9pfuse *****
Author: Christoph Lohmann / 20h at r-36 dot net
Downloadlink:
http://www.r-36.net/9pfuse.tgz
  Description
      9pfuse is a file system that allows you to mount 9P shares into your
      namespace. See "v9fs" or "Plan 9 from Bell Labs" for more details.
===============================================================================
***** ntfs-3g *****
Link:
http://sourceforge.net/mailarchive/forum.php?thread_id=23836054&forum_id=2697
Author: Szakacsits Szabolcs
Downloadlink:
http://mlf.linux.rulez.org/mlf/ezaz/ntfs-3g-20070714-BETA.tgz
  Description
      A read-write ntfs driver, capable of unlimited file creation and
      deletion.
===============================================================================
***** playlistfs *****
Link:
http://sourceforge.net/projects/playlistfs/
Author: Vijay Gill (vijay.s.gill@gmail.com)
Downloadlink:
http://sourceforge.net/projects/playlistfs/
  Description
      A fuse file system which allows to present a group of play list files (in
      a directory) as directories to allow easy management. A folder with
      playlists is presented as /playlists and all the playlists in the
      original folder are shown as directories.
===============================================================================
***** gcfuse *****
Author: Mike Melanson / mike at multimedia.cx
Homepage:
http://multimedia.cx/gcfuse/
  Description
      gcfuse is a program that allows you to mount a Nintendo GameCube? DVD
      disk image as a read-only part of the Linux filesystem. This allows the
      user to browse the directory structure and read the files within.
      Further, gcfuse creates a special file called .metadata in the root
      directory of the mounted filesystem containing other interesting items
      like game title and publisher.
===============================================================================
***** wadfs *****
Author: Jon Dowland / jon at alcopop.org
Homepage:
http://alcopop.org/games/doom#code
  Description
      A very simple implementation of doom-style WAD files as a FUSE
      filesystem. Currently read-only. You may be more interested in fusepak,
      above.
===============================================================================
***** mp3fs *****
Author: David Collett
Homepage:
http://mp3fs.sourceforge.net
  Description
      MP3FS is a read-only filesystem which transcodes FLAC audio files to MP3
      on the fly when opened and read.
===============================================================================
***** Hyppocampus *****
Author: Roberto Guido
Homepage:
http://lobotomy.sf.net/Hyppocampus.php
  Description
      Experimental relational filesystem where the usual tree-structured
      hierachic organization of file is substituted by a relational structure
      navigable with SQL queries. The first prototypes are builds on top of
      FUSE.
===============================================================================
***** DVDfs *****
Author: Jared Stafford
Homepage:
http://www.jspenguin.org/dvdfs/
  Description
      DVDfs is a userspace filesystem which mounts a DVD using libdvdread (and,
      by extension, libdvdcss). You can use this to make an exact copy of the
      DVD video file structure.
===============================================================================
***** PUFS *****
Author: J. Cameijo Cerdeira (cerdeira at co sapo pt)
Homepage:
http://sourceforge.net/projects/pufs
  Description
      PUFS - peer union fs - is a poor man's naïve distributed filesystem. Its
      philosophy is in line with a peer network paradigm in the form of a
      filesystem. The filesystem contents is the union of the directories
      exported by each peer who joins the union.
===============================================================================
***** TrackerFS *****
Author: Alex Kritikos
Homepage:
http://code.google.com/p/trackerfs/
  Description
      FUSE module that connects to a running
      Tracker
       document indexing deamon and populates a directory with symlinks
      corresponding to a Tracker query on document (full-text!) content and
      meta-data.
===============================================================================
***** GlusterFS *****
Author:
http://gluster.org/core-team.php
Homepage:
http://gluster.org/docs/index.php/GlusterFS
  Description
      GlusterFS is a clustered file-system capable of scaling to several peta-
      bytes. It aggregates various storage bricks over Infiniband RDMA or TCP/
      IP interconnect into one large parallel network file system. GlusterFS
      client uses FUSE.
===============================================================================
***** ltspfs *****
Homepage:
http://wiki.ltsp.org/twiki/bin/view/Ltsp/LtspFS
Author:
http://ltsp.org/
  Description
      The Linux Terminal Server Project uses ltspfs to mount devices of the
      terminal client on the terminal server, making them available to the
      applications running on the terminal server. ltspfs is a remote
      filesystem consisting of two parts: 1) A network server daemon that runs
      on the LTSP terminal. 2) A FUSE module that runs in user-space on the
      server, that connects with the daemon on the client.
===============================================================================
***** usmb *****
Author: Geoff Johnstone
Homepage:
http://www.atmi41.dsl.pipex.com/code.html
  Description
      usmb lets you mount SMB/CIFS shares, as per "Map Network Drive" in
      Windows' Explorer. Unlike the other SMB FUSE filesystems, which emulate
      Network Neighbourhood, usmb lets you mount arbitrary SMB shares,
      including hidden ones that you can't browse.
===============================================================================
***** beaglefs *****
Author: Robert Love
Homepage:
http://rlove.org/log/2006070601
 (announcement),
http://www.kernel.org/pub/linux/kernel/people/rml/fuse/beaglefs/
 (source)
  Description
      beaglefs allows you to browse beagle queries through your filesystem,
      using symlinks to point to the matching files.
===============================================================================
***** rofs *****
Author: Matthew Keller
Homepage:
http://mattwork.potsdam.edu/rofs
  Description
      Light and fast, allowing you to mount any folder tree as a read-only
      filesystem that fully supports reading extended attributes and ACLs.
===============================================================================




Operating systems
~~~~~~~~~~~~~~~~~

===============================================================================
***** Linux-2.4.X *****
Native port. New FUSE versions (2.X) support kernels 2.4.21 or later.
===============================================================================
***** Linux-2.6.X *****
Native port. New FUSE versions (2.X) support all 2.6 kernels.
2.6.14 and up will have FUSE support included in the official kernel.
===============================================================================
***** FreeBSD *****
Name: Fuse for FreeBSD
Author: Csaba Henk / csaba.henk at creo hu
Homepage:
http://fuse4bsd.creo.hu
===============================================================================
