I'm working on a WebDAV interface to MediaWiki, based on the WebDAV module I contributed to the Gallery project: http://www.mediawiki.org/wiki/WebDAV
The goal of this project is: * To support connecting to MediaWiki with WebDAV clients like [http://www.webdav.org/cadaver/ cadaver] and [http://0pointer.de/lennart/projects/fusedav/ fusedav]. * To support integrating MediaWiki with editors that support WebDAV, like Emacs and Eclipse. * To explore MediaWiki article histories with WebDAV clients that support the WebDAV versioning extension, DeltaV. * To support connecting to MediaWiki with a Subversion client like the command line or Eclipse Subclipse plugin.
Connecting with Subversion is in the scope of this project because Subversion supports a protocol which is very close to WebDAV and DeltaV: http://subversion.tigris.org/webdav-usage.html
By supporting Subversion clients, I can edit MediaWiki articles using the Emacs version control mode and I can explore MediaWiki article histories using the Eclipse Subclipse plugin. If I maintain a software project's documentation in MediaWiki, I can use the Subversion [http://svnbook.red-bean.com/nightly/en/svn.advanced.externals.html externals] feature to checkout MediaWiki articles along with the source code. These can then be distributed with the project or converted to PDF or manpage using XSL as part of the build process.
So far I have implemented: * Some WebDAV features: GET, PUT, PROPFIND and DELETE. I can edit articles with cadaver, fusedav, Emacs and Eclipse. * Some DeltaV features: version-tree and baseline support. I can explore article histories and old revisions with cadaver. * Subversion checkout: I can checkout articles from the command line and explore article histories with Subclipse. Checkin will need support for the svndiff format, which happily is well documented in the Subversion source.
You can install it by executing in your MediaWiki root directory:
svn co http://svn.freegeek.org/svn/mediawiki-webdav/trunk .
However the code is still very "proof of concept" - I'm still figuring out how the code will be finally organized. Unless I can contribute this interface to the MediaWiki project, I guess it should be organized as a MediaWiki extension? However I'm still getting familiar with how MediaWiki delegates requests to extensions. Most WebDAV clients demand hierarchical URLs and don't support query strings, so I currently use two additional PHP landing pages in the MediaWiki root directory: * webdav.php handles WebDAV requests for articles like webdav.php/<MediaWiki_Article_Name> * deltav.php is responsible for DeltaV functionality. Its layout is based on Subversion's, e.g. deltav.php/ver/<Revision_ID>, deltav.php/bc/<Revision_ID>, etc.
If I continue using this layout, I will spend some time cleaning and reorganizing the code. But before I do, I'd love some feedback from MediaWiki developers: Is this a reasonable design? What are the alternatives to and the consequences of introducing these two new landing pages?
Eventually, I would like to move this project to the MediaWiki Subversion repository. Here is my SSH public key, signed with my GPG key: http://cgi.sfu.ca/~jdbates/tmp/freegeek/id_dsa.pub.gpg
My username is "jablko".
I look forward to your input on this project! Thanks, Jack