h2. Functionality to be implemented by Net::DAV::Server h3. RFC 4918 Class 2 locking compliance * Enforce locking at the userland level, independent of any expensive, operating system-specific mechanisms like @flock()@ ** When evaluating an operation on a resource, determine the lock status based on absolute resource location and type * Identify a suitable, compact database storage mechanism to store the following information on any given lock: ** Opaque lock token/UUID ** Resolved local filesystem path (preferably as provided by @realpath()@) ** Requestor (author) ** Lock depth for collections (n, infinite) ** Lock expiration h4. The @If:@ header * Ensure any locking-related operations are conditionally acted upon as long as the @If:@ header lists the opaque lock token for a given resource, as well as the root of any given inifinitely-locked directory, where applicable. h4. Supported clients # libneon #* cadaver #* gnome-vfs #* KDE WebDAV kioslave # Microsoft Web Folders #* Microsoft Office #* Microsoft Front Page # Adobe Dreamweaver # Bit Kinex h3. Other goals * Apache mod_perl integration * Attribute storage support (plugin) * Lock support (plugin) * Authentication support (plugin) * Avoid buffering entire files in memory * Full litmus test complience * Quota/"disk free" support (both Mac 512byte and standards-compliant) * Revisit owner/creater validation, this had to be opened up for cpdavd.