A deep dive on Mac Contacts?

Thank you for providing such a great service for so many years! I would like to pitch an idea for an article to you. Your contact us page says I should contact @ace, so here it goes:

I would appreciate a deep-dive on the state of the contacts app on mac and ios devices. So far as I can tell, the situation is abysmal. I use Fastmail for both my work and personal contacts, calendars and email. Fastmail has a pretty good reputation, and the service has been reliable.

But the contacts app is a real pain to use, and, as far as I can tell, there is still no good way to share contacts. Even on this forum, you can find numeous people asking about sharing contacts within their family. Usually, the answer is to create a unique apple id that is used by everyone in the family to “share” contacts.

That’s basically what I have settled on in my organization: the only way we have figured out how to “share” contacts even somewhat reliably is to give every employee access to an account that we all share. But… Fastmail already has a global addressbook built in to our account! Why can’t we all just login to our own accounts and share contacts in our global addressbook?

I just ran a little test, and I’d like to gripe about it before I’m done: when you add multiple addressbooks from different accounts, both Macos and iOS automagically merges contacts it thinks are the same into one contact entry. That makes sense. It is also nice that you can swipe down and see that the single contact you’re looking at was created by multiple “linked contacts”. So far so good.

But what if you tap that “edit” button? Oh man. I tried that on my iphone and added a note with a contact that was being provided by two separate accounts. I tapped “save”. Here are the results:

  1. Everything looks great on my phone. My phone tells me there are two linked contacts on my phone, but it doesn’t indicate which linked contact the note was added to.

  2. When I tap on each “linked contact” on my phone, the new note appears in both places. That’s not ideal, perhaps, since it could lead to a lot of duplication. But it’s probably the best I could hope for without it prompting me further.

  3. When I log into Fastmail, the note has been added to one of the accounts but not the other. Yikes.

  4. When I pull up the contacts app on my MacBook Pro, there are now two entries for that contact instead of just one. One of the entries has the note, the other one doesn’t. The further plot twist is that the entry that does not have the note still says that it is made up of two linked cards. The entry with the note gives no indication as to which account it is coming from. To find that out, I have to click around on the left sidebar and filter to see whether it shows up or not.

So, as I say, the situation is abysmal. I genuinely do not understand why the situation is so awful in 2024. For goodness sake, Apple is going to release $3,000 VR googles this year! Can we please have sensible contact management?

2 Likes

I should add that I submitted this request to Joe Kissell at Take Control Books, and he responded very promptly that they would not be doing a Take Control book about the Contacts app because it’s a terrible app that doesn’t do what everyone wants (or thinks) it should do!

Bit of a bummer, but very relieving to know that I’m not just going crazy!

1 Like

You raise a lot of good points about Contacts issues. As “a prisoner falls in love with his chains”, I guess I got used to some of the lame behavior. And I can add a few more things to your list, too :-)

1 Like

This doesn’t solve the overall issue (with which I agree), but there is a shortcut for this particular one. If you press the option key, the sidebar will highlight the groups that the contact is in.

I’m also very frustrated with Contacts but my focus is on limitations in the way it syncs to other cloud-based services such as Google Contacts.

For example, if a birthday is added or changed on a Google Contact that has already synchronized at least once with iOS or macOS Contacts, this change is NOT synced to either Apple device.

Huh, go figure. Contacts works perfectly for me and I like the straightforward interaction design. Have you looked at CardHop as an alternative? It sounds like you’re looking for more of a directory service and it might suit you better.

Phew! Yeah, I’m no fan of Contacts either. I mostly use Cardhop.

It does sound like what you want is a directory service, though—the kind of thing that an organization would standardize on using Microsoft Exchange or the like.

My sense is that’s overkill for smaller organizations (and certainly for families), which is why the additional iCloud account tends to be the solution.

I’d be curious if there’s anything in between the shared iCloud account and a full Exchange setup. It’s not something I’ve had a need for, so I know little about the field.

