Title: OSAF, Chandler, WebDAV, CAP, CalDAV
1OSAF, Chandler, WebDAV, CAP, CalDAV
- Lisa Dusseault
- Open Source Application Foundation
2Topics
- My background
- OSAF in brief
- Chandler
- Product Vision
- Protocol requirements
- WebDAV introduction
- Properties
- Distributed Authoring
- Advanced features
- CalDAV architecture
3My 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
4OSAF
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
5Chandler 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!
6(No Transcript)
7(No Transcript)
8(No Transcript)
9Traditional PIM
10Mixed Collections
11Chandler Protocol Requirements
12Sharing Functional Requirements
- Synchronize Calendars
- View somebody elses 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
13Sharing Abstract Requirements
- Mutual authentication
- Access control / multiple authors
- Data browsing
- Data synchronization
- Search
- Notifications?
- IM?
- Locate peers dynamically?
14Existing Standards
Requirement Standards Others
Data browse/synch HTTP/WebDAV, NFS CIFS
Search WebDAV
Access Control WebDAV, NFS CIFS
Locate peers Zeroconf JXTA
Notifications XMPP (Jabber), SIP
Mutual P2P Authentication XMPP PKI
IM XMPP, SIMPLE
15Modular Protocol Composition
Event server
URLs
MIME
WebDAV
XMPP
SASL
LDAP
SSL
PKI
Directory
16Silo Protocol Design
CAP
NNTP
IMAP
HTTP
- authenticate
- sessions
- browse
- synch
- acl
- authenticate
- sessions
- browse
- synch
- authenticate
- sessions
- browse
- synch
- acl
- authenticate
- sessions
- browse
- synch
- acl
calendar
newsgrp
folder
directory
event
post
msg
resource
TCP
17Chandler 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
18Why 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
19WebDAV Topics
- Introduction goals, interoperability, model
- HTTP
- Synchronization via ETags
- WebDAV
- Properties
- Distributed Authoring
- Access Control
- DeltaV
20WebDAV 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
21Interoperability
Web Browsers
Web servers
Productivity Applications
Archives
WebDAV
Publishing
Document Management
File Explorers
Site and Content Management
Email
22File system view
23Workflow model
24Usage examples
- 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
25Data 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
26HTTP Model
- Data Model Resources, entities
- Communication model request/response
- Address model
- A URL points to a resource
27HTTP Features
- Methods
- GET, PUT, DELETE
- POST
- HEAD, TRACE
- ETags
- Intermediary support
28ETags
- Resources have ETags
- Chosen/published by server
- Remembered by caches
/folder
Cache
doc1.txt
etag1284467
etag1284458
doc2.txt
doc1.txt
doc2.txt
etag1284467
etag8255591
Need to GET
29Synchronization
- HTTP only
- GET ltresource-urlgt HTTP 1.1
- If-Match etag1088ae32
- Must remember every resource
- Still -- it works
30Performance
- HTTP designed for low latency
- Size of requests just not an issue
- Pipelining may be important in some applications
31WebDAV Focus
- URLs, MOVE, COPY, MKCOL
- Properties
- Locks
- Access Control
- DeltaV
32How WebDAV affects URLs
- MOVE, COPY
- BIND, UNBIND --gt see bindings
- Collection membership
- Can list children of /specs
- Address is determined by parent(s)
33Properties
- 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
34Properties
- 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
35Live 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
36Examples Directory listing
- ltmultistatusgt
- ltresponsegt
- lthrefgtURL for /specslt/hrefgt
- ltpropstatgtDetails of /specslt/propstatgt
- lt/responsegt
- ltresponsegt
- lthrefgtURL for doc1lt/hrefgt
- ltpropstatgtDetails of doc1lt/propstatgt
- lt/responsegt
- ltresponsegt
- lthrefgtURL for doc2lt/hrefgt
- ltpropstatgtDetails of doc2lt/propstatgt
- lt/responsegt
- lt/multistatusgt
37Example Text Properties in XML
- ltresponse xmlnsDAVgt
- lthrefgthttp//example.com/folder/doc.txtlt/hrefgt
- ltpropstatgt
- ltpropgt
- ltcreationdategt1997-12-01T174221-0800
- lt/creationdategt
- ltdisplaynamegtProposal for
Reorglt/displaynamegt - ltgetetaggte8829107lt/getetaggt
- lt/propgt
- lt/propstatgt
- lt/responsegt
38Example XML properties in XML
- ltprop xmlnsDAVgt
- ltmauthor xmlnsmietfianaschemeswgmetagt
- ltmfirstnamegtLisalt/mfirstnamegt
- ltmlastnamegtDusseaultlt/mlastnamegt
- lt/mauthorgt
- lt/propgt
39Synchronization, take 2
- WebDAV
- PROPFIND ltcollection-urlgt HTTP 1.1
- Depth infinity
- lt?xml version1.0?gt
- ltpropfind xmlnsDAVgt
- ltpropgtltgetetaggtlt/propgt
- lt/propfindgt
- Easier to get list of changed and new resources
40Locks
- Avoid Lost Update problem
- HTTP ETags help but arent sufficient
- Tells who is editing a document
- Widely used
- Adobe clients require support
- Optional feature of base WebDAV spec
41Lost update problem
42Lost update with Etags
Client A
Server State
Client B
GET file
GET file
Hello Allison
Change name
Change salutation
PUT file
New ETag assigned
PUT file, check ETag
Hello Alice
B must start over!
GET file
43Concurrent 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
Dear Alice
44What locks arent
- Locks dont prevent read operations
- Locks dont create a sandbox
- Locks dont involve a transaction
Read properties
Write properties
Modify entity
Read entity
45ACLs
- RFC3744
- Three working implementations
- Interoperability work in progress
46ACLs
- 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
47Versioning
- RFC3253, March 2002
- DeltaV Working Group
- Lots of IBM input
- Implementations of core features proven
- Version history
- Checkin, checkout
48Version history, URLs
File.doc
http//example.com/file.doc
root-version
v1
http//example.com/?vfile.docn1
successor-set
v2
http//example.com/?vfile.docn2
49Versioning
- Advanced support for
- Forks, merges
- Server Workspaces
- Activities atomic multi-file checkins,
multi-file branches - Baselines
- Versioned collections
50Calendaring
51Calendaring Standards Status
- IETF Working group
- been through 5 chairs since 1996
- 8 years of debate over CAP model and design
- Design by committee
- Changing editors
- Changing names CIP, CTP, CAP
- Compare to iCalendar and iMIP focus ? success
- Inventing many things from scratch
- Session control, feature negotiation
- Addressing, hierarchical object access, and
queries - Access control, other security design
52Current CAP problems
- 136 pages and still underspecified
- Complex -- both clients and servers
- Maintains connection between server and client
- No Web addresses defined for calendar items
- Data model poorly defined
- Offline operation undefined
- Not supported by Microsoft, Apple, IBM
- Not yet a standard
53Data model problems
- Are recurrances first-class items?
- Does a hierarchy imply inheritance?
- Is free-busy information a roll-up?
- Do free-busy ACLs differ from ordinary ACLs?
- What class of thing are VCALSTOREs, VAGENDAs,
VQUERYs, VTIMEZONEs, VEVENTs, etc. - Which are the same kinds of things?
- Which are different?
54Chandler problems with CAP
- Server centric
- What functions can the client perform? Chandler
wants control - Hard to make peer-to-peer operation consistent
- Connection-oriented
- Makes servers less scalable
- Client must keep open yet another connection
- Search instead of Synch
- Poor performance
- Many roundtrips, e.g. GENERATE-UID
55Chandler problems with CAP, cont
- Data access and scheduling mixed
- Alexander Talers mail of 24 May 1999
- But scheduling model doesnt help multiple
clients work well together - What if clients want to use XMPP to instantly
schedule
56Chandler problems with CAP, cont
- Poor extensibility (IMAP model)
- Chandler wants to annotate and share much more
- How to put a picture like a map along with an
event? - No leverage
- Compare to leverage of WebDAV
- BEEP
- More work
- No CAP client libraries exist today (python,
other) - IMAP-like model harder for clients more required
features
57Too many features
- Dont need searching if using synch
- Dont want scheduling but server MUST support
- Dont want to accept alarms in scheduling
requests - Dont want attendees to set own status
- At least not directly
58Requirements for Calendar Server Access Protocol
- Authenticate to server
- Access control for multiple authors
- Data browsing
- Support for vCalendar data format, including
free-busy - Data synchronization
- Search
- Invitations, fan-out?
- Or is this a client function
- Notifications
- Reminders, incoming invitations
59Where to layer
CalDAV
CAP
WebDAV
BEEP
60WebDAV -- Application neutral
text
img
vCard
vCal
Data formats
WebDAV
Data access
SSL/TLS
Data privacy
TCP
Transport
Extend classic protocol layering
61CalDAV overview
- Data model
- Calendars are WebDAV collections
- http//example.com/users/lisa/calendars/karate
- Events are HTTP (WebDAV) resources
- http.../calendars/karate/seminar.ics
- HTTP URLs extremely portable
- Full HTTP backward compatibility
- ETags, last modified date, caching
- Full WebDAV backward compatibility
62File formats
- HTTP GET should return something useful
- GET ltevent-urlgt
- Returns iCalendar document?
- Returns xCalendar?
- Negotiation is a possibility
- GET ltcalendar-urlgt
- Possible roll-up into large iCalendar file
- Possible entry-point into WebUI
- Note WebDAV doesnt define GET of collections
63CalDAV and WebDAV Properties
- Any implementor can add custom properties without
conflict - XML property format
- conducive to WebUI implementations
- Backward compatibility easier
- Clients only ask for properties they know how to
display - IMAP model very difficult to achieve backward
compatibility
64Specific properties
ltresponse xmlnscietfwgcalschgt
lthrefgthttp//example.com/lisa/event1.icslt/hrefgt
ltpropstatgt ltpropgt ltcdtstartgt2004-05-01T
1000-0800lt/cdtstartgt ltcdtendgt2004-05-01T
1100-0800lt/cdtstartgt ltctranspgtltcOPAQUE-
NOCONFLICT/gtlt/ctranspgt ltcsummarygtImportant
Meetinglt/csummarygt lt/propgt
ltstatusgtHTTP/1.1 200 OKlt/statusgt
lt/propstatgt lt/responsegt
65CalDAV and Locks
- Optional feature
- Definitely useful for shared calendars
- Also useful for multiple clients
- PDA and laptop
66CalDAV and WebDAV ACLs
- Access control could be optional
- A simple system can make calendars readable only
by owners - A slightly more complex system can make events
either private (only owner) or public) - A high value-add server can have powerful access
control, e.g. shared calendars
67CalDAV and DeltaV
- Versioning?
- Definitely optional
- High value-add feature
- Useful to see who changed an event
68Support for CalDAV
- Apple iCal
- Publish vCalendar document via WebDAV
- Mozilla
- Uses Apple model, supports CalDAV
- MS Exchange - more structured, granular
- Browse calendars via WebDAV
- Use WebDAV properties for appointment information
- Not interoperable with Apple, Mozilla
- Cyrusoft reviewing CalDAV draft
69Summary
- Chandler is ambitious, open, sharing-oriented
- Combines multiple data types in shared views
- WebDAV is common data access protocol
- Supports versioning, search, access control,
locking, addressing -- all independent of data
formats - WebDAV iCalendar CalDAV
- Internet-Draft (work in progress)
- Working on next version
70Bonus Slides
71iMIP, vCalendar and Calendar Servers
SchedulingClient
Attendee
72Modular Protocol Composition
SSL
URLs
WebDAV
data
DataStore
MIME
events
XMPP
URLs
Direc-tory
SASL
LDAP
73Permissions
- All
- Read
- Write
- Bind, unbind
- Write-content, write-properties
- Administer
- Read-acl, write-acl
- Unlock (destroy lock)
- Read-current-user-privilege-set
74Inheritance
- Each resource has inherited-acl-set property
- Can declare which other resource(s) it gets ACLs
from - On some systems, a user with write-acl privilege
could set this property to change inheritance
75Principals
- Browsable collections of principals
- Each principal is a resource
- Has URL for identification in ACLs
- http//example.com/principals/users/AliceW
/principals
/groups
/users
sales
dev
AliceW
BobR
76Principals and Directories
LDAP?
WebDAV
transform
Result simpler client
Standard
Implementation-specific
77(No Transcript)