This was generated on 2006/01/09 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

------------------------------------------------------------------------------
Java

Name: FUSE-J

Author: Peter Levart / peter.levart at select-tech si

Download: http://www.select-tech.si/fuse/

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 pobox com

Homepage: http://arg0.net/users/vgough/sulf/index.html

Description

    SULF allows you to write a Linux filesystem in C#.  It uses the
    FUSE library to do the actual Linux filesystem integration in
    user-space.

------------------------------------------------------------------------------
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: Sebastien Delafond / sdelafond at gmx net

CVS: cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fuse co -P python

------------------------------------------------------------------------------
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, ...

------------------------------------------------------------------------------
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

===============================================================================
File Systems
===============================================================================

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://hannibal.lr-s.tudelft.nl/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.

------------------------------------------------------------------------------
DataDraw

Author: Bill Cox / bill at viasic com

Homepage: http://www.viasic.com/opensource/

Description

    This is an EDA specific data structure diagramming and code
    generation tool.

------------------------------------------------------------------------------
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://smbnetfs.airm.net/

Description

    SMBNetFS is a Linux filesystem that allow you to use
    samba/microsoft network in the same manner as the network
    neighborhood in Microsoft Windows.

------------------------------------------------------------------------------
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 and can operate with named
    data streams.  CVS version also 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.

------------------------------------------------------------------------------
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: alpha

Author: Dmitry Morozhnikov dmiceman@mail.ru

Homepage: FuseIso

Download: http://ubiz.ru/dm/fuseiso-20060107.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 with special features for accessing
    subversion repositories.  it is based on fuse v2.3+ and neon
    v0.24.7+.  give it a try!

------------------------------------------------------------------------------
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.

------------------------------------------------------------------------------
Archive2Fuse - mount archives

Author: Andre Landwehr (andrel at cybernoia de)

Homepage: http://www.cybernoia.de/software/archivemount/archivemount-0.2.tar.gz

Description

    Gateway between FUSE and libarchive.  Allows mounting of cpio,
    .tar.gz, .tar.bz2 archives.  Currently this is readonly, patches
    welcome.  Supports all formats libarchive supports.

------------------------------------------------------------------------------
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://www.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.

===============================================================================
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

See also: CategoryFreeBSD
