pimutils / pimutils/vdirsyncer

RFC: Match by displayname, v2

Open
#616 7 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

cat: ui lv: hard mod: DAV planning type: enhancement
Dominant language
Python
Stars
1.9k
Forks
185
Avg merge
11h 49m
Merged PRs (30d)
1

Description

Problem

Discovery has been a huge UX pain since forever.

  • We require users to know identifiers that are neither well-defined nor exposed in the UI of any other tool for CardDAV/CalDAV.
  • Local folders have two "names": The displayname file and the folder name. It doesn't make sense to have them as separate concepts.

Solution

In that order, ideally all at once:

  • Match by displayname, see #420. Only use displayname in UI (collections arguments and "Syncing..."-output).
  • Make sure to unicode-normalize displaynames to avoid "visual duplication".
  • Allow arbitrary characters in collection names (internal property)
  • DAV: Fix #405 by setting collection to an arbitrary unique identifier. Might as well be the entire URL.
    • Similarly for Google storage.
  • filesystem: displayname == foldername for filesystem storage

Later

  • Add option to DAV storage to ignore displaynames (for broken servers)

This is massive breakage. I'm unsure how a migration strategy for users could look like. Just tell the user to set up vdirsyncer from scratch?

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 reviewing related issues #420 and #405, then trace how collection names and displaynames are represented across DAV, Google, and filesystem storage. Define the migration strategy and acceptance criteria for normalization, arbitrary identifiers, and UI output; the issue is done only when the breaking changes and upgrade path are resolved.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.