Making it easier for F-Droid to package Mozilla Firefox

@nalexander about Google Play Services, what is the push stuff used for? I never understand why Firefox needed its own push services. But I do understand why push requires GCM on Android.

About reproducible builds, check out fdroid verify and our verification server:

The process is not well documented, but there are currently two ways to get APKs into f-droid.org via reproducible builds:

Happy to help you try that stuff out. Perhaps that would be better in a new thread.

1 Like

This I can answer, 'cuz I built most of this integration for Fennec :slight_smile: The Firefox product family wants push services to support the Web Push HTML5 spec. This is a big part of the Progressive Web Apps initiative that aims to make developing rich App experiences possible using the Web Platform. Firefox for Desktop runs its own custom push service called autopush that keeps long-lived Web Sockets open. As you surely know, that’s not viable on a phone – the OS is best positioned to do that work, potentially using side-channels from existing (carrier) channels. Therefore, Firefox for Android uses an autopush bridge to Google Cloud Messaging (and eventually will have to migrate to Firebase Cloud Messaging), and Firefox for iOS uses an autopush bridge to Apple Push Notification Service.

I concur, a new thread would be best for this. Let me try to get this --without-google-play-services business across the line before I get carried away and try to push on reproducible builds :slight_smile:

Many thanks for this information, @hans.

Yours,
Nick

1 Like

Hi folks,

Circling back to this: I finally landed Bug 1419581, which added a --without-google-play-services configure flag and a continuous integration job (labelled BnoGPS, like this job to prevent us regressing the build parts at least. (There’s no test that verifies that the produced artifacts don’t reference Google Play Services in some way, mostly 'cuz that’s a hard problem.)

These jobs without Google Play Services are not shipped to end users, nor are they signed for release, so they’re not directly usable by F-Droid consumers. But hopefully this will let F-Droid simplify its build script (starting with Firefox for Android 60), and help keep F-Droid’s own builds green in the future!

Yours,
Nick Alexander

6 Likes

@nalexander, thank you very much for saving Fennec’s freedom!

This is great, thanks! It would be nice to have an official Firefox in F-Droid again. Do you think that would be possible using --without-google-play-services?

1 Like

I’m confident that Mozilla Corporation doesn’t want to support an officially branded Firefox for Android that doesn’t have the full complement of Web Platform features. (In this case, GCM is required for Web Push, which is a big part of the Progressive Web Apps strategy on mobile.)

So while it’s technically possible, it’s not something that Mozilla is likely to commit resources to. I am interested in doing small things to ensure that downstream projects (including, but not limited to, F-Droid) can build a free-as-in-freedom Firefox for Android without fragile build system hacks for the foreseeable future.

That means that F-Droid will need to continue branding Firefox for Android, just like it does now.

makes sense. I’ve been lobbying Google through all the channels I have
to ask them to open source the GMS/Play Services libraries. That’s the
only thing that’s not free software for many important apps, like
Firefox. MicroG has done some work towards making free replacements,
hopefully that can also be used to pressure Google. Its not like the
business logic is in those small GMS jars.

They do seem to be moving more on open sourcing the Firebase libraries.
Is Firebase Push a possibility for Firefox?

Yes, we (Mozilla Corporation) did too. I can’t link to the ticket since it’s MoCo-confidential, but there was nothing really interesting – our council reached out and I don’t think we got anywhere.

I concur, although the division of responsibility between the client code and the privileged on-device service code is not clear to me. I think the sticking point is the Chromecast code, which – as far as I know – does the interesting bits of the protocol on the device, and potentially even in the consuming App’s process space. This is hearsay/speculation, though.

Technically, yes. If we (I!) had built our Web Push integration perhaps 12-18 months later, we would have undoubtedly used FCM instead of GCM. As it stands, I think there’s a race between Google deprecating GCM entirely and Firefox for Android modernizing its Web Push implementation. It’s probably not a lot of work but there’s nobody working on it right now (and nothing scheduled that I know of). (Tongue only somewhat in cheek: patches wanted!)

1 Like

Here’s some good news: VLC has implemented fully open source Chromecast support:

3 Likes

Fennec 60.0 is available on F-Droid now! I’d like to thank everyone who put so much efforts into this release!

6 Likes

Is it me or is version 60.0 available for certain devices? I’ve updated the repos on my F-Droid app and I couldn’t see any update for Fennec.

I’ve also tried installing it using the APK from the website: Fennec F-Droid | F-Droid - Free and Open Source Android App Repository and I received this message from adb install:

adb: failed to install org.mozilla.fennec_fdroid_600010.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

This could be two things. It’s most likely a legit ABI issue – you’re installing an APK with ARM libraries on an x86 device (or, less likely, vice versa). It could also be an issue that Firefox for Android is seeing with recent devices (particularly the Samsung Galaxy S8) – see https://bugzilla.mozilla.org/show_bug.cgi?id=1450793 and related tickets.

1 Like

So is https://bugzilla.mozilla.org/show_bug.cgi?id=1450793 the reason why F-droid shows no updates available for Fennec on my device? I have a Samsung S5 device (codenamed klte, model SM-G900F), it’s processor is based on the ARM instruction set as far as I’ve investigated so far.

No. Given that you’re using an S5 (a very common ARM device) I think the issue is probably the F-Droid APKs are giving you x86 native libraries, which isn’t what you want. This could be a version number issue – if F-Droid isn’t behaving like the Play Store and is offering the linearly highest version number, rather than the highest version number appropriate for your device, you will get this issue. But I don’t know enough about F-Droid to say what’s really happening.

No, the reason is that, while available, the “recommended version” didn’t get bumped. This should happen with the next index update. In the meantime, you can install it manually from the “versions” fold of the app info screen.

1 Like

You were right, thanks!

1 Like

I have the same device and it downloaded and installed on my device just fine.

Firefox advertises itself as Free And Open Source but yet we have forks like icecat; now fennec, why? Why do we have the need for fennec, cant the firefox team support icecat? Or at least provide a fully free software browser and not lies?

http://www.gnu.org/software/gnuzilla/

3 Likes

I heard that tmobile supports firefox from latest big release and worried to…

There are some hard technical issues behind why Firefox includes the proprietary Google libraries. There is no free software way to replace something like Google/Firebase Cloud Messaging, for example.

1 Like