Skip to content

Commit 1c81d2c

Browse files
committed
Add documentation on F-Droid publishing requirements and considerations
1 parent 153d52e commit 1c81d2c

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

docs/fdroid.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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

Comments
 (0)