I have drop a debug file (attached in a previous comment). Here is a new one (I have attempted sme modifications but I actually do not get any error message when I synchronize) :
Do not synchronize the property "starred"
What? Why? It is very nice that the information is synchronized, if a contact is marked as favorite!
Yes, of course. But there is a scenario where this is not desired: I would like to share an addressbook with another person, containing all contacts that apply to both of us (e.g. family). In general, this is no problem. However, different people have different preferences and therefore different contact favorites. Unfortunately, DAVdroid breaks such a scenario, since it synchronizes the “starred” information.
Since in most other scenarios this synchronization is desired, I think that the best solution would be to set a new property when creating an account in order to disable “starred” synchronization.
I’m not a friend of settings. I think we should discuss whether the “Starred” information is something that should be synchronized or not.
That’s hard to decide.
- Easy backup of the assignment of the contact to the list of starred contacts, which is a nice feature for most frequent situations.
- The “starred” information does not belong to the person behind the contact. Instead, this information is about how the user of the contact uses the contact. Currently, there is no other information of this type synchronized. For example, the attributes “times contacted”, “last time contacted”, “custom ringtone” (see #228) etc. are not synchronized too.
- Synchronization of the “starred” information disturbs synchronization of one addressbook between multiple persons (my personal motivation).
- Even if only one person syncs his contacts between multiple devices, it may be desirable to have different “starred” information on different devices (e.g. mobile phone vs. fixed-line phone or private phone vs. business phone).
- The “starred” information can be synchronized on another way: Create a group on the device, set the attributes “favorites” to 1 and “group_visible” to 0. Every (new) “starred” contact will be added automatically to the group and the group information is synchronized to the server. Unfortunately, the user can’t create such a group by its own (as far as I know). Google creates such a group automatically. However, this (automatic creation) can lead to the same problem I mentioned in the first post.
I think you have to decide, whether you want to have
- a sync adapter which synchronizes contacts (and then only contact information without “starred” and the other attributes) or
- a backup solution which synchronizes all additional attributes which belongs to the usage of a contact (as desired in #228).
I disagree with the two options put forward.
In the context of shared address books, one must also consider that sometimes one person has a ‘private’ e-mail address or some such from a contact that is not supposed to be shared. Also, in the note field people may add info that concerns their personal interactions with the contact, again not to be shared. Furthermore, groups are not always supposed to be shared.
The point I wish to make is that it is hard to make the distinction between what is supposed to be shared or not and that this line is not drawn at the vCard spec border. I do agree that the ‘starred’ feature should ideally be dealt with as a group (category), but devices/clients usually don’t support this well, as you indicated.
A possible solution is the following: Android merges data about the same contact from different sources. So create two addressbooks, one with shareable date, one with non-shareable data; sync them both, only share the former. This approach can also be used with the ‘multiple devices’ issue. The hard/non-nice part here is to get the right address book to pick up the ‘starring’ on the device: because (my) contact viewing/editing app(s) doesn’t expose that in the editor, but in the viewing part, where I cannot choose which backend to edit. I got it to do that by disabling syncing for one, then starring, then enabling syncing again.
I am actually doing something like this right now: DAVdroid does not support ‘RELATED’ yet, but CardDav-Sync does (in the nonstandard way Google contacts exports version 3.0 vCards); so I sync the same address book using the two different clients to access this data. It works (although I do get duplicates for some fields, such as URLs and ADRs that probably get injected differently into the Android contacts store by the two apps). (I would of course prefer to use a single vCard 4.0-based app… but anyway.)
there is a way that reconciles both use cases (davdroid as backup / sync stars and davdroid for group address books / don’t sync): instead of x-davdroid-starred use x-davdroid-starred-$USERNAME, so different people can keep their own sets of stars.
that could work even without a setting, if davdroid were to use the login name.
I don’t want this information to be synchronized as I interact with different people on different devices. By that I mean that my phone’s favorites represent the people I most frequently call, while on my tablet or PC I mostly write emails (to different people who don’t have a phone number).