[TxMt] Remote filesystems (was: Remote projects)

Gerd Knops gerti at bitart.com
Fri Sep 23 20:11:03 UTC 2005


Hi all!

[For the impatient reader: Just some food for thought, no solution  
given].

The discussion about remote projects made me think that ideally  
Virtual File Systems (VFS) really do not belong into the editor,  
rather they should be part of the OS. An example is the OS X webdavfs  
[1], which allows to mount webdav servers with the Finder, or the  
(poorly working and read only) ftp file system [2]. Something like  
that for SFTP would be the ultimate solution.

Under linux there is an interesting project called Fuse [3], which  
basically hooks a generic driver into the kernels VFS and  
communicates with user-space file system 'modules' (the OS X webdavfs  
works somewhat similar). Someone else recently wrote a driver for  
FreeBSD [4] that allows to use the Fuse file system modules.

The problem is that the OS X VFS implementation seems to be rather  
under-documented and auite the moving target [5]. It changed a lot  
for Tiger. It has developed independent from  FreeBSD, so porting the  
FreeBSD Fuse driver is not at all trivial (lack of documentation  
again not helping).

I briefly entertained a bridge that would make a remote sftp server  
appear like a webdav server, allowing it to be mounted locally using  
the webdavfs and without extra software on the server. While this is  
relatively easy to do (at least compared to the alternatives), it has  
one major back-draw: DAV [6] (complex [dare I say convoluted] as it  
seems) does not support the notion of file permissions. And the  
thought of making all files pushed to the server executable (or not  
executable) is not very appealing.

The ftpfs [2] on OS X uses yet another approach: It presents itself  
to the OS as an NFS server, and translates NFS to FTP. This may seem  
like a convoluted approach (and it is), but has the advantage that it  
can be completely implemented in user space, and the NFS protocol  
encapsulates it from changes in the kernels VFS implementation. So  
one could write a bridge/gateway program that serves NFS and  
translates it to SFTP. Or (though I have not had a look at  
feasibility) it might even be possible to make this Fuse compatible,  
giving easy access to many of the file system modules available for  
Fuse ([7], or makings of a RailsFS [8]). Sometimes I wish I wouldn't  
have to work for food...

Gerd

[1] man mount_webdav
[2] man mount_ftp
[3] http://fuse.sourceforge.net/
[4] http://wikitest.freebsd.org/moin.cgi/FuseFilesystem
[5] http://developer.apple.com/qa/qa2001/qa1242.html
[6] http://www.webdav.org/
[7] http://fuse.sourceforge.net/filesystems.html
[8] http://redhanded.hobix.com/inspect/ 
railsfsAfterACoupleMinutesOfToolingWithFuseWhoa.html




More information about the textmate mailing list