-
Notifications
You must be signed in to change notification settings - Fork 15
F-Droid Submission Blocked: Proprietary Billing Dependencies #20
Description
Hey @Goodwy
Could you please implement build flavors in Goodwy-Commons to separate FOSS and proprietary functionality? This would enable the entire Goodwy app ecosystem to be available on F-Droid while maintaining the current functionality for other distribution channels (like Google Play).
Here's more context:
All Goodwy apps are currently blocked from F-Droid submission due to proprietary billing dependencies in Goodwy Commons. F-Droid has strict requirments that all dependencies must be free, libre, open source software (FLOSS), but the Google Play Billing & Russian RuStore Billing are propietary which are not available in F-Droid's allowed repositories. The issue is in /commons/build.gradle.kts lines 125-126:
Error
//Goodwy
api(projects.strings)
api(libs.billing.client) // ❌ com.android.billingclient:billing:6.0.1 (Google Play - Proprietary)
api(libs.rustore.client) // ❌ ru.rustore.sdk:billingclient:6.0.0 (RuStore - Proprietary)
implementation(libs.behavio.rule)F-Droid Build Failure
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeFossReleaseNativeLibs'.
> Could not resolve all files for configuration ':app:fossReleaseRuntimeClasspath'.
> Could not find ru.rustore.sdk:billingclient:6.0.0.
Required by:
project :app > com.github.Goodwy:Goodwy-Commons:xxx > com.github.Goodwy.Goodwy-Commons:commons:xxx
Solution
Add build flavors to Goodwy-Commons to conditionally include billing dependencies:
android {
// ... existing config ...
flavorDimensions.add("variants")
productFlavors {
register("foss") {
// FOSS variant - no proprietary dependencies
}
register("proprietary") {
// Full variant with billing support
}
}
}
dependencies {
// ... existing dependencies ...
//Goodwy
api(projects.strings)
// Only include billing in proprietary builds
"proprietaryApi"(libs.billing.client)
"proprietaryApi"(libs.rustore.client)
implementation(libs.behavio.rule)
implementation(libs.rx.animation)
implementation(libs.rx.java)
}If you would add that then we can submit all apps to F-Droid with a broader user reach and a better alignment with open source principles.
Here's an easy step by step guide:
- Add build flavors to Goodwy-Commons
- Move billing dependencies to flavor-specific configurations
- Update all Goodwy apps to use the appropriate flavor
- Test FOSS builds to ensure no proprietary dependencies
- Submit to F-Droid
Last Context
I just noticed that the Goodwy Dialer was still not published to F-Droid because metadata was missing for the fdroid data repo. They could have also done it by themselves but it looks like that they would not do it, because they don't have time or something like that. So I added the metadata, which I have also updated on my local repo because there were some issues before (I will push if all Goodwy apps are 100% FLOSS and the Fdroid build succeeds locally).
F-Droid Merge Request: https://gitlab.com/fdroid/fdroiddata/-/merge_requests/25042
Thank you for considering!