From b2c26ef18f34978ef4495fbac3a66c85fec6e494 Mon Sep 17 00:00:00 2001 From: davidsarah <> Date: Tue, 16 Mar 2010 21:27:57 +0000 Subject: [PATCH] more about webdav [Imported from Trac: page GSoCIdeas2010, version 93] --- GSoCIdeas2010.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/GSoCIdeas2010.md b/GSoCIdeas2010.md index 28efac0..c31a609 100644 --- a/GSoCIdeas2010.md +++ b/GSoCIdeas2010.md @@ -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. -# 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