synchronized FAQ and Filesystems with Wiki
diff --git a/FAQ b/FAQ
index 826bbf4..758ff25 100644
--- a/FAQ
+++ b/FAQ
@@ -1,223 +1,170 @@
-Here are some good questions and answers in no particular order.
+This was generated on 2005/09/27 from
 
----------------------------------------------------------------------------
-Subject: FUSE vs. LUFS
+  http://fuse.sourceforge.net/wiki/index.php/FAQ
 
+For an up to date version please see the above page.  You can also add
+new entries there.
 
-> Can you explain me what are the differences between this two modules
-> and why did you start a new project?
+General
+=======
 
-Well looking at the release dates on SF, the first release of FUSE is
-almost a year older than that of LUFS.  But we probably weren't awere
-of each others project for quite some time.
+How can I umount a filesystem
+-----------------------------
+
+Filesystems mounted without sysadmin privileges can be umounted with
+the command
+
+    fusermount -u mountpoint
+
+What's the difference between FUSE and LUFS?
+--------------------------------------------
 
 The main difference between them is that in LUFS the filesystem is a
 shared object (.so) which is loaded by lufsmount, and in FUSE the
 filesystem is a separate executable, which uses the fuse library.  The
-actual API is very similar, and I've written a translator, that can
-load LUFS modules and run them using the FUSE kernel module (see the
-lufis package on the FUSE page).
+actual API is very similar, and there's a translator, that can load
+LUFS modules and run them using the FUSE kernel module (see the lufis
+package on the FUSE page).
 
 Another difference is that LUFS does some caching of directories and
 file attributes.  FUSE does not do this, so it provides a 'thinner'
 interface.
 
----------------------------------------------------------------------------
-Subject: close() not in struct fuse_operations
+By now LUFS development seems to have completely ceased.
 
+Why is it called FUSE? There's a ZX Spectrum emulator called Fuse too.
+----------------------------------------------------------------------
 
-> Is there a reason for 'close' not being one of the
-> fuse_operations? I'd need to know when files are
-> closed...
+At the time of christening it, the author of FUSE (the filesystem)
+hadn't heard of Fuse (the Speccy emulator).  Which is ironic, since he
+knew Philip Kendall, the author of that other Fuse from earlier times.
+Btw. the author of FUSE (the filesystem) also created a Speccy
+emulator called Spectemu.
 
-It's not easy.  Consider mmap(): if you have a memory file, even after
-closing it, you can read or write the file through memory.
+The name wanted to be a clever acronym for "Filesystem in USErspace",
+but it turned out to be an unfortunate choice.  The author has since
+vowed never to name a project after a common term, not even anything
+found more than a handful of times on Google.
 
-Despite this there are close()-like operations: flush and release.
-Flush gets called on each close() and release gets called when there
-are no more uses of a file, including memory mappings.
+API
+===
 
----------------------------------------------------------------------------
-Subject: overlapping open/release states
+Which method is called on the close() system call?
+--------------------------------------------------
 
+flush() and possibly release().  For details see the documentation of
+these methods in <fuse.h>
 
-> I'm using a fairly current CVS version of Fuse, and have noticed
-> overlapping open / release calls for a file.  In other words a file
-> is opened multiple times and receives multiple release calls.  Is
-> this expected?
+Wouldn't it be simpler if there were a single close() method?
+-------------------------------------------------------------
 
-It has always been like this.  The open / release calls correspond to
-actual file opens / releases.  The release is called when there are no
-more refernces to the file, i.e. on the last close() or munmap().
+No, because the relationship between the close() system call and the
+release of the file (the opposite of open) is not as simple as people
+tend to imagine.  UNIX allows open files to acquire multiple
+references
 
-> This isn't what I expected.  Do I need to keep track of how many
-> open() calls were made to a file and expect that many release() calls?
+    * after fork() two processes refer to the same open file
 
-Yes.  You can also keep track of the number of files opened for
-writing for example, and use that information for finally flushing
-dirty data of a file.
+    * dup() and dup2() make another file descriptor refer to the same
+      file
 
-> So it appears that there may even be additional file operations after
-> one or more of the release calls..
+    * mmap() makes a memory mapping refer to an open file
 
