-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Repository structure changes #859
Comments
From my view, that are very good ideas. |
I do like the idea of separate apk modules/plugins for microG. This is especially useful for 3rd party dependencies that may be updated far more frequently than microG, that have critical security updates, or that are just large in size (e.g. see #802). This is also beneficial when there are different implementations to choose from for a single service (e.g. maps). If there are multiple services, each with their own choice of implementation, we don't want to have an apk for each possible combination (e.g. GmsCore-v0.2.8.12345-mapbox-mozillanlp-someOtherServiceImpl-....apk), but due to reasons such as the size, we also don't want to include them all in a monolith apk. It could be nice to have a centralized Activity in microG that will show a mapping from each supported Google Play Service API to a corresponding module, similar to what is currently done under It's still a bit unclear to me when something should be in its own module. Is this well defined or just when it seems intuitively appropriate enough (such as when the size becomes big)? I think having a list of all modules currently being considered (along with the reason for modularizing it) would help make sure everyone is on the same page for this plan. Some potential downsides to consider:
This sounds like a significant organizational change both for development and for end user experience, so it might be worth doing as a 0.3 release (if this is considered a major/breaking change). Also, as a side note, I think having signed nightlies would help reduce the number of duplicate bug reports. Oftentimes a release will introduce bugs/regressions that are quickly fixed but are not included in a release until months later. Users can't easily use it since self builds have a different signature. |
We can probably make use of dynamite, the dynamic module loading system Google designed for play services and which we have to implement anyway :) Some sort of activity that allows to select the desired module would still be necessary.
I guess the main reason to have modules as separate APK is when there is multiple choices or choices would make sense, like when there is different data sources.
I was considering to replace the Self-Check with warnings and a setup assistant. Setup assistant would also help with people that install microG and then see it "not working" and just uninstall again - and it would help existing users with the transition to 0.3.
I would still put the same version numbers on all modules as this makes everything easier. Also some changes might need to be reflected across multiple modules and it would just make sense if those will bump their version the same way.
Yes, totally agree that this would be the reason to bump the version
Yeah, I am trying to improve on that :) |
That sounds great! I assume you're referring to dynamic delivery and app bundles. Do these features require F-Droid to support them? I can't seem to find any info on F-Droid support for the app bundle format, so it's unclear to me if this is currently possible. |
dynamite/chimera is a Google Play Service internal system with no documentation published yet (as far as I know). It allows to dynamically load and update .dex and resources without going through the package manager. It's not related to app bundles. |
NOTE: I would like to insist on implementing the "reproducible builds", this allow to ship on the official F-Droid repository the apk files signed by you so they can be interchanged without the uninstallation.
NOTE: A split in the apk could also be a good way to reduce memory usage by loading components only when they are needed.
|
While I am all in for supporting older devices, I don't think supporting API 9 is really a good thing: Systems running API 9 usually have severe security issues, including known root exploits. While this is still fine for free software (because you can trust it for not making use of these exploits), it is not a good thing to run non-free stuff on such systems - and microG is mostly there to support non-free apps. Also, API 9 devices should probably be capped from internet and mobile network access for security reasons... Also, supporting older API versions also means additional work in many cases and it's not like this project isn't enough work already 😉 That said, I will always try to keep the minSdkVersion at the lowest possible value, so the splitting up in components would probably make it easier to create a API 9 compatible version, even if it is not maintained by me anymore. |
@mar-v-in The main use of GmsCore for old devices is using less resources and not crashing like the Google one ;) Although having a separate version is feasible, it will complicate things. |
I was considering to do a major change in the structure of the microG repositories. The main reason therefor is that I often have to touch multiple repositories. Other reason is that the submodule/symlink system is causing problems every now and then (with non-unix systems, Android Studio, Kotlin gradle plugin, ...).
So I'd propose the following changes:
play-services-core
play-services-core
into smaller modules, that can also be included in third-party apps together with correspondingplay-services
library from microg, so they can work even on systems that don't have microG installedplay-services
library (aka GmsLib) for better integration in third-party apps.Android.mk
build scripts from all repositories, as they tend to be incompatible with one or another android build version anyway.android_packages_
prefix and alike as repositories are no longer intended to be included with androidrepo
tool.I think this will eventually make contributions from outsiders easier, but I am happy to hear other opinions on that from current contributors (@ale5000-git, @Nanolx, @Vavun, @voidstarstar, @chris42, @oldosfan, etc). Most of these changes will probably not happen before September given my current schedule.
(*) It's not functional for SafetyNet right now, but I will definitely have a look at it at some point again.
The text was updated successfully, but these errors were encountered: