more about webdav

[Imported from Trac: page GSoCIdeas2010, version 93]
davidsarah 2010-03-16 21:27:57 +00:00
parent a1007e46c5
commit b2c26ef18f

@ -78,9 +78,57 @@ Difficulty: easy to hard, depending on project choice and how far you want to pu
Invent your own Summer-of-Code project by building a new web app on top of Tahoe-LAFS. The [#SecureDecentralizedWiki Secure Decentralized Wiki] is one example of a Cloud App. See [GSoCIdeas](GSoCIdeas)/CloudApps for other ideas. Invent your own Summer-of-Code project by building a new web app on top of Tahoe-LAFS. The [#SecureDecentralizedWiki Secure Decentralized Wiki] is one example of a Cloud App. See [GSoCIdeas](GSoCIdeas)/CloudApps for other ideas.
# WebDAV # WebDAV support
Difficulty: medium to hard, depending on how much of an existing WebDAV implementation you are able to reuse
Implement a WebDAV front-end for Tahoe-LAFS so that files and directories stored in a distributed grid can be
accessed by operating systems and applications that speak the WebDAV protocol. WebDAV is specified in
[RFC 2518](http://tools.ietf.org/html/rfc2518.html) and [a few other documents](http://www.ics.uci.edu/~ejw/authoring/);
it essentially extends HTTP to act as a filesystem access protocol. For details see #451 which describes what the Tahoe-LAFS web server does now, how this differs from what a WebDAV web server does, and how to get started experimenting with the relevant source code.
The main attraction of implementing a WebDAV interface is that
several operating systems have bundled and somewhat integrated support
for it, including Windows, Mac OS X, and most distributions of Linux.
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, especially for write access, that davfs2 would not have).
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.
[Tickets labelled 'webdav'](http://allmydata.org/trac/tahoe-lafs/query?status=!closed&order=priority&keywords=~webdav)
Implement a WebDAV front-end for Tahoe-LAFS so that files and directories stored in a distributed grid can be accessed by operating systems (including Windows, Mac, and Linux) and applications that speak the WebDAV protocol. For details see #451 which describes what the Tahoe-LAFS web server does now, how this differs from what a WebDAV web server does, and how to get started experimenting with the relevant source code.
# Distributed Introduction # Distributed Introduction