-That is expected also.  It would be a bug if there were reads/writes
-after the last release, or if the number of releases didn't match the
-number of opens.
+This means, that for a single open() system call, there could be more
+than one close() and possibly munmap() calls until the open file is
+finally released.
 
-> I've solved this in my code by counting the number of open / release
-> calls and only dropping information when the last expected release
-> is received.  But I thought I'd point this out in case, as it was
-> unexpected behavior..
+Can I return an error from release()?
+-------------------------------------
 
----------------------------------------------------------------------------
-Subject: return value from release()
+No, it's not possible.
 
+If you need to return errors on close, you must do that from flush().
 
-> Hmm.  So it doesn't matter what I return from my release function?  I
-> understand there is not an exact 1:1 relationship between close() and
-> release, but I had hoped that a error return from release would be
-> carried up as an error return from close().
+How do I know which is the last flush() before release()?
+---------------------------------------------------------
 
-In release() the error value is ignored, and not every close will
-cause a release.  Consider this:
+You can't.  All flush() calls should be treated equally.  Anyway it
+wouldn't be worth optimizing away non-final flushes, since it's fairly
+rare to have multiple write-flush sequences on an open file.
 
-  - process opens a file
-  - process forks
-  - parent closes the file
-  - child closes the file
+Why doesn't FUSE forward ioctl() calls to the filesystem?
+---------------------------------------------------------
 
-The file will only be released on the second close, i.e. when all
-references to the file are closed.  Also memory mapping a file creates
-a reference to the file, that is released when the memory is unmapped.
+Because it's not possible: data passed to ioctl() doesn't have a well
+defined length and structure like read() and write().  Consider using
+getxattr() and setxattr() instead.
 
-There is a flush() operation that is called on every close(), through
-which the filesystem can return an error.
+Is there a way to know the uid, gid or pid of the process performing
+--------------------------------------------------------------------
+the operation?
+--------------
 
-Note: there can be read/write operations even after the last flush()
-but before a release().
+Yes: fuse_get_context()->uid, etc.
 
----------------------------------------------------------------------------
-Subject: FUSE lacks ioctl support
+Problems
+========
 
+Why are some bytes zeroed when reading a file?
+----------------------------------------------
 
->  I'll try to add ioctl support to FUSE, but I am quite new to it, so I
->  would apreciate any suggestions.
+This happens if the filesystem returns a short count from the read()
+method.  If the file wasn't opened in direct I/O mode, the read()
+method must return exactly the requested number of bytes, unless it's
+the end of the file.
 
-It's not clear to me how would you use ioctls since they are
-meaningless on normal files, and on device files the filesystem
-implementation usually does not care about the ioctl operations.  And
-even if you manage to hack fuse to intercept device ioctls, you
-wouldn't be able to do anything with them, because they contain
-arbitrarily structured data (not length/value as in the case of read
-or write).
+If the file was opened in direct I/O mode (with direct_io mount
+option, or by setting the direct_io field of fuse_file_info at open)
+the read can return a smaller value than requested.  In this case the
+end of file can be signalled by returning zero.
 
-[...]
+Why doesn't find work on my filesystem?
+---------------------------------------
 
-Using getxattr() and setxattr() is much cleaner than ioctl(), and is
-actually supported in fuse-2.0.
+The st_nlink member must be set correctly for directories to make find
+work.  If it's not set correctly the -noleaf option of find can be
+used to make it ignore the hard link count (see man find).
 
----------------------------------------------------------------------------
-Subject: Short reads
+The correct value of st_nlink for directories is NSUB + 2.  Where NSUB
+is the number of subdirectories.  NOTE: regular-file/symlink/etc
+entries do not count into NSUB, only directories.
 
-
-> Now for the problem case: I cat the 256k file, the kernel issues a
-> read with length 65536 and offset 0.  My program returns only 10
-> bytes.  What I expected to see was the kernel to then issue a read for
-> length 65536 and offset 10.  Instead what I saw in the result was the
-> 10 bytes I returned, followed by 65526 zero bytes.
->
-> Is this the intended behavior?
-
-Yes.  You can easily program around it with a for-loop in your read
-function.
-
-> Does this simplify things significantly?  If it isn't much of a
-> difference, I'd like to suggest doing it the other way: many people
-> (like me) implement their fuse read function in terms of read(), and
-> read() can return early.
-
-No.  Read from a pipe/socket can be short, but read from a file can't.
-
----------------------------------------------------------------------------
-Subject: protocol error
-
-> I'm having trouble with file writing. I can
-> 'echo something > file' to a file, but
-> 'cp file something' or 'cat something > file'
-> gives a protocol error.
-
-Two possible reasons for this are:
-
-1) A mismatch between the library version and the kernel module
-version.
-
-2) The write() operation returns less than the 'size' parameter.
-Short writes are generally not allowed (as in case of read()).  The
-exception is if the 'direct_io' mount option is used.
-
----------------------------------------------------------------------------
-Subject: FUSE naming
-
-
-> There are a million other projects with the same name.  Why did you
-> call it 'FUSE'?
-
-Because I'm an imbecile.  The lesson is that a common term is not a
-good project name.  A somewhat strange story comes to my mind: I was
-contacted by Philip Kendall shortly after releasing FUSE, blaming me
-for choosing the same name as his ZX Spectrum emulator (Fuse).  We
-have known each other from earlier times, since I have also written a
-ZX Spectrum emulator (Spectemu).
-
----------------------------------------------------------------------------
-Subject: Uid/gid/pid
-
-
-> Is there any easy way to know the uid of a reader?  For example, let's
-> say I wanted to create a file that contained 'foo' for uid 1, but
-> 'bar' for uid 2.
-
-Yes:
-
-fuse_get_context()->uid
-
-
----------------------------------------------------------------------------
-Subject: 'find' command
-
-
-> I'm having trouble getting the find command to search through fuse
-> directories. What settings do I need in 'getattr'?
-
-The 'st_nlink' member must be set correctly for directories to make
-'find' work.  If it's not set correctly the '-noleaf' option of find
-can be used to make it ignore the hard link count (see 'man find').
-
-The correct value of 'st_nlink' for directories is NSUB + 2.  Where
-NSUB is the number of subdirectories.  NOTE: regular-file/symlink/etc
-entries _do not_ count into NSUB, only directories.
-
-If calculating NSUB is hard, the filesystem can set st_nlink to 1 for
-directories, and find will still work.  This is not documented
+If calculating NSUB is hard, the filesystem can set st_nlink of
+directories to 1, and find will still work.  This is not documented
 behavior of find, and it's not clear whether this is intended or just
-by accident.  The NTFS filesysem uses this for example, so it's
-unlikely that this find "feature" will go away.
+by accident.  But for example the NTFS filesysem relies on this, so
+it's unlikely that this "feature" will go away.
 
----------------------------------------------------------------------------
-Subject: File system interactivity
+What is the reason for IO errors?
+---------------------------------
 
-> I need to add interactivity to my user space file system.
-> For example, while executing create(), I need to ask a
-> question to the terminal that issued the request.
->
-> Is there a way I can achieve this goal?
+The kernel part of FUSE returns the EIO error value, whenever the
+userspace filesystem sends a "bad" reply.  Sometimes these are
+unavoidable, and not necessarily a fault of the filesystem.  Possible
+causes of this are (non-exhaustive)
+
+    * the filesystem returned a short count on write()
+
+    * the type of the file has changed (e.g. a directory suddenly
+      became a symlink)
+
+    * a directory entry contained a filename that was too long (no,
+      ENAMETOOLONG is not the right error here)
+
+    * the same node ID value was used for two different directories
+      (i.e. hard-linked directories are not allowed)
+
+Misc
+====
+
+Can the filesystem ask a question on the terminal of the user?
+--------------------------------------------------------------
 
 It would not be possible generally speaking, since it might not be an
-interactive program but rather a daemon, or a GUI program creating the
-file.  However you should be able to get the PID for the caller, and
-by looking in /proc you should be able to find the process tty or
-something similar. Perhaps it would be better to redesign your program
-not to have such interactivity anyway, try to use e.g. extended
-attributes of files to set per-file options, or a configuration file
-for your filesystem.
+interactive program but rather a daemon, or a GUI program doing the
+operation.  However you should be able to get the PID for the caller,
+and by looking in /proc you should be able to find the process tty or
+something similar.
 
+But this is not recommended.  You should rather think about solving
+this another way.
diff --git a/Filesystems b/Filesystems
index f7557f1..9f098d4 100644
--- a/Filesystems
+++ b/Filesystems
@@ -1,48 +1,23 @@
-Filesystems using FUSE, that I know of.  In order of appearance.
+This was generated on 2005/09/27 from
 
