Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Mac groups vCards #213

Open
Tracked by #85
nalt opened this issue May 12, 2017 · 68 comments
Open
Tracked by #85

Support Mac groups vCards #213

nalt opened this issue May 12, 2017 · 68 comments
Assignees
Labels
1. to develop Accepted and waiting to be taken care of compatibility Compatibility with other services V4 Support for VCard V4

Comments

@nalt
Copy link

nalt commented May 12, 2017

Steps to reproduce

  1. Setup CardDAV Sync in MacOS
  2. Create a group in MacOS Contact app

or

  1. Create a group in Nextcloud

Expected behaviour

Groups created in Contacts app should appear as groups in Nextcloud.
Groups created in Nextcloud should appear as groups in Contacts app.

Actual behaviour

A group created in Contacts app appears as a normal contact in Nextcloud.
Nextcloud groups are not represented in Contacts app.

Server configuration

Operating system: Nextcloud official Docker

Web server: Nginx Proxy

Database: MariaDB

Nextcloud version: 11.0.3

Contacts version: 1.5.3

Updated from an older Nextcloud or fresh install: Updated, but contacts cleared

Client configuration

Operating system: MacOS 10.12.4

CardDAV-clients: MacOS Contacts app


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

@EddyLB
Copy link

EddyLB commented Jun 15, 2017

Same issue with Nextcloud 12

Server configuration

Operating system: Debian GNU/Linux 8.8 (jessie) x86_64

Web server: Apache/2.4.10 (Debian) (apache2handler)

Database: mysql 5.5.55

PHP version: 5.6.30-0+deb8u1
Modules loaded: Core, date, ereg, libxml, openssl, pcre, zlib, bcmath, bz2, calendar, ctype, dba, dom, hash, fileinfo, filter, ftp, gettext, SPL, iconv, mbstring, session, posix, Reflection, standard, shmop, SimpleXML, soap, sockets, Phar, exif, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xml, xmlreader, xmlwriter, zip, apache2handler, PDO, apcu, curl, gd, imagick, intl, json, mcrypt, memcache, mysql, mysqli, pdo_mysql, pdo_sqlite, pspell, readline, recode, sqlite3, tidy, xmlrpc, xsl, mhash, apc, Zend OPcache

Nextcloud version: 12.0.0 - 12.0.0.29

Are you using external storage, if yes which one: files_external is disabled

Are you using encryption: no

Are you using an external user-backend, if yes which one: LDAP/ActiveDirectory/Webdav/...

Client configuration

Browser: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.1 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.1

Operating system:

  • macOS Sierra version 10.12.6 Beta (16G8c) and Contacts version 10.0 (1756.20)
  • iOS 10.3.3 (14G5037b)

Updated from an older Nextcloud/ownCloud or fresh install:
Updated from last release of NextCloud 11

List of activated apps:

