Skip to content

F-Droid Submission Blocked: Proprietary Billing Dependencies #20

@Maxitendo1

Description

@Maxitendo1

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:

  1. Add build flavors to Goodwy-Commons
  2. Move billing dependencies to flavor-specific configurations
  3. Update all Goodwy apps to use the appropriate flavor
  4. Test FOSS builds to ensure no proprietary dependencies
  5. 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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions