Everything described here is valid for Delta Chat Desktop 1.56.0 but should be more or less the same for current mobile clients.
Problem:
There is no consistent way to share a DC contact. Worse than that: existing design confuses the user by suggesting that “e-mail address is a contact” (which is not true).
Details:
I have a friend Alice who is using DC
I have a friend Bob who is sometimes uses DC, but not really
I want to share Alice’s DC contact with Bob (e.g. I want Bob to use DC more frequently)
You can imagine having the same (or similar) buttons for each contact.
Hiding e-mail from the contact card seems beneficial as well, since it helps avoid creation of false stereotype “e-mail address is a DC contact”.
E-mail address information is available in detailed encryption view anyway.
To avoid spoofing contacts, a lot of techniques can be used: unique emoji-hash of the contact, other alogrithmical-visuals unique for each contact.
I think the primary way to share a contact should be a vCard file.
On Android when you go into a three dot menu displayed in the contact profile, there is a Share option, the first one. It allows you to share a vCard (.vcf file) into any chat. It looks like this when you receive a vCard on desktop:
For contacts that have a key the vCard contains the key inside, so when you start a chat by importing a vCard you can directly send encrypted messages. This works even if you are on a chatmail server and cannot send unencrypted messages.
On Desktop there is no Share option in the profile. I think it should be added for consistency. You can however share a contact by clicking on the “attach” button and selecting “contact”:
There are two other options to get a contact: invite links (represented as URLs or QR codes) and email address.
Invite links are designed to setup a contact in a secure way, not to share the contacts. You cannot obtain an invite link for some other contact except by asking the contact. Users keep sharing invite links publicly and forwarding them because being able to copy-paste the link is convenient, but the invite links are not designed to be shared publicly: Trust design: perhaps an invite link shouldn't always be trusted (maybe it's a good idea to ask the user?)
Email addresses are not working for chatmail users because they don’t contain the key or the way to obtain it, so there is no way to send a message to the email address after importing it. We are going to keep the ability to have contacts without the key and identified by the email address to avoid breaking existing users setups, but we expect that the ability to create contacts without keys and send unencrypted messages is not going to be used by the majority of users.
Thank you @link2xt for the answer and for creating proposal on GitHub!
This UI can be improved by making it more consistent across platforms and allowing to share a vCard directly outside the application in case you want to send a vCard using another messenger or a social network.
Yeah, I think this would be ideal outcome, given my current understanding of what “DC contact” really is.
There are two separate questions / topics that are related to this discussion, but I think “out of scope” of what this post is focused on:
Most of internet users understand that e-mail address (some@example.com) is a contact, which is not necessarily true in DeltaChat. We have to respect this common belief and keep it in mind.
How much should users trust (or not) contacts that they receive online? (NOT by directly scanning QR code from other physical phone at the personal meeting).
Sharing a vcard outside deltachat is a bit useless, when you want to share a contact via ex. Telegram, an invitation link would be better, I guess there could be some kind of 3rd party invitation link that similar to vcard don’t make the contact verified