App list ``` Enabled: - activity: 2.5.2 - bruteforcesettings: 1.0.2 - calendar: 1.5.3 - comments: 1.2.0 - contacts: 1.5.3 - dav: 1.3.0 - federatedfilesharing: 1.2.0 - federation: 1.2.0 - files: 1.7.2 - files_pdfviewer: 1.1.1 - files_sharing: 1.4.0 - files_texteditor: 2.4.1 - files_trashbin: 1.2.0 - files_versions: 1.5.0 - files_videoplayer: 1.1.0 - firstrunwizard: 2.1 - issuetemplate: 0.2.1 - logreader: 2.0.0 - lookup_server_connector: 1.0.0 - nextcloud_announcements: 1.1 - notifications: 2.0.0 - oauth2: 1.0.5 - password_policy: 1.2.2 - provisioning_api: 1.2.0 - serverinfo: 1.2.0 - sharebymail: 1.2.0 - survey_client: 1.0.0 - systemtags: 1.2.0 - theming: 1.3.0 - twofactor_backupcodes: 1.1.1 - updatenotification: 1.2.0 - workflowengine: 1.2.0

Disabled:

  • admin_audit
  • encryption
  • files_external
  • gallery
  • user_external
  • user_ldap
</details>

@skjnldsv
Copy link
Member

Could you create a new contact on your Mac and sync it to nextcloud, then export it from nextcloud and post the result here please.

@skjnldsv skjnldsv added the needs info Not enough information provided label Jul 26, 2017
@irgendwie
Copy link
Member

Afaik MacOS (and/or Apple in general) stores groups as vcards and not as property in a vcard, like we do it in the contacts app. When configuring davDroid (for Android) you can choose between those two options, I'm not sure if this is also possible for apple products.

@skjnldsv
Copy link
Member

If we want to implement this, this won't be a priority then :/

@EddyLB
Copy link

EddyLB commented Jul 27, 2017

Hi @skjnldsv,
I've created a group "macOS" and a contact in that group. As expected, mac OS Contacts creates 2 cards:

  • one declaring the group with X-ADDRESSBOOKSERVER-KIND:group
    and the ID X-ADDRESSBOOKSERVER-MEMBER:urn:uuid:8a3da972-8df0-4e5a-a572-bdd4621abc39. Apple uses X-ADDRESSBOOKSERVER-KIND instead of KIND, which is to my understanding acceptable according to RFC 6350.

  • one declaring the contact and attaching the card to the group using the ID with UID:8a3da972-8df0-4e5a-a572-bdd4621abc39

After syncing with Nextcloud, I get two non-grouped new cards (attached). It would really be great that the Nextcloud Contacts app accepts X-ADDRESSBOOKSERVER-KIND as well as KIND for identifying vCard representing a group of persons or entities.

Group macOS.vcf.txt
Contact In macOS Group.vcf.txt

@skjnldsv
Copy link
Member

Isn't there an option to change this behavior on Mac?

@skjnldsv skjnldsv changed the title Groups are not synced between Server and client MacOS Contacts app Support Mac groups vCards Jul 27, 2017
@skjnldsv skjnldsv added compatibility Compatibility with other services feature parity Feature on other projects that needs to be implemented and removed needs info Not enough information provided labels Jul 27, 2017
@EddyLB
Copy link

EddyLB commented Jul 27, 2017

On macOS 10.12, the user can choose between the vCard formats 2.1 and 3.0 (and the vCard encoding format for 2.1). He/she can also enable/disable the export of notes and photos in vCards and the use of a private me card.

As shown for example here, the property KIND is not supported in 3.0 (only in 4.0).

@nalt
Copy link
Author

nalt commented Aug 7, 2017

MacOS does not have option to change how the vCard are synced. Even if there was a hack via some config file, this would not be user-friendly at all. Their solution corresponds to the KIND/MEMBER fields of vCard 4.0, without breaking the older standards. So the logic is the same as in the 4.0 standard.

How does Nextcloud store groups - as a name in the Categories field? What would happen, if a vCard 4.0 using the standardized KIND/MEMBER fields is sent?

I would assume the version option exposed to the user only affects the export functionality.

@aluxnimm
Copy link

We support iCloud contact groups with X-ADDRESSBOOKSERVER-KIND:group also now for mapping Outlook Distribution Lists to contact groups in OutlookCalDavSynchronizer

So would be really useful if the contact app could show the members of the group for a better Nextcloud and Outlook integration! Now the group is only visible as a normal contact with the name of the group and no members but atleast can be synced back to (another) Outlook or macOS instance.

@skjnldsv skjnldsv added this to the 2.1.0 milestone Sep 13, 2017
@skjnldsv
Copy link
Member

Let's go!
Adding this to the 2.1 milestone! We'll try implementing that!

@skjnldsv skjnldsv self-assigned this Sep 13, 2017
@skjnldsv skjnldsv added the 1. to develop Accepted and waiting to be taken care of label Sep 13, 2017
@nalt
Copy link
Author

nalt commented Oct 21, 2017

Great!
Do you have a plan already how to handle this vCard "dialect" and potential other ones?

@sushidave
Copy link

sushidave commented Oct 23, 2017

FYI - The same issues exists for ownCloud: #455, #475

@Woi
Copy link

Woi commented Feb 28, 2018

Maybe nice to know:
DAVdroid has a nice comparison table of both methods.
They also document the limited group support in nextcloud app.

@chrsch
Copy link

chrsch commented Apr 22, 2018

@skjnldsv Did you have any success with this? Is it still ongoing or stale?

@skjnldsv
Copy link
Member

skjnldsv commented Aug 1, 2018

It's still ongoing.
Can some of you try a vcard 4 group with the real KIND and not X-ADDRESSBOOK-KIND property on mac to see if it works?

@dphi
Copy link

dphi commented Aug 1, 2018

Hi @skjnldsv, is does not work for me with the following adjustments:

Original:

VERSION:3.0
PRODID:-//Apple Inc.//AddressBook 11.0//EN
N:Test-Group;;;;
FN:Test-Group
X-ADDRESSBOOKSERVER-KIND:group
X-ADDRESSBOOKSERVER-MEMBER:urn:uuid:909c0bfb-9a8b-4514-b7d4-0b41ba7b11d2
REV:2018-04-07T20:45:06Z
UID:b450093e-e90c-45f6-8bd4-3b91facd123
END:VCARD

Adjustment:

VERSION:3.0
PRODID:-//Apple Inc.//AddressBook 11.0//EN
N:Test-Group;;;;
FN:Test-Group
KIND:group
MEMBER:urn:uuid:909c0bfb-9a8b-4514-b7d4-0b41ba7b11d2
REV:2018-04-07T20:45:06Z
UID:b450093e-e90c-45f6-8bd4-3b91facd123
END:VCARD

@skjnldsv
Copy link
Member

skjnldsv commented Aug 1, 2018

Strangely enough, KIND/MEMBER are supposed to be supported for v4+ only :)
I guess we'll try to add a support for both then.

@aluxnimm
Copy link

Yes a vcard with VERSION:3.0 is not valid with KIND/MEMBER, that's the reason for X-ADDRESSBOOKSERVER prefix. Only with VERSION:4.0 KIND/MEMBER are allowed, so the adjustment above is an invalid vcard. You really should support both, since there is no support for v4+ cards in many clients/servers.

@skjnldsv skjnldsv modified the milestones: 2.2.0, 3.0.0 Aug 22, 2018
@brezlord

This comment was marked as off-topic.

@Matteo85
Copy link

Matteo85 commented Sep 5, 2023

Afaik MacOS (and/or Apple in general) stores groups as vcards and not as property in a vcard, like we do it in the contacts app. When configuring davDroid (for Android) you can choose between those two options, I'm not sure if this is also possible for apple products.

With regards to issue: Contact groups can't be deleted nextcloud/server#1175

It sounds like Apple isn't following the vCard 3.x or 4.x standards. Since Nextcloud is built to sustain those standards, waiting to fix an Apple mistake doesn't serve the community, especially since simple issues like being able to delete a user group after creating it (a simple CRUD fix) is being held back by an issue that may never be resolved. Apple has a tendency to do things the way they want and try to force compliance with their modus operandum. Since it is Nextcloud's intention to follow the vCard standards:

This is a complicated answer. We did not invent the way contacts works. We are following the official vCard format. This format include a predefined set of properties that other applications/devices supports too (Android, iOS, Windows, Gnome...). Adding a custom property would just make it compatible with Nextcloud and will not be understood by any other clients and make it complicated for us to ensure its sustainability over time. Long story short, we suggest you use the Notes field to add your custom data :)

I would suggest moving forward with vCard standards UI and functionality issues and not wait for Apple. You can't please everyone, and this is a glaring error (#1175)

@RokeJulianLockhart
Copy link

@Matteo85, should we post that in the Apple Developer Forums then?

@Matteo85
Copy link

Matteo85 commented Sep 7, 2023

You can if you want. I posted here because another thread (#1175), which is not part of the Mac development, referred to this error as having to be fixed before the thread I was viewing would be fixed. In my opinion this delay is ridiculous since they are unrelated items (or should be...). We should be able to delete user groups after creation, and this has been a known issue since 2019. To have basic CRUD functions delayed for a niche problem shouldn't be happening.

@nano13
Copy link

nano13 commented Apr 17, 2024

You can if you want. I posted here because another thread (#1175), which is not part of the Mac development, referred to this error as having to be fixed before the thread I was viewing would be fixed. In my opinion this delay is ridiculous since they are unrelated items (or should be...). We should be able to delete user groups after creation, and this has been a known issue since 2019. To have basic CRUD functions delayed for a niche problem shouldn't be happening.

And again a year later, no solution in sight, and still blocking nextcloud/server#1175 , which is an absolutely basic standard feature, still missing for at least half a decade now. I'm very sorry to say, but this is really just a huge shitshow ...

@microfx
Copy link

microfx commented Apr 17, 2024

yeah ... haha ... ain't nobody using nextcloud for serious stuff anymore due to lacking features like this.

@nano13
Copy link

nano13 commented Apr 17, 2024

So I am actually an IT-Admin running a growing company offering typical services to a bunch of customers. I would love to have a real alternative to the well known commercial cloud solutions. If we would be successful with NextCloud and being able to make money based on that, we would most definitely consider to become an official supporter of NextCloud. This would be just a normal thing to do to ensure our own success.

But if I decide to promote NextCloud to our customers, it will be most likely just a matter of days until someone bumps into this (or some similar) issue. Do you really expect me to explain my customers then: "Yeah, sorry. This is an open bug in Nextcloud for almost a decade now. For some reason, they have tied this simple and basic functionality (#1175) to some niche problem (this) where they are waiting for Apple to fix some of their implementations (which is of course absolutely ridiculous because of course they never will because why should Apple care???), so the Nextcloud-guys will never fix this problem, either. Better you just get used to it!"

If I do this, we can close our company just right there. So unfortunately my test with NextCloud seems to end here with the result: Promoting this product will most likely backfire and undermine our customers trust in us, so we simply can't!

@SebastianKrupinski
Copy link
Contributor

Hi Everyone,

Would someone be so kind as to create a group with the "MacOS Contact app" and post the vCard for us.

Thank you

@patzm
Copy link

patzm commented Oct 15, 2024

I just tried on macOS 15.0.1 (24A348) without success. I can see the option in the context menu but when I click it, no response.
Image

the group also doesn't appear on NC and the NC groups are not shown in the Contacts app.

@patzm
Copy link

patzm commented Oct 15, 2024

actually creating a group on iOS works. It is called lists there. However also that list doesn't appear as a property / group / field in the NextCloud web contacts viewer.
Test.vcf.zip

@SebastianKrupinski
Copy link
Contributor

SebastianKrupinski commented Oct 15, 2024

Thank you @patzm

Looks like MacOS is using the multiple cards in a single vcf file as a grouping mechanism and NOT the KIND="group" property with references. (face palm)

BEGIN:VCARD
    VERSION:3.0
    PRODID:-//Apple Inc.//iPhone OS 18.0.1//EN
    N:Contact;Empty;;;
    FN:Empty Contact
    ORG:Nextcloud Is Awesome ;
END:VCARD
BEGIN:VCARD
    VERSION:3.0
    PRODID:-//Apple Inc.//iPhone OS 18.0.1//EN
    N:;Another;;;
    FN:Another
END:VCARD

I am curious if this is only when you export from the app or if it is sent to NC like this via CardDAV.

@favincen
Copy link

Looks like MacOS is using the multiple cards in a single vcf file as a grouping mechanism and NOT the KIND="group" property with references. (face palm)

I have the same output here (macOS 14.7), but I also suspect that macOS Contacts app list export feature is in fact exporting members instead of exporting the list/group itself...
And on my side too groups created within Apple Contacts app are not showing on NC side. So I see no way to export an apple made group vcard appart from actually sniffing a CardDAV transaction between the two... 😢

@patzm
Copy link

patzm commented Oct 15, 2024

yes agreed, with @favincen: the exported file might not actually be the group but just the chained contacts therein. Reason: I can't click export if the group is empty. It doesn't show the option.

@SebastianKrupinski
Copy link
Contributor

@favincen @patzm do you have access to your NC database? To see if the entry gets created? It should be the last entry in the 'oc_cards' table when you create a new list. The 'carddata' field has the contents

@patzm
Copy link

patzm commented Oct 15, 2024

My table is actually just called cards without the oc_ prefix.
the table has 1036 entires, sounds about right.

What I did:

  • create a list called test-contacts-ios on my iPhone
  • create a group called test-contacts-macos on my Mac

Run

SELECT * FROM cards WHERE carddata LIKE '%test-contacts%'

Result:

id addressbookid carddata uri lastmodified etag size uid
1301 2 BEGIN:VCARD VERSION:3.0 X-ADDRESSBOOKSERVER-KIND:group PRODID:-//Apple Inc.//iOS 18.0.1//EN N:test-contacts-ios;;;; FN:test-contacts-ios UID:0E85507C-C67C-4C12-B4C2-E5EF19CF4E37 END:VCARD B887B012-9C30-42E2-AE56-E6719234BDCD.vcf 1729020074 c6c7ed53c63b9f19f9e055194868d080 196 0E85507C-C67C-4C12-B4C2-E5EF19CF4E37

@SebastianKrupinski
Copy link
Contributor

@patzm Thanks a million! This is great news, looks like Apple is using the proper vCard KIND property over CardDAV and our back end already supports it. Now just a matter of making a whole lot of changes to the front end.

@patzm
Copy link

patzm commented Oct 15, 2024

Well the least anyone can do that uses your great open source software ❤️.

Topic wise: don't you worry about the inconsistentcy? iOS 📱 uploaded something, macOS didn't. 😕

@SebastianKrupinski
Copy link
Contributor

Topic wise: don't you worry about the inconsistentcy? iOS 📱 uploaded something, macOS didn't. 😕

Yes, this could be an issue, but it could just be a mater of us providing a proper CalDAV capability, before iOS will do proper groups, or it could just be that iOS does not support groups, this one of many clients that need to be tested, but this is a start.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1. to develop Accepted and waiting to be taken care of compatibility Compatibility with other services V4 Support for VCard V4
Projects
Status: 📄 To do
Development

No branches or pull requests