780 likes | 966 Views
OSAF, Chandler, WebDAV, CAP, CalDAV…. Lisa Dusseault Open Source Application Foundation. Topics. My background OSAF in brief Chandler Product Vision Protocol requirements WebDAV introduction Properties Distributed Authoring Advanced features CalDAV architecture. My background.
E N D
OSAF, Chandler, WebDAV, CAP, CalDAV… Lisa Dusseault Open Source Application Foundation
Topics • My background • OSAF in brief • Chandler • Product Vision • Protocol requirements • WebDAV introduction • Properties • Distributed Authoring • Advanced features • CalDAV architecture
My background • IETF: • Chair of WebDAV, XMPP, IMAPEXT WGs • Participant in CalSch, HTTP, others • Microsoft Exchange PM • Calendaring standard architect • Content indexing • IRC, instant messaging • WebDAV • Xythos Director of Development • Massively scalable WebDAV server • OSAF
OSAF Create and gain wide adoption of Open Source application software of uncompromising quality. • Founded in 2001 by Mitch Kapor as non-profit • Currently 20 people (mostly developers) • Volunteer assistance encouraged
Chandler Vision • New model for personal information organization • Combine email, tasks, contacts and events • Easier to ‘clear the table’ and focus • Extensible, customizable • User defines and bookmarks views very easily • User adds important metadata fields • 3rd-party plug-ins or ‘parcels • Share!
Chandlerserver Calendar Synch?Publish? CAP? Web/fileserver Email IMAP, POP, iMIP HTTP? Other Chandler Sharing ? PDA Chandler Protocol Requirements
Sharing: Functional Requirements • Synchronize Calendars • View somebody else’s calendar offline • Add events to shared calendars • Discuss availability • Share Views • Collections of mixed items • Sorting, columns, other details of view also • Share/synchronize Contacts, tasks, email • Sharing “circle”
Sharing: Abstract Requirements • Mutual authentication • Access control / multiple authors • Data browsing • Data synchronization • Search • Notifications? • IM? • Locate peers dynamically?
Datastore Modular Protocol Composition Event server URLs MIME XMPP WebDAV SSL PKI SASL LDAP Directory
“Silo” Protocol Design IMAP NNTP CAP HTTP • authenticate • sessions • browse • synch • acl • authenticate • sessions • browse • synch • authenticate • sessions • browse • synch • acl • authenticate • sessions • browse • synch • acl folder newsgrp calendar directory msg post event resource TCP
Chandler 1.0 Sharing • IMAP/POP3/SMTP support for doing mail • Propose HTTP/WebDAV for sharing • Between Chandler peers and publish to server • Browsing, search and synchronization • To share contacts, tasks, email, calendar data • To share Chandler views (heterogeneous) • Use other standards for other pieces • Possibly PKI for sharing circle trust relationships • Possibly XMPP for chat, peer relationship, event notifications
Why OSAF Likes WebDAV • Solves repository access requirements • Browse, search, synchronize • Multiple authors (ACL, locking, versioning) • Provides additional benefits • HTTP base provides URLs, libraries, fast development, simple clients, and extensible protocol • Clear data model for any application semantics • Properties • Collections and resources • Synchronization • Proven, deployed, open technology
WebDAV Topics • Introduction: goals, interoperability, model • HTTP • Synchronization via ETags • WebDAV • Properties • Distributed Authoring • Access Control • DeltaV
WebDAV Goals • Extend HTTP, preserving semantics • Edit Web pages • Use any authoring tool • Use native URLs for in-place authoring • Enable applications • Any document-plus-metadata application • Clear extensible data model • Web File System
Interoperability Web Browsers Web servers Productivity Applications Archives • MS Office • Adobe tools WebDAV Publishing Document Management File Explorers Site and Content Management Email
MS Office/Adobe: authoring Apache, IIS 5: Web site authoring Exchange 2000: email/calendaring Apple iCal Mac OS/X: publish to Web servers Xythos WFS: file sharing Chubb: underwriter repository Pacific National Labs: chemistry repository Subversion: source control repository Excosoft, Interwoven, Vignette, Documentum: Content management Usage examples
Data model A collection http://example.com/hr/ A resource http://example.com/hr/index.html A sub-collection http://example.com/hr/ergonomics/ http://example.com/hr/ergnomics/posture.doc
HTTP Model • Data Model: Resources, entities • Communication model: request/response • Address model • A URL points to a resource
HTTP Features • Methods • GET, PUT, DELETE • POST • HEAD, TRACE • ETags • Intermediary support
ETags • Resources have ETags • Chosen/published by server • Remembered by caches /folder Cache doc1.txt etag1284467 doc2.txt etag1284458 doc1.txt doc2.txt etag1284467 etag8255591 Need to GET
Synchronization • HTTP only: GET <resource-url> HTTP 1.1 If-Match: etag1088ae32 • Must remember every resource • Still -- it works
Performance • HTTP designed for low latency • Size of requests just not an issue • Pipelining may be important in some applications
WebDAV Focus • URLs, MOVE, COPY, MKCOL • Properties • Locks • Access Control • DeltaV
/specs doc1.txt doc2.txt How WebDAV affects URLs • MOVE, COPY • BIND, UNBIND --> see bindings • Collection membership • Can list children of /specs • Address is determined by parent(s)
Properties • Expose HTTP data in listings • For each resource in collection… etag, last-modified, etc • Expose WebDAV information • Is this a collection • Expose custom data • Invoice #, customer ID… • Picture size, date of photo… • To addresses, from address, date received…
Properties • PROPFIND • Get properties for a single resource • Get properties for all resources inside a collection (direct children or recursive) • Specific list of properties or names of all properties • PROPPATCH • Operates only on single resource • Set property values • Create and delete dead properties
Live vs. Dead properties • Live properties: server generates, enforces, watches or … • getETag, resourceType • Dead properties: client has complete control • invoiceID, customerID, description • Live properties are frequently protected; dead properties all fall under same access control
/specs doc1.txt doc2.txt Examples: Directory listing <multistatus> <response> <href>URL for /specs</href> <propstat>Details of /specs</propstat> </response> <response> <href>URL for doc1</href> <propstat>Details of doc1</propstat> </response> <response> <href>URL for doc2</href> <propstat>Details of doc2</propstat> </response> </multistatus>
Example: Text Properties in XML <response xmlns=“DAV:”> <href>http://example.com/folder/doc.txt</href> <propstat> <prop> <creationdate>1997-12-01T17:42:21-08:00 </creationdate> <displayname>Proposal for Reorg</displayname> <getetag>e8829107</getetag> </prop> </propstat> </response>
Example: XML properties in XML <prop xmlns=“DAV:”> <m:authorxmlns:m=“ietf:iana:schemes:wg:meta”> <m:firstname>Lisa</m:firstname> <m:lastname>Dusseault</m:lastname> </m:author> </prop>
Synchronization, take 2 • WebDAV: PROPFIND <collection-url> HTTP 1.1 Depth: infinity <?xml version=“1.0”?> <propfind xmlns=“DAV:”> <prop><getetag></prop> </propfind> • Easier to get list of changed and new resources
Locks • Avoid “Lost Update” problem • HTTP ETags help but aren’t sufficient • Tells who is editing a document • Widely used • Adobe clients require support • Optional feature of base WebDAV spec
Client A Server State Client B GET file Hello Allison GET file Change name PUT file Change salutation Hello Alice PUT file DearAllison A’s fix is lost! Lost update problem
Lost update with Etags Client A Server State Client B GET file GET file Change name Hello Allison Change salutation PUT file New ETag assigned PUT file, check ETag Hello Alice B must start over! GET file
Concurrent edit with locks Client A Server State Client B LOCK file GET file Hello Allison LOCK file fails Change name PUT file UNLOCK file LOCK file works Hello Alice GET file Change salutation PUT file UNLOCK file DearAlice
What locks aren’t • Locks don’t prevent read operations • Locks don’t create a sandbox • Locks don’t involve a transaction Read properties Write properties Read entity Modify entity
ACLs • RFC3744 • Three working implementations • Interoperability work in progress
ACLs • Model • Each resource has an Access Control List (ACL) • Each ACL has n Access Control Entries (ACE) granting specific permission to specific principal • Permissions similar to NFS: read, write… • Principals includes users, groups • Compatible with popular file systems
Versioning • RFC3253, March 2002 • DeltaV Working Group • Lots of IBM input • Implementations of ‘core’ features proven • Version history • Checkin, checkout
Version history, URLs File.doc http://example.com/file.doc root-version v1 http://example.com/?v=file.doc&n=1 successor-set v2 http://example.com/?v=file.doc&n=2
Versioning • Advanced support for: • Forks, merges • Server Workspaces • Activities: atomic multi-file checkins, multi-file branches • Baselines • Versioned collections