-If you find incorrect or outdated information here, please tell me.
-Also new entries are welcome.
+  http://fuse.sourceforge.net/wiki/index.php/LanguageBindings
+  http://fuse.sourceforge.net/wiki/index.php/FileSystems
+  http://fuse.sourceforge.net/wiki/index.php/OperatingSystems
 
-==============================================================================
-Name: OW
+For an up to date version please see the above pages.  You can also
+add new entries there.
 
-Author: Paul H. Alfille / palfille at partners org
+===============================================================================
+Language Bindings
+===============================================================================
 
-Homepage: http://owfs.sourceforge.net
+C
 
-Description:
+This is the native API
 
-  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.
+------------------------------------------------------------------------------
+Java
 
-==============================================================================
-Name: 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.
-
-==============================================================================
-Name: 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.
-
-==============================================================================
 Name: FUSE-J
 
 Author: Peter Levart / peter.levart at select-tech si
@@ -51,283 +26,38 @@
 
 Alternate download: http://www.cl.cam.ac.uk/~tdm25/fuse-j/
 
-Description:
+Description
 
-  FUSE-J provides Java binding for FUSE.  It comes with the
-  "proof-of-concept" ZIP filesystem which seems to be pretty stable.
+    FUSE-J provides Java binding for FUSE. It comes with the
+    "proof-of-concept" ZIP filesystem which seems to be pretty stable.
 
-==============================================================================
-Name: SMB for FUSE
+------------------------------------------------------------------------------
+C#
 