I’ve heard of Microsoft Exchange, but I have always assumed that it did basically the same thing as what Fastmail provides: a global addressbook for everyone in the organization. In addition to read/write access to your own addressbook, particular users can be granted either read-only or read/write access to the global addressbook.

Simple, right?

Thanks very much for taking the time to respond!

There are two potential protocols involved, LDAP and CardDAV, both of which are included in Exchange. But the protocols are open, so they’re available from many places.

Contacts primarily uses CardDAV* (developed mostly by Apple) for syncing. CardDAV is the most commonly available protocol from third party servers (gmail, fastmail, MS, …). It’s probably most common because it’s a good bit easier to manage than LDAP, and most people only want the contacts part anyway. I don’t know what most of the differences are compared to LDAP, or whether a third party CardDAV server would be more reliable than Apple’s; given Apple’s track record, it’s not impossible. But it’s likely that CardDAV just doesn’t support features that people want/expect. It’s also possible that some of the Contacts problems are part and parcel of the Contacts app, and using an app other than Contacts that supports CardDAV would work better for at least some features/people.

LDAP is a ‘lightweight’** flavor of the open DAP X.500 directory service. It does a lot more than just contacts, such as account privileges. IIRC it primarily pushes centralized data to clients. Apple forked OpenLDAP to produce Open Directory, which was included in mac server. There are many LDAP server and client implementations available, some proprietary, some open source.

Contacts (mac and ios) is a client for the contacts features, but not a server.

Not every LDAP client can talk to every server, because there are variables such as which authentication protocols are provided. But it should be possible to find an LDAP server account, or run your own server (not at all trivial), if you want to manage the data on the server, then push it to any subscribed Contacts.

  • CalDAV is the protocol used for Calendar, also mostly developed by Apple.

** Having been mildly exposed to the mess that is LDAP, I don’t want to even read about full DAP. The people I’ve known who had to seriously deal with LDAP had interestingly expanded vocabularies.

The post by @gastropod got me curious about self-hosted CardDAV. Even though I’ve been running a Synology NAS drive for years, I never noticed that they offer a CardDAV server among their other services – just a few clicks and you have one on your home network. Presumably that would work well for a family.

Oh man. I would never even think about hosting my own cardDAV server! I’m looking to reduce my problems, not increase them! :slight_smile:

Years ago, I used and recommended Fruux. They are all-in on the open, DAV standards, which I find attractive. But when I moved my organization from Google to Fastmail, I didn’t need them anymore.

Really, I think the problem is pretty simple: The Apple contacts app simply doesn’t support what I want. And the whole operating system depends heavily on the contacts app for integration with mail, messages, etc. So even if you use cardhop or busycontacts, you can never get away from using the Apple contacts app on some level.

You should note that several services offer multiple protocols. For instance, I found that the default Google account (on my iPhone) has problems with my Google contacts (things just didn’t seem to sync right, and not all of Google’s features were available). I therefore configure my devices to not sync contacts through my normal Google account (which I still use for mail, notes and calendar) and created a separate CardDAV account for my Google contacts.

If your contacts server (whatever it is) also offers multiple mechanisms, you might want to try something similar.

See also Use CardDAV To Sync Google / Gmail Contacts With iOS

A deep dive into Contacts could be very interesting. Such a deep dive I think could reveal new horizons (if you don’t choke on the mixed metaphor).

On my system Activity Monitor reveals contactsd running almost constantly at about 50% cpu. Some other demons running frequently include suggestd, photoanalysisd, photolibraryd. My guess is these demons are analyzing my photos, contacts and probably other data, applying ML to search for patterns. For individuals who are listed in both Contacts and Photos, I suppose Contacts data could essentially be considered extended metadata for photos in Photos, and thus more grist for the ML mill.

For example, Photos can present a series of images of a person, in particular the person’s face. How doe that the appearance of that face vary over time? Information from Contacts can reveal other Persons whose changes in face appearance might be related. Information from Calendar can reveal health issues and treatments, as well as ages and life spans.

