Skip to content
This repository has been archived by the owner on Feb 20, 2023. It is now read-only.

Support a build varient that limits or turns off tracking #12809

Closed
resynth1943 opened this issue Jul 21, 2020 · 17 comments
Closed

Support a build varient that limits or turns off tracking #12809

resynth1943 opened this issue Jul 21, 2020 · 17 comments
Labels
eng:build Build system, gradle, configuration

Comments

@resynth1943
Copy link

resynth1943 commented Jul 21, 2020

What is the user problem or growth opportunity you want to see solved?

Tracking. Why does your app bundle 4 SDKs, which are used to surreptitiously track users?

Find attached a list of these third-party SDKs, which you seem to include in your Firefox application:

  • Adjust
  • Google AdMob
  • Google Firebase Analytics
  • LeanPlum

I'm sure you're aware of the privacy issues which are present in Google's SDKs, e.g. Google Analytics. Yet these SDKs are quickly being added to the majority of your products.

Personally, I think it would be nice if we could work something out: how do you feel about removing Google Analytics from this product.

How do you know that this problem exists today? Why is this important?

As stated on Firefox's official website...

Automatic privacy is here.

Where is the privacy in allowing Google, and various other ad companies, to track everyone that uses your app?

Why do you load tracking SDKs in an application that handles sensitive user data? One of the most important aspects of security is never to trust third-party, closed-source code. Especially when it's made by an advertising company, with the only goal of destroying the 'open web' you claim to support.

Personally, I would love to see this egregious, non-auditable, dangerous tracking code removed instantaneously.

I don't think I have anything more to add. The fact that only now I find out that you've allowed these advertising agencies to track my internet browsing is very disheartening, especially when I advocate for online privacy.

Who will benefit from it?

Your target market.

Many users see Firefox as an escape from corporate tampering and misdeeds. Right now, on the mobile app which claims to protect the privacy of the user, this really isn't the case.

┆Issue is synchronized with this Jira Task

@github-actions github-actions bot added the needs:triage Issue needs triage label Jul 21, 2020
@resynth1943
Copy link
Author

resynth1943 commented Jul 21, 2020

As an addendum: Matomo, an ethical and FOSS analytics project, has an Android SDK.

Matomo is a battle-tested, stable, alternative to Google Analytics. You can see more features of it here.

@kbrosnan
Copy link
Contributor

kbrosnan commented Jul 22, 2020

The usage of these libraries are documented for users at https://support.mozilla.org/en-US/kb/send-usage-data-firefox-mobile-browsers We prefer open source sdks where available. When possible the in house Glean telemetry sdk is used. You can find a list of Glean telemetry collected at metrics.md.

Adjust is used to coordinate marketing campaigns and to evaluate the cost of running such campaigns. As Fenix is available to users in 100s of countries these marketing campaigns can be in hundreds of currencies and regions. This is a complex problem that is out of scope for Glean. When we did our evaluation of something that would meet the marketing needs Adjust was the only open sourced based product that met the requirements. You can read more about its usage at adjust.md

As far as I know Admob is not directly used by Fenix. It may be pulled in as part of the Adjust SDK where I see a mention of Admob in their source code and/or Google Firebase.

Firebase is used for Google Cloud Messaging. The only way to reliably receive push notifications on Android. The main user benefit is instant Sync for example instant send Tab to device. Without a push service the user needs to manually Sync or wait for the 3+ devices (2 devices and the Sync server) to synchronize. There is some work by F-droid to build a replacement but it is unclear how their service will be able to survive an OS that is increasingly clamping down on long running services to maintain battery life and limit user hostile behavior by apps.

Leanplum is used to show contextual recommendations while using Fenix. An example of this sort of recommendation is when first encountering a page that has elements blocked by tracking protection the tracking protection shield icon is explained to the user. You can read more about its usage at mma.md. This was removed for Firefox 90 in #19040

I dislike needing to say this. Please use the 👍 action in the top level if you are interested in this issue vs commenting. Comments that fail to add substantially new information may be hidden by default. If this is a repeated issue then other moderation options may be used.

@kbrosnan kbrosnan changed the title Tracking Support a buildconfig that limits tracking Jul 22, 2020
@kbrosnan kbrosnan changed the title Support a buildconfig that limits tracking Support a build varient that limits or turns off tracking Jul 22, 2020
@TheEvilSkeleton
Copy link

TheEvilSkeleton commented Jul 22, 2020

Firebase is used for Google Cloud Messaging. The only way to reliably receive push notifications on Android.

I would disagree with that. I have been using Element and Tutanota for a while, which both implement their own push notifications service and they both work reliably. Notifications get received in time, with sound (if enabled), with their appropriate icon, etc. There is no breakage I have ever experienced when using both applications.

