The road toward FUSE on Windows? Maybe WebDAV
The FUSE Filesystem in Userspace project has been recently on the news because of a new porting by a Googler called MacFUSE. For many users it could be interesting to have a Windows port, probably a natural question.
Update April 2012: one limitation of Dokan and other solution is that they are based on a Windows driver that requires administrative privileges for the setup. A possible alternative is a File Virtualization approach as the one provided by BoxedApp.
Update June 2011: on June 2008 arrived the first public release of Dokan http://dokan-dev.net/en/. Dokan is actually the best way to implement custom user space filesystems on Windows because it provides a solid driver that has many of the features of FUSE. It can be programmed in .NET or Java and it now supports reparse point for mounting such drives in any NTFS location. Many filesystems have been implemented
The other onorable mention on this topic goes to Pismo Mount http://www.pismotechnic.com/pfm/ap/ that although being not open source allows to mount Zip and ISO files on any location replacing the file with a mounted folder.
The problem of a Windows port is related to the closed approach in custom filesystems development under the Windows platform. The Installable FileSystem (IFS) Kit by Microsoft is quite expensive, although there exist some information and examples of open source custom filesystems for Windows (here).
Apart the documentation problem the development of a filesystem for Windows is a delicate matter and it is demonstrated by the difficulty of having a working EXT2 filesystem under Windows. There are indeed some efforts on having EXT2 under Windows like fs-driver.
Before starting a new IFS filesystem project for Windows supporting the FUSE interface it could be interesting to try an approach based on an existing IFS. I've experimented a little with custom filesystems based on the WebDAV for Windows, like my VFSNET project. WebDAV is an extension to HTTP that provides directory listing, file management, versioning and locking. The idea is to implement a local WebDAV server that exposes the user defined filesystem based on FUSE.
Actually Windows provides a redirector for WebDAV but it is quite buggy and in particular it makes difficult to use a local WebDAV server. Instead it is preferable to use a free WebDAV client provided by Novel once called NetDrive and now used by Novell's iFolder.
For sure in this way we get all the stability of an existing IFS for Windows, but there is open point. Speed. I have not yet performed a benchmark on the WebDAV redirectory for file operations. FUSE works by creating a UNIX domain socket pair that is used for communicating between the kernel module and the user application. The it uses a binary protocol that handles the requests. In the case of WebDAV redirector the kernel driver communicates with a support service and then it communicates with our local server through local HTTP. This solution has
What for a proof of concept? First build a FUSE example under cygwin and then make a local WebDAV server that exposes the FUSE interface to applications and the WebDAV to the redirector.
Update April 2012: one limitation of Dokan and other solution is that they are based on a Windows driver that requires administrative privileges for the setup. A possible alternative is a File Virtualization approach as the one provided by BoxedApp.
Update June 2011: on June 2008 arrived the first public release of Dokan http://dokan-dev.net/en/. Dokan is actually the best way to implement custom user space filesystems on Windows because it provides a solid driver that has many of the features of FUSE. It can be programmed in .NET or Java and it now supports reparse point for mounting such drives in any NTFS location. Many filesystems have been implemented
The other onorable mention on this topic goes to Pismo Mount http://www.pismotechnic.com/pfm/ap/ that although being not open source allows to mount Zip and ISO files on any location replacing the file with a mounted folder.
The problem of a Windows port is related to the closed approach in custom filesystems development under the Windows platform. The Installable FileSystem (IFS) Kit by Microsoft is quite expensive, although there exist some information and examples of open source custom filesystems for Windows (here).
Apart the documentation problem the development of a filesystem for Windows is a delicate matter and it is demonstrated by the difficulty of having a working EXT2 filesystem under Windows. There are indeed some efforts on having EXT2 under Windows like fs-driver.
Before starting a new IFS filesystem project for Windows supporting the FUSE interface it could be interesting to try an approach based on an existing IFS. I've experimented a little with custom filesystems based on the WebDAV for Windows, like my VFSNET project. WebDAV is an extension to HTTP that provides directory listing, file management, versioning and locking. The idea is to implement a local WebDAV server that exposes the user defined filesystem based on FUSE.
Actually Windows provides a redirector for WebDAV but it is quite buggy and in particular it makes difficult to use a local WebDAV server. Instead it is preferable to use a free WebDAV client provided by Novel once called NetDrive and now used by Novell's iFolder.
For sure in this way we get all the stability of an existing IFS for Windows, but there is open point. Speed. I have not yet performed a benchmark on the WebDAV redirectory for file operations. FUSE works by creating a UNIX domain socket pair that is used for communicating between the kernel module and the user application. The it uses a binary protocol that handles the requests. In the case of WebDAV redirector the kernel driver communicates with a support service and then it communicates with our local server through local HTTP. This solution has
What for a proof of concept? First build a FUSE example under cygwin and then make a local WebDAV server that exposes the FUSE interface to applications and the WebDAV to the redirector.
Comments
maybe you will be interested in this one very fresh project:
http://rfd.rsdn.ru/forum/message/2993239.1.aspx
It's in russian, but there is also a link to Mercurial repo.