Files
Oxicloud/doc/dav-implementation-plan.md
T
2026-04-01 23:14:42 +02:00

8.7 KiB

24 - DAV Implementation Plan

A phased plan for adding WebDAV, CalDAV, and CardDAV support. The order is WebDAV first (file access), then CalDAV (calendars), then CardDAV (contacts). Each phase builds on the shared infrastructure from phase 1.

Executive Summary

DAV protocol support lets the platform interoperate with a wide range of clients and devices. The plan uses an incremental approach -- common infrastructure first, then each protocol in turn.

Implementation Phases

Phase 1: Common DAV Infrastructure (Est. 2-3 weeks)

Goals:

  • Build the shared infrastructure used by all DAV protocols
  • Implement XML request/response handling
  • Create adapters for basic DAV operations

Tasks:

  1. Week 1: Design and Architecture

    • Design DAV component architecture
    • Define interfaces for DAV adapters
    • Select libraries for XML processing and RFC 4918 support
  2. Week 2: Base Implementation

    • Implement XML serialization/deserialization handlers
    • Develop middleware for DAV request processing
    • Create shared structures (properties, namespaces)
    • Implement DAV request validation
  3. Week 3: Test Framework

    • Set up test environment for DAV protocols
    • Implement automated test clients
    • Create test cases for basic DAV operations

Deliverables:

  • XML processing framework for DAV requests/responses
  • Base adapters for existing entities
  • Test suite for DAV operations

Phase 2: WebDAV (Est. 3-4 weeks)

Goals:

  • Implement the full WebDAV protocol (RFC 4918)
  • Enable file and folder access via WebDAV
  • Ensure compatibility with common WebDAV clients

Tasks:

  1. Week 1: Basic Operations

    • Implement PROPFIND and PROPPATCH methods
    • Develop OPTIONS endpoint (capability discovery)
    • Implement GET, HEAD, PUT (read/write)
  2. Week 2: Advanced Operations

    • Implement MKCOL (directory creation)
    • Develop DELETE for WebDAV resources
    • Implement COPY and MOVE for files and directories
  3. Week 3: Locking and Extended Features

    • Implement LOCK and UNLOCK for resources
    • Add support for custom properties
    • Develop extended WebDAV features as needed
  4. Week 4: Testing and Optimization

    • Test with real clients (Windows, macOS, Linux)
    • Optimize performance for large transfers
    • Document WebDAV API and behavior

Deliverables:

  • Full WebDAV implementation (RFC 4918)
  • Usage documentation
  • Compatibility with the most common WebDAV clients

Phase 3: CalDAV (Est. 4-5 weeks)

Goals:

  • Implement the CalDAV protocol (RFC 4791)
  • Create entities and repositories for calendars and events
  • Support calendar operations with common clients

Tasks:

  1. Week 1: Data Model

    • Implement Calendar and CalendarEvent entities
    • Develop storage repositories
    • Create CalDAV DTOs and adapters
  2. Week 2: Basic Endpoints

    • Implement PROPFIND for calendar discovery
    • Develop MKCALENDAR for calendar creation
    • Implement GET/PUT for individual events
  3. Week 3: Advanced Queries

    • Implement REPORT for calendar queries
    • Develop date-range search support
    • Add recurrence handling (RRULE rules)
  4. Week 4: Interoperability

    • Implement efficient sync (collection-sync)
    • Add timezone support
    • Develop alarm and notification handling
  5. Week 5: Testing and Refinement

    • Test with popular CalDAV clients
    • Optimize performance for large calendars
    • Document CalDAV API and behavior

Deliverables:

  • Full CalDAV implementation (RFC 4791)
  • Calendar creation and management support
  • Compatibility with popular CalDAV clients
  • CalDAV usage documentation

Phase 4: CardDAV (Est. 3-4 weeks)

Goals:

  • Implement the CardDAV protocol (RFC 6352)
  • Create entities and repositories for address books and contacts
  • Support contact operations with common clients

