[Design] Study in sharing DC contacts

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)

  • I open Alice’s DC e-mail contact:

  • no direct way to share it, but I kind of can share it by copy-pasting e-mail

  • OK, I’ve just learned, that DC contact is e-mail address and sharing it works

  • I open Alice’s DC chatmail contact:

  • no direct way to share it, but I kind of can share it by copy-pasting e-mail… right?

  • WRONG! There is simply no way to do that currenly, because chatmail contacts are not e-mail addresses!

This is very bad design that leads to confusion, and lose of trust from the user.

Possible solutions:
One possible design solution can already be observed in Groups:


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 regard DC as a good example of UX design overall.
And want to improve it :pray:

1 Like

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:


Clicking on a vCard results in a dialog proposing to start a 1:1 chat:

Normally contact has a display name, so email address is not shown:

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”:

The result is that message draft gets the contact attached:

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. I opened Make it possible to Share a contact from the contact profile · Issue #4833 · deltachat/deltachat-desktop · GitHub in desktop issue tracker.

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.

2 Likes

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:

  1. 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.
  2. 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

1 Like