|
| 1 | +# F-Droid publishing |
| 2 | + |
| 3 | +Can Compass be published on [F-Droid](https://f-droid.org/)? Short version: **licensing allows it, but the |
| 4 | +Google/Firebase dependencies block the official repo.** |
| 5 | + |
| 6 | +## Eligibility |
| 7 | + |
| 8 | +- **License** — ✅ AGPL-3.0 + MIT. Meets F-Droid's hard FOSS-license requirement. |
| 9 | +- **Buildable from source** — feasible; it's a Capacitor WebView shell over the `web` build. |
| 10 | +- **Backend** — ⚠️ the app wraps the hosted service (compassmeet.com, Supabase + Firebase). F-Droid tags |
| 11 | + this `NonFreeNet` ("depends on a non-free network service") regardless of the client code. |
| 12 | + |
| 13 | +## Blocking dependencies |
| 14 | + |
| 15 | +Proprietary Google libraries F-Droid's main repo bans. From `android/app/build.gradle`: |
| 16 | + |
| 17 | +- `com.google.firebase:firebase-analytics` — proprietary **and** tracking; an outright anti-feature. |
| 18 | +- `com.google.firebase:firebase-auth` — proprietary Google auth. |
| 19 | +- `com.google.android.gms:play-services-auth` — proprietary Google Play Services. |
| 20 | +- `com.google.android.play:app-update` / `app-update-ktx` — proprietary in-app-update lib. |
| 21 | +- `com.google.gms.google-services` Gradle plugin + `google-services.json` — non-free build tooling/config. |
| 22 | + |
| 23 | +From the web bundle (`web/package.json`): |
| 24 | + |
| 25 | +- `firebase` (11.1.0) — proprietary JS SDK compiled into the WebView assets. |
| 26 | +- `@capacitor/push-notifications` — wired to Firebase Cloud Messaging (FCM), which is proprietary. |
| 27 | + |
| 28 | +## Paths to ship |
| 29 | + |
| 30 | +**Official F-Droid repo** — significant work: |
| 31 | + |
| 32 | +- Remove `firebase-analytics` (or swap for self-hosted Matomo/Plausible). |
| 33 | +- Replace Firebase Auth with a Supabase-side / FOSS auth flow. |
| 34 | +- Replace FCM push with **UnifiedPush** (the F-Droid-blessed push system) — the biggest lift. |
| 35 | +- Drop the in-app-update lib (F-Droid handles updates). |
| 36 | +- Remove `google-services.json` and the gms plugin. |
| 37 | +- Add F-Droid metadata + a reproducible build recipe. A `NonFreeNet` label likely remains because the |
| 38 | + backend is a hosted service. |
| 39 | + |
| 40 | +Estimate: days-to-weeks, dominated by the auth + push replacement. |
| 41 | + |
| 42 | +**Self-hosted F-Droid repo** — easy: |
| 43 | + |
| 44 | +- Use `fdroidserver` to host the existing signed APK/AAB at your own repo URL (Firebase and all). The |
| 45 | + anti-feature bans are official-repo _policy_, not enforced by the tooling. Users add the repo manually |
| 46 | + and get auto-updates; you skip Google's storefront. Setup is roughly an afternoon. |
0 commit comments