-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.
-
-==============================================================================
-Name: 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.
-
-==============================================================================
-Name: 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.
-
-==============================================================================
-Name: 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.
-
-==============================================================================
-Name: SULF - Stackable User-Level Filesystem (C# bindings)
+Name: SULF - Stackable User-Level Filesystem
 
 Author: Valient Gough / vgough at pobox com
 
 Homepage: http://arg0.net/users/vgough/sulf/index.html
 
-Description:
+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.
+    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.
 
-==============================================================================
-Name: LUFS bridge (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.
-
-==============================================================================
-Name: btfs (Bluetooth FileSystemMapping)
-
-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.
-
-==============================================================================
-Name: 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.
-
-==============================================================================
-Name: 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.
-
-==============================================================================
-Name: 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.
-
-==============================================================================
-Name: 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.
-
-==============================================================================
-Name: 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.
-
-==============================================================================
-Name: 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"
-
-==============================================================================
-Name: cvsfs-fuse
-
-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.
-
-==============================================================================
-Name: Wayback (User-level Versioning File System for Linux)
-
-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.
-
-==============================================================================
-Name: Trivial Rolebased Authorisation & Capability Statemachine (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.
-
-==============================================================================
-Name: SSHFS-FUSE
-
-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.
-
-==============================================================================
-Name: 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.
-
-==============================================================================
-Name: Offline Media Content Database (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.
+------------------------------------------------------------------------------
+TCL
 
-==============================================================================
 Name: TCL FUSE interface
 
-Author: Colin McCormack / colin at chinix com
+Author: Colin McCormack? / colin at chinix com
 
 Homepage: http://mini.net/tcl/13853
 
-==============================================================================
+------------------------------------------------------------------------------
+Python
+
 Name: Python interface for FUSE
 
 Author: Jeff Epler
@@ -336,7 +66,9 @@
 
 CVS: cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fuse co -P python
 
-==============================================================================
+------------------------------------------------------------------------------
+Perl
+
 Name: Perl interface for FUSE
 
 Author: Mark Glines
@@ -347,156 +79,494 @@
 
 CVS: cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fuse co -P perl
 
-==============================================================================
-Name: Cddfs
+------------------------------------------------------------------------------
+Sh
 
-Author: Matthieu Castet
-
-Homepage: http://castet.matthieu.free.fr/cddfs/
-
-Description:
-
-  Cddfs [1] is a file system for fuse that use libparanoia in order to
-  mount your audio cd.
-
-==============================================================================
 Name: Fuse-J-shfs
 
 Author: Paul "Joey" Clark / joey at hwi ath cx
 
 Homepage: http://hwi.ath.cx/twiki/bin/view/Neuralyte/FuseJshfs
 
-Description:
+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, ...
+    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, ...
 
-==============================================================================
-Name:  SMBNetFS
+------------------------------------------------------------------------------
+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
+
+===============================================================================
+File Systems
+===============================================================================
+
+Name: OW
+
+Author: Paul H. Alfille / palfille at partners org
+
+Homepage: http://owfs.sourceforge.net
+
+Description
+
+    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:
+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.
+    SMBNetFS is a Linux filesystem that allow you to use
+    samba/microsoft network in the same manner as the network
+    neighborhood in Microsoft Windows.
 
-==============================================================================
-Name: NTFS-FUSE
+------------------------------------------------------------------------------
+NTFS-FUSE
 
 Author: Yura Pakhuchiy / pakhuchiy at gmail com
 
 Homepage: http://linux-ntfs.sf.net/
 
-Description:
+Description
 
-  NTFS-FUSE is part of ntfsprogs package (utily name - ntfsmount).
-  It's rely on libntfs.  NTFS-FUSE support file overwrite changing it
-  size and can list/read/write/add/remove named data streams via xattr
-  interface.
+    NTFS-FUSE is part of ntfsprogs package (utily name -
+    ntfsmount). It's rely on libntfs. NTFS-FUSE support file overwrite
+    changing it size and can list/read/write/add/remove named data
+    streams via xattr interface.
 
-==============================================================================
-Name: BTSlave (BitTorrent File System)
+------------------------------------------------------------------------------
+BitTorrent File System
+
+Name: BTSlave
 
 Author: Bill Cox / bill at viasic com
 
 Homepage: http://btslave.sourceforge.net/
 
-Description:
+Description
 
-  BTSlave allows users to mount a BitTorrent .torrent file as a file
-  system.
+    BTSlave allows users to mount a BitTorrent? .torrent file as a
+    file system.
 
-==============================================================================
-Name: GfarmFS-FUSE
+------------------------------------------------------------------------------
+GfarmFS
 
 Author: Takuya Ishibashi / takuya at soum co jp
 
 Homepage: http://datafarm.apgrid.org/software/gfarmfs-fuse.en.html
 
-Description:
+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.
+    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.
 
-==============================================================================
-Name: Clustered Ordinary Raid Network File System (CORNFS)
+------------------------------------------------------------------------------
+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:
+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.
+    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.
 
-==============================================================================
-Name: djmount
+------------------------------------------------------------------------------
+djmount
 
 Author: Rémi Turboult / r3mi at users sourceforge net
 
 Homepage: http://djmount.sourceforge.net
 
-Description:
+Description
 
-  Djmount allows to mount as a Linux filesystem the content of
-  MediaServer devices compatible with the UPnP AV protocol.  It
-  discovers automatically all UPnP AV Media Servers on the network,
-  and make the content available in a directory tree.  An Audio or
-  Video file is rendered as a playlist (.m3u or .ram) which contains
-  an URL for the file.
+    Djmount allows to mount as a Linux filesystem the content of
+    MediaServer? devices compatible with the UPnP AV protocol. It
+    discovers automatically all UPnP AV Media Servers on the network,
+    and make the content available in a directory tree. An Audio or
+    Video file is rendered as a playlist (.m3u or .ram) which contains
+    an URL for the file.
 
-==============================================================================
-Name: HTTP-FUSE KNOPPIX
+------------------------------------------------------------------------------
+HTTP-FUSE KNOPPIX
 
 Homepage: http://unit.aist.go.jp/itri/knoppix/http-fuse/index-en.html
 
-Description: 
+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.
+    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.
 
-==============================================================================
-Name: OCamlFuse
+------------------------------------------------------------------------------
+WikipediaFS
 
-Homepage: http://sourceforge.net/projects/ocamlfuse
+Author: Mathieu Blondel
 
-Description:
+Homepage: http://wikipediafs.sourceforge.net
 
-  This is an ocaml binding for fuse enabling you to write your own
-  multithreaded userspace filesystems using the ocaml programming
-  language.
+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.
+
+===============================================================================
+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-ml at creo hu
 
 Homepage: http://wikitest.freebsd.org/moin.cgi/FuseFilesystem
 
-==============================================================================
-Name: 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.
-
-==============================================================================