Files
Compass/docs/fdroid.md

2.3 KiB

F-Droid publishing

Can Compass be published on F-Droid? Short version: licensing allows it, but the Google/Firebase dependencies block the official repo.

Eligibility

  • License AGPL-3.0 + MIT. Meets F-Droid's hard FOSS-license requirement.
  • Buildable from source — feasible; it's a Capacitor WebView shell over the web build.
  • Backend⚠️ the app wraps the hosted service (compassmeet.com, Supabase + Firebase). F-Droid tags this NonFreeNet ("depends on a non-free network service") regardless of the client code.

Blocking dependencies

Proprietary Google libraries F-Droid's main repo bans. From android/app/build.gradle:

  • com.google.firebase:firebase-analytics — proprietary and tracking; an outright anti-feature.
  • com.google.firebase:firebase-auth — proprietary Google auth.
  • com.google.android.gms:play-services-auth — proprietary Google Play Services.
  • com.google.android.play:app-update / app-update-ktx — proprietary in-app-update lib.
  • com.google.gms.google-services Gradle plugin + google-services.json — non-free build tooling/config.

From the web bundle (web/package.json):

  • firebase (11.1.0) — proprietary JS SDK compiled into the WebView assets.
  • @capacitor/push-notifications — wired to Firebase Cloud Messaging (FCM), which is proprietary.

Paths to ship

Official F-Droid repo — significant work:

  • Remove firebase-analytics (or swap for self-hosted Matomo/Plausible).
  • Replace Firebase Auth with a Supabase-side / FOSS auth flow.
  • Replace FCM push with UnifiedPush (the F-Droid-blessed push system) — the biggest lift.
  • Drop the in-app-update lib (F-Droid handles updates).
  • Remove google-services.json and the gms plugin.
  • Add F-Droid metadata + a reproducible build recipe. A NonFreeNet label likely remains because the backend is a hosted service.

Estimate: days-to-weeks, dominated by the auth + push replacement.

Self-hosted F-Droid repo — easy:

  • Use fdroidserver to host the existing signed APK/AAB at your own repo URL (Firebase and all). The anti-feature bans are official-repo policy, not enforced by the tooling. Users add the repo manually and get auto-updates; you skip Google's storefront. Setup is roughly an afternoon.