On your device Siri compiles your information. In the Cloud, health data from vast numbers of people is similarly analyzed, potentially revealing key indicators of various issues. Simplified versions of these key indicators can be downloaded, allowing your device to monitor your data for known indicators, and possibly suggest you consult a physician.

I suspect we will hear more about things of this sort at WWDC.

The above is all my speculation. Not speculation are Tim Cook’s remarks that improved health care will be Apple’s greatest accomplishment.

Haha. X.500 is certainly a bit of an animal, but LDAP is not bad. It’s mostly a key-value data store. It can be used as a database for applications requiring rapid reads. I built an authentication system in the 90s based on it that is still in production today.

Worth reminding that MS adopted LDAP as the basis of Active Directory, which is ubiquitous in offices around the world.

If you press the option key, the sidebar will highlight the groups that the contact is in.

Wow. Never knew this. Worth gold!

I might add that even though I have a “family” iCloud account for syncing contacts, I need to add any new contact to at least half of my devices because it doesn’t propagate.

I’ve taken to creating the new contact then exporting the card so I can put it on our shared iCloud directory to add to the other devices.

2 Likes

In addition to problems syncing with my iPhone, I find that syncing Google Contacts with macOS (through at least 12.7.2 Monterey where I am stuck due to hardware limitations) also is not fully satisfactory.

And even a vCard export from Google Contact and subsequent import to Apple has known problems:

But you should see if you can use CardDAV for your Google contacts. That what I’ve been doing for years and it seems to work well. The default contact-sync protocol Apple tries to configure (LDAP, I think) just doesn’t seem to work as well.

According to the article I cited, and my own phone’s configuration, you should manually add a CardDAV account (via the “Other” option, not via the Google option). And configure it for:

  • Server: google.com
  • User name: Your Google account (your full GMail address)
  • Password: Your Google account password
  • Description: Whatever you like (I use “Google (CardDAV)”)
1 Like

I tried adding Google Contacts via CardDAV to both my iPhone and iMac and both failed to verify my account, which is a G Suite Legacy account. Interestingly, the comments on the article that you cited refer to errors trying to verify a G Suite Basic account.

There are lots of internet posts by people whose CardDAV connections stopped working in the last few years so I think that this G Suite commonality is just a coincidence.

I suspect that the way to set up CardDAV is to use an “app password” as described in one of the answers to this question about CalDAV:

But Google seems to discourage doing so:

That may be necessary, since the CardDAV loging probably can’t triger an O-Auth2 2FA request.

I think I’m using an app password. It’s been so long I don’t really remember, but I know I set it up before there was any other option for getting an iPhone to connect to Google at all.

Yes, Google thinks app passwords are insecure. But no moreso than any other randomly-generated password. Keep it in a secure place (like your phone’s keychain) and don’t use it for anything else and you should be fine.

tldr:
A slight historical tangent, but the CalDAV spec was the work of a group, not just Apple. Notably the same person at Apple was involved with both CardDAV and CalDAV.

CardDAV is based on WebDAV/HTTP, which is more the transport and server spec, but uses the vCard format for the actual data.

Full Details

The CalDAV standard was really polished by the CalConnect consortium, a group of software companies and large customers. As that article mentions, Bernard Desruissaux represented Oracle, but he actually came from an acquisition of Steltor (formerly CS&T) who sold software called CorporateTime. They were also a strong believer in open standards and protocols. A brief history of the evolution of the standard was made by the former executive director Dave Thewlis.

CorporateTime went on to became part of Oracle Collaboration Suite to compete with Exchange, which was very dominant at the time and which used a proprietary protocol. One can guess how much interest Microsoft had in an open standard at the time.

Having participated in a few of the technical group sessions for a former employer, I can tell you the complexities in even the basic situations for shared contacts like you mention get complicated quickly. Somewhat explains why things are still so difficult, like scheduling a meeting for 4 people.

As someone else mentioned, LDAP is at its heart a key-value store, but the devil is in the details of how LDAP is used. It’s gotten better, but what and how exactly certain keys were used by different software took a while to settle down. It is not something I would recommend anyone use for a family or small business.

1 Like