29 | | == Connecting Tahoe-LAFS To Other Things == |
30 | | * Filesystem access: |
31 | | * improve the FUSE frontend ([source:contrib/fuse source code]). [http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~fuse Tickets labelled 'fuse'] |
32 | | * support WebDAV for access from Windows and various filesystem browsers. [http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~webdav Tickets labelled 'webdav'] |
33 | | * integrate Tahoe-LAFS with the GVFS Gnome virtual filesystem |
34 | | * Explore running a Tahoe-LAFS grid over [https://torproject.org Tor] or [https://i2p2.de I2P] to provide anonymity to servers and/or clients. |
35 | | * Rescue the neglected C client library [http://allmydata.org/trac/libtahoeclient_webapi libtahoeclient_webapi]. |
| 27 | == WebDAV support == |
| 28 | |
| 29 | Difficulty: medium - hard |
| 30 | |
| 31 | [http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~webdav Tickets labelled 'webdav'] |
| 32 | |
| 33 | WebDAV is a set of extensions to HTTP, specified in |
| 34 | [http://tools.ietf.org/html/rfc2518.html RFC 2518] and |
| 35 | [http://www.ics.uci.edu/~ejw/authoring/ a few other documents], |
| 36 | that allow it to be used as a filesystem access protocol. |
| 37 | Supporting WebDAV in Tahoe would mean extending the |
| 38 | [source:/src/frontends/webapi.txt webapi frontend] to implement this |
| 39 | protocol. |
| 40 | |
| 41 | The main attraction of implementing a WebDAV interface is that |
| 42 | several operating systems have bundled and somewhat integrated support |
| 43 | for it, including Mac OS X, Windows, and some Linux distributions. |
| 44 | In fact WebDAV may turn out to be an easier alternative to |
| 45 | [http://en.wikipedia.org/wiki/Server_Message_Block SMB/CIFS] |
| 46 | for allowing filesystem access from Windows. |
| 47 | |
| 48 | However, there is currently no working WebDAV implementation in Twisted |
| 49 | Python. There used to be one (the {{{web2.dav}}} package), |
| 50 | [http://twistedmatrix.com/trac/ticket/3081 but it bitrotted]. |
| 51 | You'll have to decide whether to help fix that implementation, use a |
| 52 | non-Twisted implementation such as [http://code.google.com/p/wsgidav/ WsgiDAV] |
| 53 | that might be more difficult to integrate wth the existing Tahoe code, |
| 54 | or write your own. In any case, WebDAV is a complicated protocol and |
| 55 | you will need to decide what subset of it gives most "bang for the buck" |
| 56 | and is practical to support in the time available. For example, locking |
| 57 | is optional in the WebDAV spec; is it needed to interoperate with commonly |
| 58 | used WebDAV clients? |
| 59 | |
| 60 | Unlike most filesystems which are constrained to be trees, the structure |
| 61 | of a Tahoe is in general a cyclic graph. |
| 62 | [http://tools.ietf.org/html/draft-ietf-webdav-bind draft-ietf-webdav-bind] is |
| 63 | an Internet Draft that clarifies how WebDAV servers should handle cycles. |
| 64 | |
| 65 | [http://savannah.nongnu.org/projects/davfs2 davfs2] is a FUSE-based |
| 66 | WebDAV filesystem client for Linux. To ensure that this runs correctly |
| 67 | over your implementation of WebDAV, you'll probably need to adapt the |
| 68 | tests for the existing Tahoe |
| 69 | [source:contrib/fuse/impl_c/blackmatch.py "blackmatch"] FUSE interface |
| 70 | (this would not be redundant since the blackmatch implementation has |
| 71 | limitations that davfs2 would not). |
| 72 | |
| 73 | The [http://en.wikipedia.org/wiki/WebDAV#Microsoft_Windows WebDAV mini-redirector] |
| 74 | is the component of Windows providing its WebDAV filesystem support. It is |
| 75 | actually the less buggy of [http://www.zorched.net/2006/03/01/more-webdav-tips-tricks-and-bugs/ |
| 76 | two implementations], but it still has had |
| 77 | [http://greenbytes.de/tech/webdav/webdav-redirector-list.html bugs], |
| 78 | and |
| 79 | [http://www.microsoft.com/technet/security/bulletin/MS08-007.mspx security vulnerabilities] |
| 80 | that you may need to take into account. |
| 81 | |