citra-android
citra-android copied to clipboard
Android Billing library and the GPL?
Hi, I'm curious how you guys reconcile using the Android Billing library (which is closed source, and gets included in the APK) with the GPL.
This part of the FAQ seems to preclude using it: http://www.gnu.org/licenses/gpl-faq.html#WindowsRuntimeAndGPL - "You may not distribute these libraries in compiled DLL form with the program".
But if that does not apply somehow, which I assume since you are indeed using it, I'd be curious to know the reasoning - always good to understand the GPL better.
Hi hrydgard,
Thank you for bringing this to our attention. We were not aware that this may be an issue. Just wanted to quickly followup that I'm looking into it a bit more (to understand if it indeed is an issue with GPL), and what our other options might be (e.g. replacing with an open source equivalent).
Did you ever find a resolution for this? It would be quite convenient to be able to use in-app purchase in GPL apps, instead of splitting off a separate paid version which is the only compliant solution I know of.
@bunnei Still wondering if you found a resolution or just decided to ignore it. It's an interesting question with implications for other projects.
@hrydgard sadly no, I have not found a good solution for this. There are some alternative billing implementations that I looked into (example: https://github.com/anjlab/android-inapp-billing-v3), but I have not found one that is not basically just a wrapper around Google's, or has similar license incompatibilities. Perhaps we should write our own? :)
Anyways, I was hoping to find some way around this, as having two apps seems like a pain (and how to handle migrations of existing paid users), but it seems likely we'll be switching to this model. Please also let me know if you find any way around this.
I've moved our billing library version to 2.0.3 (https://github.com/citra-emu/citra-android/commit/a6860a9653d42cedd8fc11fda1a1d81438713b3e), which was the last open-source version (https://dl.bintray.com/google/play-billing/com/android/billingclient/billing/2.0.3/). Obviously, this is just a band-aid, as we will not be able to continue using this version after November 2021.
By then, hopefully we'll have a plan to migrate to two versions of the app (or, perhaps some other option will spring up).
Yeah I don't have any real solutions here either. It's really unfortunate that the official library is closed source. In reality it probably mostly consists of a bridge, doing IPC calls into the updatable Google Play Services library? So reimplementing the critical pieces may be possible, although then you get into semantics with linking, IPC and the GPL... Although this is just conjecture, haven't really looked into it.
Using the old one is an interesting, if temporary, workaround. Obviously I'm not gonna move to that though :)
@hrydgard one solution we are considering (which may be an option for you) is having a single main app, and making our "premium" upgrade a plugin. That is, our in-app experience would pivot you to purchase the plugin through the store, which would then install an empty app with no icon. It seems like this should allow a similar experience to what we have now.
That would be really good because I would like to buy premium to support a very useful tool for me but I don't want to use Play Store for obvious reasons.
An additional app with a paypal payment could easily solve this.
Did you ever ask Google to open source of their current implementation under the GPL-compatible terms?
Some people did -- https://issuetracker.google.com/issues/159151141