Hi @Manizuca! Thanks for doing the hard work to get Firefox for Android into the F-Droid market. The localization bits can be… crufty
Can you explain what this means? Do binaries mean things like proprietary codec blobs? I didn’t see anything like this when I looked in the F-Droid build scripts at https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/org.mozilla.fennec_fdroid.txt#L3959-3989.
These should all be supported as mozconfig
options. If they’re not doing the right things for you, I consider that a bug, and would appreciate being CCed on a ticket in the Core :: Build Config
component at https://bugzilla.mozilla.org. In particular, Telemetry is growing in scope and intrusiveness, so I wouldn’t be surprised if we need a little focused attention to ensure we’re not accidentally pushing bits to Mozilla that F-Droid users don’t want exposed.
More details would be helpful here. I would expect that --disable-tests
in your mozconfig
wouldn’t fail the builds, but I don’t know what’s at play.
Firefox for Android has been pretty focused on using newer technologies to A/B test and really understand our user base, so we’ve used Adjust (a German tracker with a good privacy policy), Switchboard (an A/B module that we run an in-house backend for), and Leanplum (a marketing application about which I know little). It’s my belief that we’ll be able to make building with Google Play Services imply no Adjust and Leanplum. I don’t know what the right outcome for Switchboard is for F-Droid – you don’t want Mozilla’s instance, but you probably don’t want to run your own (which has a non-trivial cost). I’m pretty sure that everything will work if you “opt out” of Switchboard, but I don’t know if that’s easy to arrange at build-time. We can try to make it so.
Surely the majority of F-Droid’s packages are built with Gradle, so this problem must be addressed in some way. Firefox for Android’s Gradle configuration is pretty complex, but it should “just work” to run mach build
after the dependencies are in place. I expect that F-Droid could work through these dependency issues fairly easily. I can provide links to what Firefox for Android does: the tl;dr is that we collect Gradle dependencies using a proxy Maven repository running Nexus Sonatype. It’s not that complicated; start reading at https://searchfox.org/mozilla-central/source/taskcluster/scripts/misc/android-gradle-dependencies.sh and the linked scripts.
Thanks for your feedback!
Nick