webdav; reorder some sections

[Imported from Trac: page GSoCIdeas/Notes, version 5]
davidsarah 2010-03-16 21:17:25 +00:00
parent d50be8d44c
commit 96a8ba6c70

@ -23,16 +23,62 @@ Students: you don't have to use one of the following Ideas. You can come up wi
* Tahoe-LAFS Cryptography:
* Help us author a paper proving the security of the crypto that will be used to implement new shorter caps (such as the [Elk Point protocol](NewCaps)/WhatCouldGoWrong or the "Semi-Private Key" construction from <http://allmydata.org/~zooko/lafs.pdf> ). [Tickets labelled 'newcaps'](http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~newcaps)
## Free The Windows Client
* Make the [Windows client](http://allmydata.org/trac/tahoe-w32-client) use only free open-source software. (Implementing WebDAV is an alternative that would achieve a similar effect.)
## Connecting Tahoe-LAFS To Other Things
* Filesystem access:
* improve the FUSE frontend ([source code]source:contrib/fuse). [Tickets labelled 'fuse'](http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~fuse)
* support WebDAV for access from Windows and various filesystem browsers. [Tickets labelled 'webdav'](http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~webdav)
* integrate Tahoe-LAFS with the GVFS Gnome virtual filesystem
* Explore running a Tahoe-LAFS grid over [Tor](https://torproject.org) or [I2P](https://i2p2.de) to provide anonymity to servers and/or clients.
* Rescue the neglected C client library [libtahoeclient_webapi](http://allmydata.org/trac/libtahoeclient_webapi).
## WebDAV support
Difficulty: medium - hard
[Tickets labelled 'webdav'](http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~webdav)
WebDAV is a set of extensions to HTTP, specified in
[RFC 2518](http://tools.ietf.org/html/rfc2518.html) and
[a few other documents](http://www.ics.uci.edu/~ejw/authoring/),
that allow it to be used as a filesystem access protocol.
Supporting WebDAV in Tahoe would mean extending the
[webapi frontend]source:/src/frontends/webapi.txt to implement this
protocol.
The main attraction of implementing a WebDAV interface is that
several operating systems have bundled and somewhat integrated support
for it, including Mac OS X, Windows, and some Linux distributions.
In fact WebDAV may turn out to be an easier alternative to
[SMB/CIFS](http://en.wikipedia.org/wiki/Server_Message_Block)
for allowing filesystem access from Windows.
However, there is currently no working WebDAV implementation in Twisted
Python. There used to be one (the `web2.dav` package),
[but it bitrotted](http://twistedmatrix.com/trac/ticket/3081).
You'll have to decide whether to help fix that implementation, use a
non-Twisted implementation such as [WsgiDAV](http://code.google.com/p/wsgidav/)
that might be more difficult to integrate wth the existing Tahoe code,
or write your own. In any case, WebDAV is a complicated protocol and
you will need to decide what subset of it gives most "bang for the buck"
and is practical to support in the time available. For example, locking
is optional in the WebDAV spec; is it needed to interoperate with commonly
used WebDAV clients?
Unlike most filesystems which are constrained to be trees, the structure
of a Tahoe is in general a cyclic graph.
[draft-ietf-webdav-bind](http://tools.ietf.org/html/draft-ietf-webdav-bind) is
an Internet Draft that clarifies how WebDAV servers should handle cycles.
[davfs2](http://savannah.nongnu.org/projects/davfs2) is a FUSE-based
WebDAV filesystem client for Linux. To ensure that this runs correctly
over your implementation of WebDAV, you'll probably need to adapt the
tests for the existing Tahoe
["blackmatch"]source:contrib/fuse/impl_c/blackmatch.py FUSE interface
(this would not be redundant since the blackmatch implementation has
limitations that davfs2 would not).
The [WebDAV mini-redirector](http://en.wikipedia.org/wiki/WebDAV#Microsoft_Windows)
is the component of Windows providing its WebDAV filesystem support. It is
actually the less buggy of [two implementations](http://www.zorched.net/2006/03/01/more-webdav-tips-tricks-and-bugs/)
, but it still has had
[bugs](http://greenbytes.de/tech/webdav/webdav-redirector-list.html),
and
[security vulnerabilities](http://www.microsoft.com/technet/security/bulletin/MS08-007.mspx)
that you may need to take into account.
## Server Selection
*Which servers are connected to your client, and which of them have which shares of your files?*
@ -85,6 +131,19 @@ jumping-off point for health is #778.
* Optimize upload/download transfer speed. [Tickets labelled 'performance'](http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~performance)
* Implement storage server protocol over HTTP. #510
## Free The Windows Client
* Make the [Windows client](http://allmydata.org/trac/tahoe-w32-client) use only free open-source software. (Implementing WebDAV as described earlier is an alternative that would achieve a similar effect.)
## Connecting Tahoe-LAFS To Other Things
* Filesystem access:
* improve the FUSE frontend ([source code]source:contrib/fuse). [Tickets labelled 'fuse'](http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~fuse)
* integrate Tahoe-LAFS with the GVFS Gnome virtual filesystem
* Explore running a Tahoe-LAFS grid over [Tor](https://torproject.org) or [I2P](https://i2p2.de) to provide anonymity to servers and/or clients.
* Rescue the neglected C client library [libtahoeclient_webapi](http://allmydata.org/trac/libtahoeclient_webapi).
## Building Things On Top Of Tahoe
Difficulty: easy to hard, depending on project choice and how far you want to push it