Open mid-kid opened 7 years ago
Note: it still requires gms to run properly, but at least it doesn't include play services anymore.
It does not require gms, there is a reference to "com.google.android.gms", but it can as well be filled with UnifiedNlp. It's just there to detect if there is a network location provider installed, and in case there is none, it will fallback to GPS.
Ah, okay, I wasn't sure about that. Thanks for clarifying.
So is that app 100% free and the apk doesn't include any non-free lib now?
yes, at least for the latest release of LineageOS
Great. Now SetupWizard and Gello... They could also remove unrar and TimeService.
SetupWizard change that makes it free was merged as well and should be present in next nightly.
Was Gello freed?
I have a question, I updated today my LineageOS and the new setup wizard is included. Before updating I deleted freecyngn. But now setup wizard crashes and the home button doesn't work, does anybody know why or how to solve this ? If I delete the new setup wizard and it's directory everything works fine.
With the removal of external_google LineageOS/android@4ac2915366981cc1264381720a83a34d91e313ed, does that mean LineageOS is now free of all the proprietary components of Google?
Edit: Probably not completely free of analytics. Gello still has ambiantsdk. But only in android_external_gello-env
which I do not see in the project manifest. hmmmmm.
It would be usefull to have a list of non-free parts of LineageOS (if any). Can someone do this please? @mar-v-in what do you think about?
@Thrilleratplay @Luca1991 I believe Gello is the only non-free component of LineageOS right now, besides TimeService (which is part of device-specific blobs). It can be disabled by simply removing gello/Android.mk in vendor/cm. It's not in the manifest because it replaces Browser (and in fact, Browser is built instead if you remove gello's Android.mk). Besides that, there's still the built-in anonymous analytics (which aren't as hurtful since they can be disabled), and there's leftover stubbed(?) code for the analytics in Trebuchet.
There is also unrar that is non-free
@mid-kid thank you for clarifying that. So there is 0 chances for TimeService :(
So the items in the list ATM are:
Correct me if I'm wrong.
EDIT: @mimi89999 do you know if unrar is needed anyway? If not, I (or we) can ask devs to remove it or replace it with a FOSS alternative. What do you think about?
@Luca1991 That list looks accurate from what I have found. A few things to expand on.
Gello:
I have been trying to build LineageOS from source and could not figure out why Gello was still being compiled without the respective repos. I found the answer in vendor_cm where the apk will be downloaded if the source isn't available. A less obtrusive way to remove it from personal builds is to use vendor_extra like this (Correction, this isn't working Fixed)
Trebuchet ambientsdk was removed in the last commit LineageOS/android_packages_apps_Trebuchet@7b7aab45b223d0a6d551aebbe3f421c7376343b2
Unrar While the license is not copyleft, I would still consider LineageOS/android_external_unrar free free and open source. Seeing that most firmware is not open source, I think this is of little consequence.
TimeService Correct me if I am wrong here, but while LineageOS/android_vendor_qcom_opensource_time-services is open source it is dependent on Qualcomm firmware blobs which are not.
@Thrilleratplay your post is great!
As for Gello, in theory, the problem relies in ambientsdk, right? I'm not sure what there's in there... I might reverse engineer the aar to give it a look. Maybe we can strip it from Gello. We will see.
As for timeservice, I'm afraid you are correct, and that file is just the "glue" to call functions from the blob.
@Luca1991 I do not see any gerrit submissions or github fork commits to suggest that anyone has started to free Gello. I am ok with yanking it out of my build but if you want to free it for others, I would also at the Gello build script. It looks like Google Play services are a dependency.
@Thrilleratplay I'm afraid the time-services repo you linked are but a simple header to link with their blobs. The real TimeService can be found in different vendor trees: https://github.com/TheMuppets/proprietary_vendor_oneplus/tree/cm-14.1/oneplus2/proprietary/app/TimeService amongst other apps of it's kind.
@Thrilleratplay I'm pretty sure that the official repo for Gello is this: https://github.com/LineageOS/android_packages_apps_Gello But I can't find any reference to ambientsdk here.
@Luca1991 That is the source repo but LineageOS's vendor_cm will download and install the prebuilt apk by default or compile from source. The build process is handled by the Gello build script which looks like it will pull in Google Play services. There is another repo,LineageOS/android_external_gello-env which does have ambientsdk, I am not sure if this is still being used or is just legacy jetsam.
@Thrilleratplay Ah this make a lot of sense. Well I think that the best way to check this is to reverse engineer the gello.apk (the one that get downloaded from here: https://github.com/LineageOS/android_packages_apps_Gello/releases/) and check against ambientsdk. In this way we can be sure that LineageOS/android_external_gello-env is (or isn't) used. When we know that, we can then try to hack android_external_gello_build to remove unneeded stuff.
@Luca1991 How would I check whether ambientsdk is used? It's possible to extract the apk file with apktool (https://ibotpeaches.github.io/Apktool/).
@zuglufttier quick answer, search LineageOS for ambiantsdk. Thorough answer, build and grep the code.
@Thrilleratplay sorry for the late reply, I was very busy with work lately. Anyway I've reverse-engineered the gello.apk (downloaded from https://github.com/LineageOS/android_packages_apps_Gello/releases/), and I can say that:
1) if the packagename of ambientsdk is "com.cyngn.ambient", then there is no trace of it in smali-code.
2) in gello.apk the included libs starting with "com." are: "com.android", "com.google" (*), "com.qualcomm" and "com.quicinc", so no trace of com.cyngn.
3) there is no reference of "ambient" keyword in the Manifest
4) The included binary libs are: libgiga_client.so, libicui18n.cr.so, libicuuc.cr.so, libsta.so, libstlport_shared.so, libswe.so, libsweadrenoext_22_plugin.so, libsweadrenoext_23_plugin.so, libsweadrenoext_plugin.so, libswecore.so, libswenetxt_plugin.so, libsweskia.so, libswev8.so, libswewebrefiner.so.
*com.google is also used for GCM
@Luca1991 Not surprised that ambient was removed. What are the com.google
references? I was more concerned that Google play services are still being built in.
If it can be confirmed that Google play is no longer in Gello, does that mean this project is no longer needed for LineageOS after a certain version?
https://lineageos.org/Changelog-9/ Uhm, rejoice?
Only closed software left in lineageos now is the device binary drivers (which include TimeService.apk). There's still open source but non-free software left, if you're going to be pedantic about that (which imo you should, but android is, well, android), which includes unrar amongst (probably) others.
Now you can freely recommend lineageos to your friends without having to bite your tongue about the proprietary software/tracking it includes. The only "tracking" left is the anonymous statistics which can be disabled in the setup wizard IIRC.
Now, if some magic were to happen and all binary drivers were freed...
@mid-kid:
The only "tracking" left is the anonymous statistics which can be disabled in the setup wizard IIRC.
Wasn't that the case for trebuchet? I think they got rid of it here: https://github.com/LineageOS/android_packages_apps_Trebuchet/commit/7b7aab45b223d0a6d551aebbe3f421c7376343b2
@zuglufttier No, I'm talking about the anonymous statistics in CMParts (In the Settings app, accessed by Personal -> Privacy -> Anonymous Statistics). Here's it's source: https://github.com/LineageOS/android_packages_apps_CMParts/tree/cm-14.1/src/org/cyanogenmod/cmparts/cmstats It just sends data about which device you have, what ROM version, the country you live in and the carrier, just to keep track of the device usage.
https://github.com/LineageOS/android_packages_apps_LockClock/commit/b642154c0afbd5e497c254c4111fbdec6859984f Hooray!