webdav; reorder some sections
[Imported from Trac: page GSoCIdeas/Notes, version 5]
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:
|
* 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)
|
* 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
|
## WebDAV support
|
||||||
* 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)
|
Difficulty: medium - hard
|
||||||
* 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
|
[Tickets labelled 'webdav'](http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~webdav)
|
||||||
* 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 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
|
## Server Selection
|
||||||
*Which servers are connected to your client, and which of them have which shares of your files?*
|
*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)
|
* 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
|
* 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
|
## Building Things On Top Of Tahoe
|
||||||
|
|
||||||
Difficulty: easy to hard, depending on project choice and how far you want to push it
|
Difficulty: easy to hard, depending on project choice and how far you want to push it
|
||||||
|
|
Loading…
Reference in a new issue