nextcloud / nextcloud/server

Enhance webDAV sync

Open
#22,584 1 comment 10 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

1. to develop client: 💻 desktop client: 🤖🍏 mobile enhancement feature: dav performance 🚀
Dominant language
PHP
Stars
36.9k
Forks
5.2k
Avg merge
2d 3h
Merged PRs (30d)
713

Description

This is a wrap-up of our call, @rullzer @er-vin @marinofaggiana
If something is missing/wrong please adjust

Problem:

  • clients (especially mobile and macOS file provider) need to take data/time into account when doing large propfinds, e.g. folder with > 10k files

Webdav Sync collection:

  • https://tools.ietf.org/html/rfc6578
  • upon each propfind with syncToken: store clientId, syncToken, children with eTag
  • upon following propfind with syncToken: compare new state with old and return only diff

Rating:

  • reduces transferred data, parsing on client side
  • increases load on server
  • increases database storage
    • to reduce this:
      • only use this method if > 50(?) items in folder
      • do not use it on Desktop, only mobile clients

Journal:

  • store any modification
  • compress if no sync token was used

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading RFC 6578 and tracing the existing WebDAV PROPFIND and sync-token handling in the server. Define how client IDs, tokens, child eTags, modifications, and journal compression should be persisted, including the proposed mobile and large-folder limits. Done means the agreed design is implemented and verified with tests for initial, incremental, and journal-based synchronization.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
api, backend, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.