Both applications are open source, so you could dig through the source code to find their push service so you can use it on your Fenix builds.

@ghost

This comment has been minimized.

@TheEvilSkeleton

This comment has been minimized.

@cadeyrn

This comment has been minimized.

@TheEvilSkeleton

This comment has been minimized.

@resynth1943

This comment has been minimized.

@kbrosnan kbrosnan added eng:build Build system, gradle, configuration and removed needs:triage Issue needs triage labels Jul 22, 2020
@resynth1943
Copy link
Author

resynth1943 commented Jul 22, 2020

Are there any objections to creating a separate build, which delivers on the promise of privacy? Of course, it would be free of third-party tracking code, which the user was not informed of in the installation flow.

I am quite a fan of Fennec F-Droid, but sadly it's just not Fenix. It's lacking in features, speed and usability. But without an alternative free of unwanted tracking, we are forced to use it.

@ghost

This comment has been minimized.

@lnicola
Copy link

lnicola commented Jul 23, 2020

As far as I know Admob is not directly used by Fenix. It may be pulled in as part of the Adjust SDK where I see a mention of Admob in their source code and/or Google Firebase.

I think it might be used to retrieve the advertising ID, which is reported in telemetry (hashed, to be fair).

@ghost

This comment has been minimized.

@opusforlife2
Copy link

In a sense, this issue is a duplicate of #162, which asks for F-Droid support. The end goal is nearly the same, which is to get a Fenix build variant that excludes all non-free code, incidentally excluding most tracking SDKs.

A year ago, @st3fan asked about build flags to exclude non free code. Since then, there has been no progress on the issue.

@kbrosnan Since you modified the title to mention "build variants" I'm addressing you directly. To my knowledge, only one Mozilla employee, st3fan, has replied on that issue, while several F-Droid developers have outlined their concerns. It would be very helpful if you or someone else would hop on over there and work with the F-Droid devs to hammer out at least a rough plan of action regarding what needs to be done for Fenix to be distributed as 100% free software.

To everyone else: if you just want to vent your feelings, please make a post on r/firefox or something. Let's keep this and #162 focused on actionable points only.

@ghost

This comment has been minimized.

@resynth1943 resynth1943 changed the title Support a build varient that limits or turns off tracking Tracking Jul 23, 2020
@resynth1943

This comment has been minimized.

@st3fan
Copy link
Contributor

st3fan commented Jul 23, 2020

I don't think this is high on our list, but if someone wants to start making contributions in this area, we would definitely support that.

What we prefer is probably build flags that allow you to enable/disable these features at compile time. For example, a build flag to disable Adjust would make sure we do not link against Adjust SDK, do not include Adjust specific code in the product.
If build flags don't cover things completely, then we can also add a run-time feature flag that makes a decision while the app is running on device.

I'm, sure we are happy to take patches. However to guarantee success, please consider these recommendations:

  • file a technical issue in GitHub with a proposal. do not write code yet.
  • flag me (st3fan) on the issue and I will find the right folks to help out
  • when we have a good proposal in the issue, open a PR with implementation
  • do not bundle all the things together. separate issues for telemetry/adjust/leanplum/sentry please
  • please keep these issues on topic

Do know that we depend on these features to make Fenix better. I doubt Mozilla would do builds with these features disabled, but I assume it opens the door to get on alternative app stores where the rules around third-party dependencies are different.

@mozilla-mobile mozilla-mobile locked as too heated and limited conversation to collaborators Jul 23, 2020
@kbrosnan kbrosnan changed the title Tracking Support a build varient that limits or turns off tracking Jul 23, 2020
@data-sync-user data-sync-user changed the title Support a build varient that limits or turns off tracking FNX3-21900 ⁃ Support a build varient that limits or turns off tracking Aug 11, 2020
@data-sync-user data-sync-user changed the title FNX3-21900 ⁃ Support a build varient that limits or turns off tracking FNX-13937 ⁃ Support a build varient that limits or turns off tracking Aug 11, 2020
@data-sync-user data-sync-user changed the title FNX-13937 ⁃ Support a build varient that limits or turns off tracking FNX2-15476 ⁃ Support a build varient that limits or turns off tracking Aug 11, 2020
@kbrosnan kbrosnan changed the title FNX2-15476 ⁃ Support a build varient that limits or turns off tracking Support a build varient that limits or turns off tracking Aug 29, 2020
@kbrosnan
Copy link
Contributor

Moved to bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1811655

Change performed by the Move to Bugzilla add-on.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
eng:build Build system, gradle, configuration
Projects
None yet
Development

No branches or pull requests

7 participants