WebDAV and DeltaV for Oberon

A Guide to WebDAV and DeltaV with Bluebottle



Edgar Schwarz, edgar@edgarschwarz.de, 15.8.2003




1. WebDAV and DeltaV

WebDAV and DeltaV are two RFCs which extend HTTP to make the Web writeable. For more information see www.webdav.org.


1.1 WebDAV


RFC 2518 "HTTP Extensions for Distributed Authoring -- WEBDAV" describes an extension to the HTTP/1.1 protocol that allows clients to perform remote web content authoring operations.

This extension provides a coherent set of methods, headers, request entity body formats, and response entity body formats that provide operations for:


Properties: The ability to create, remove, and query information about Web pages, such as their authors, creation dates, etc. Also, the ability to link pages of any media type to related pages.


Collections: The ability to create sets of documents and to retrieve a hierarchical membership listing (like a directory listing in a file system).


Locking: The ability to keep more than one person from working on a document at the same time. This prevents the "lost update problem," in which modifications are lost as first one author then another writes changes without merging the other author's changes.


Namespace Operations: The ability to instruct the server to copy and move Web resources.


In HTTP/1.1, method parameter information was exclusively encoded in HTTP headers. Unlike HTTP/1.1, WebDAV encodes method parameter information either in an Extensible Markup Language (XML) [REC-XML] request entity body, or in an HTTP header.


WebDAV introduces the following new HTTP methods:

PROPFIND, PROPPATCH, MKCOL, DELETE, COPY, MOVE, LOCK, UNLOCK.

In addition existing methods get more functionality.


1.2 DeltaV


RFC 3253 "Versioning Extensions to WebDAV" specifies the WebDAV (Web Distributed Authoring and Versioning) versioning extensions to the HTTP/1.1 protocol. WebDAV versioning will minimize the complexity of clients that are capable of interoperating with a variety of versioning repository managers, to facilitate widespread deployment of applications capable of utilizing the WebDAV Versioning services. WebDAV versioning includes automatic versioning for versioning-unaware clients, version history management, workspace management, baseline management, activity management, and URL namespace versioning.

Versioning is concerned with tracking and accessing the history of important states

of a web resource, such as a standalone web page. The benefits of versioning in the context of the worldwide web include:

A resource has an explicit history and a persistent identity across the various states it has had during the course of that history. It allows browsing through past and alternative versions of a resource. Frequently the modification and authorship history of a resource is critical information in itself.

Resource states (versions) are given stable names that can support externally stored links for annotation and link server support. Both annotation and link servers frequently need to store stable references to portions of resources that are not under their direct control. By providing stable states of resources, version control systems allow not only stable pointers into those resources, but also well defined methods to determine the relationships of those states of a resource.


WebDAV Versioning defines both basic and advanced versioning functionality.

Basic versioning allows users to:

- Put a resource under version control

- Determine whether a resource is under version control

- Determine whether a resource update will automatically be captured as a new version

- Create and access distinct versions of a resource

Advanced versioning provides additional functionality for parallel development and configuration management of sets of web resources.

DeltaV introduces the following new HTTP methods:

VERSION-CONTROL, REPORT, CHECKOUT, CHECKIN, UNCHECKOUT,

MKWORKSPACE, UPDATE, LABEL, MERGE, BASELINE-CONTROL,

MKACTIVITY


2 ObeDAV


ObeDAV (To coin a name for WebDAV for Oberon) doesn't have the ambition to completely implement these RFCs. As a first step a client and a server are implemented which allow distributed versioning of single files and also of sets of files as baselines.

For this purpose some of the methods mentionedmethods are implemented as far as necessary to communicate between client and server:

PROPFIND, MKCOL, DELETE, VERSION-CONTROL, REPORT, CHECKOUT,

CHECKIN, UNCHECKOUT, UPDATE, MERGE, BASELINE-CONTROL

As WebDAV uses XML for HTTP bodies it is implemented in BlueBottle.

Baselines are available. Subbaselines are under development.


2.1 WebDAV Versioning Concepts


WebDAV knows a 'resource' (file). A resource under version control is a 'version resource' or 'version' for short.

A set of resources is called 'configuration'. A configuration contains all the resources of a collection resource (directory) and it's subcollections (As long as the subcollection isn't itself a configuration. So it's possible that configurations can be nested. Which doesn't mean that they are linked).

A version of a configuration is a 'baseline'. A baseline contains versions and optionally subbaselines.

baseline = { version } { baseline }



2.2 ObeDAV User Interface


2.2.1 Command Line

es.WebDAVClientTool.Mod contains a set of commands DCT.* for versioning and also normal WebDAV commands.


2.2.2 Explorer Interface

It's modeled after FATDocs.NewDoc by Bernhard Egger.

Display

- If a file or a collection is versioned it's version number is shown. It it's red it means that it's checked out.

- When selecting files in the listing as paramteres it's important that the invisible objects after the name are selected.

- Some commands expect selected files and additional selected parameters in other frames.

- MM on a directory shows the directory. MM on a file downloads to a temporary file and opens it.

Menuitems

- The menuitems aren't exactly mirroring the HTTP methods used in DeltaV but are similar to the good old RCS paradigm. I feel comfortable with these term but YMMV. Please feel free to comment. Subbaselines not yet available in menu. Parameters can be given by selection in the directory list or in another frame.

- VersionDo

Checkin: create a new version

Goes for already version-controlled and unversioned files.

list: files to checkin, other: "author" "checkin comment".

Uncheckout: change state from checked-out to checked-in and undo potential changes.

list: files to uncheckout.

Checkout:

list: files to checkout.

Update: get a checked-in resource.

Depending on parameters replace a checked-in version controlled file or collection or create it.

list: file/collection to update, other: version url

other: resoure name, version url

- VersionRep

Version: miscellaneous information on the current version of a version controlled resource.

list: files

History: version history of the resource.

list: file

BlComp: Baseline compare.

other: baseline url1, baseline url2

2.3 Download

You can get ObeDAV at http://webdav.ethz.ch/davzip/WebDAV.1.2.0.Zip.

Comments to edgar@edgarschwarz.de