You get a copy-paste of the same non-explanation as a non-answer, which is presumably either automated or being sent by a human with no understanding of anything, and therefore might as well be automated.
So the site only learns that the IP has someone on that domain among its contacts. They probably already know more than that, because they've seen some emails being exchanged. Not 100% tight, but definitely less problematic than using Gravatar.
The traffic can be sniffed as the certificate validation looks disabled and it falls back to HTTP. Meaning ISP can take a peek.
But it's definitely not malicious in any way.
Or suppose I'm a Russian dissident in Moscow with a list of Ukrainian-government and military contacts on my contact list. I open FairEmail and suddenly my phone does DNS lookups for a dozen sensitive Ukrainian domains. Not great.
Edge cases like this can be multiplied.
It's not malicious. But it's not great. And it seems reasonable to me for the Play Store to require a disclosure before an app does this.
So that favicon feature should be an optional feature but calling it sharing contact details is really exaggerating it.
EDIT: It is even optional, so yes really it's a non-issue.
If a user turns on a feature to request favicons for received mail, it therefore seems logical that the app has to retrieve favicons. Doing direct retrieval is likely less damaging to privacy than using a central favicon retrieval server.
Maybe caching the favicons on a server hosted by the app creator so that no matter what domain the app looks up, it looks like it's contacting FairEmail.
I'm honestly a bit annoyed that OP is the top comment on HN when it exaggerates the impact of this feature.
The problem here is the app was deceptively processing contact lists without user consent, and when asked to get user consent, the dev refused. If you're a transparency- or privacy-branded app, then you doubly need to disclose this information to the user.
Google didn't save anyone, by discouraging an exceptional developer with this kind of privacy policy https://github.com/M66B/FairEmail/blob/master/PRIVACY.md from contributing anything further on to Android app ecosystem, while keeping all the data stealing apps and ad supported apps, and Facebook SDK using apps, in play store.
Someone being in your contacts list does not mean you have ever had any contact with them.
Also, Google didn't give that as the reason for the app being classified as spyware. So it's just the OP being contrarian by taking an optional feature, claiming it shares contact details when it in fact doesn't and everyone voting it up because it sounds reasonable.
Of course, if I were the dev, I'd eventually try and go through anything that touches contact and disables that to try and see if that solves the problem, but again that shows that Google doesn't communicate at all.
It seems that there is firstly no reason or clarification given. Then, it seems the process of reviewing an update can happen out of phase or sync.
That means there's a very weak "compliance oracle" to see if you've correctly identified the right issue or not. And with high latency, likely it will be difficult to find the right issue quickly.
Disabling everything isn't really a good solution in the longer term as a developer - Google needs to learn to communicate with developers via intelligent humans that actually understand what they're doing, and can have a discussion and help get the issue addressed.
Google just has a demented communication policy.
I think almost everyone would be agreement that Google can communicate better.
For example for "And Play agreed to allow the app back into the store. [4]" The linked comment doesn't state this.
You are part of the problem by immediately accepting that post as fact!
Maybe it's just me, but the developer at least appears a bit too emotional and impulsive. I'm not clear why this warrants shutting down, but it's not like there is an objective standard on such a decision.
https://forum.xda-developers.com/t/app-5-0-fairemail-fully-f...
When they simply copy-paste the same message (with no further clarification or content), it's a perfect example of a chronically broken system.
Google operates at a scale where they are unlikely to face any incentive or enforcement that requires them to follow the laws around this in Europe, which require meaningful individual interaction from marketplace operators. That they can ignore these laws with impunity effectively shows that (in this context) the rule of law is dead.
In my view, it is very hard to blame the developer - they appear to have been trying to understand the issue in good faith, and receiving absolutely nothing of any sense from Google. And their lack of any kind of meaningful human support is hopefully a "canary in the coalmine" for what will happen in future if we don't get a handle on automation of processes and the harm this can cause to real people and businesses.
That's really interesting.. Honestly, I wouldn't have even picked up on that reading the code, as it's only the domain of the email itself. Not any identifiable information.
Feels a little but harsh but fair enough.
I wonder is there an identifiable marker which could say `"User X has a contact list containing gmail, yahoo and protonmail accounts."`
You don't know who the user is at all but you know "A" user has that contact list.
Very harsh.
So, reading the code, say you have in your contact list:
[email protected] [email protected] [email protected]
The code makes a single request to acme.com (to get the favicon) and one to support.google.com to get that favicon (there's a special case for google to avoid getting the new doodle of the day). That's it.
No one gets the contact list, the most anyone gets is that your ip requested a favicon.
Saying that this is sharing the contact list is akin to saying that a browser sends your ip to websites you visit.
The HTTP request for favicon of each email’s domain, which you hypothesized, might be the issue that Google was thinking of. However, your hypothesis has never been clearly stated during rounds of emails between the developer and Google.
Wouldn’t it be helpful to clarify an issue in reply to the developer, rather than having someone post “a contrarian view” afterwards?
I would expect the app to ask for permissions when first started and that if access to contacts is one of those permissions that I can disable that. Its for the app to work around not having this permission and if part of the app is not working due to not have the permission, so be it.
Preference that defaults to false: https://github.com/M66B/FairEmail/blob/master/app/src/main/j...
As to it being contact info, the file is literally called ContactInfo.java.
If you read the details of the Play Store complaint, you will see that they say the app was uploading information from the user's contact list without properly disclosing to the user that this was happening [1]. This is a violation of Play Store policy (a disclosure is required). It's not an unreasonable policy.
You can see in the app's source code where some of this happens [2]. In short, the contact list is read off the device, email addresses associated with each contact are parsed out, and the app does HTTP requests to remote servers to get the favicon associated with each email contact domain. Note that this is the sending of information off each user's contact list (the email address domains) to those remote servers. As such, it requires a disclosure to the user.
The developer's response is that he refuses to add a disclosure to the app because he is not uploading "contact info". [3]. Ok... not a great response. Certainly I would expect apps to disclose whether or not they are using any information on my contact list to reach out to third-party servers, even if only domain names. In any case, it's Play Store policy.
In the end, he finally removed the favicon feature. And Play agreed to allow the app back into the store. [4] But he has not yet backed down on shutting down the whole project because he's still upset.
Sources
[1] https://forum.xda-developers.com/t/app-5-0-fairemail-fully-f...
[2] https://github.com/M66B/FairEmail/blob/master/app/src/main/j...
[3] https://forum.xda-developers.com/t/app-5-0-fairemail-fully-f...
[4] https://forum.xda-developers.com/t/app-5-0-fairemail-fully-f...