Tasks:

  1. Week 1: Data Model

    • Implement AddressBook and Contact entities
    • Develop storage repositories
    • Create CardDAV DTOs and adapters
  2. Week 2: Basic Endpoints

    • Implement PROPFIND for address book discovery
    • Develop MKCOL for address book creation
    • Implement GET/PUT for individual contacts
  3. Week 3: Queries and Search

    • Implement REPORT for contact queries
    • Develop criteria-based contact search
    • Add support for contact groups
  4. Week 4: Testing and Refinement

    • Test with popular CardDAV clients
    • Optimize performance for large address books
    • Document CardDAV API and behavior

Deliverables:

  • Full CardDAV implementation (RFC 6352)
  • Address book creation and management support
  • Compatibility with popular CardDAV clients
  • CardDAV usage documentation

Phase 5: Integration and Release (Est. 2-3 weeks)

Goals:

  • Integrate all DAV protocols into a cohesive solution
  • Ensure cross-protocol compatibility
  • Prepare documentation and release materials

Tasks:

  1. Week 1: Integration

    • Consolidate shared code across protocols
    • Ensure behavioral consistency
    • Refine error handling and recovery
  2. Week 2: System Testing

    • Run end-to-end integration tests
    • Validate performance under load
    • Verify security and permissions
  3. Week 3: Documentation and Release

    • Finalize user guides for DAV clients
    • Create developer documentation
    • Prepare release package

Deliverables:

  • Complete, integrated DAV solution
  • User and developer documentation
  • Release-ready deployment package

Infrastructure Requirements

Library Dependencies

# Add to Cargo.toml
[dependencies]
# XML processing
quick-xml = "0.30.0"
xml-rs = "0.8.14"

# iCalendar support
icalendar = "0.15.0"

# vCard support
vcard = "0.2.0"

# DAV utilities
http-multipart = "0.3.0"

Database Schema

New tables for CalDAV and CardDAV are created during their respective phases. See dav-integration.md for the full schema.

Testing Strategy

Unit Tests

  • XML serialization/deserialization tests
  • Input validation tests
  • Business logic tests for each DAV operation

Integration Tests

  • End-to-end tests with simulated clients
  • Full-flow tests (create, update, delete)
  • Concurrency and conflict handling tests

Compatibility Tests

  • Test matrix with real clients (at least 3 per protocol)
  • Testing across different operating systems
  • RFC conformance verification

Performance Considerations

  1. Query Optimization

    • Implement pagination for large result sets
    • Optimize SQL queries for calendars and contacts
    • Use proper indexes for fast lookups
  2. Caching

    • Cache properties for PROPFIND responses
    • Use ETags for cache validation
    • Apply query caching for frequent reports
  3. Efficient Processing

    • Efficient XML processing for large requests
    • Data streaming for large files
    • Async processing for expensive operations

Risks and Mitigation

Risk Impact Likelihood Mitigation Strategy
Client compatibility issues High Medium Early testing with a variety of clients, strict adherence to specs
Insufficient performance Medium Low Load testing from the start, design for scalability
Excessive complexity Medium Medium Modular approach, clear abstractions, frequent code reviews
Security vulnerabilities High Low Security reviews, strict input validation, penetration testing
Schedule delays Medium Medium Conservative planning, clear milestones, iterative approach

Success Criteria

  1. Compatibility

    • All protocols comply with their respective RFCs
    • Verified compatibility with at least 3 major clients per protocol
    • Works on all major operating systems
  2. Performance

    • Typical operation response time < 500ms
    • Supports calendars with 1000+ events without significant degradation
    • Supports address books with 1000+ contacts without significant degradation
  3. Usability

    • Simple, documented client setup process
    • Clear and specific error messages
    • Full documentation for users and developers

Required Resources

  1. Development Team

    • 1-2 backend developers (Rust)
    • 1 frontend developer (for UI integration if needed)
    • 1 tester
  2. Infrastructure

    • Multi-OS test environment
    • Assorted DAV clients for testing
    • CI/CD server for automated tests
  3. Skills

    • Experience with advanced HTTP protocols
    • XML processing knowledge
    • Familiarity with WebDAV, CalDAV, and CardDAV standards

Next Steps

  1. Assign resources to the project
  2. Set up code repository and initial structure
  3. Start Phase 1 (Common DAV Infrastructure)
  4. Configure CI/CD environment for testing
  5. Review and refine the plan as needed during implementation