Enhance webDAV sync
Open
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
- to reduce this:
Journal:
- store any modification
- compress if no sync token was used
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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