nvllsvm / freecyngn

A small tool to remove proprietary parts from CyanogenMod 13
Do What The F*ck You Want To Public License
126 stars 10 forks source link

LockClock just went free #40

Open mid-kid opened 7 years ago

mid-kid commented 7 years ago

https://github.com/LineageOS/android_packages_apps_LockClock/commit/b642154c0afbd5e497c254c4111fbdec6859984f Hooray!

mid-kid commented 7 years ago

Note: it still requires gms to run properly, but at least it doesn't include play services anymore.

mar-v-in commented 7 years ago

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.

mid-kid commented 7 years ago

Ah, okay, I wasn't sure about that. Thanks for clarifying.

mimi89999 commented 7 years ago

So is that app 100% free and the apk doesn't include any non-free lib now?

mar-v-in commented 7 years ago

yes, at least for the latest release of LineageOS

mimi89999 commented 7 years ago

Great. Now SetupWizard and Gello... They could also remove unrar and TimeService.

mar-v-in commented 7 years ago

SetupWizard change that makes it free was merged as well and should be present in next nightly.

mimi89999 commented 7 years ago

Was Gello freed?

DocSniper commented 7 years ago

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.

Thrilleratplay commented 7 years ago

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.

Luca1991 commented 7 years ago

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?

mid-kid commented 7 years ago

@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.

mimi89999 commented 7 years ago

There is also unrar that is non-free

Luca1991 commented 7 years ago

@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?

Thrilleratplay commented 7 years ago

@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.

Luca1991 commented 7 years ago

@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.

Thrilleratplay commented 7 years ago

@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.

mid-kid commented 7 years ago

@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.

Luca1991 commented 7 years ago

@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.

Thrilleratplay commented 7 years ago

@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.

Luca1991 commented 7 years ago

@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.

zuglufttier commented 7 years ago

@Luca1991 How would I check whether ambientsdk is used? It's possible to extract the apk file with apktool (https://ibotpeaches.github.io/Apktool/).

Thrilleratplay commented 7 years ago

@zuglufttier quick answer, search LineageOS for ambiantsdk. Thorough answer, build and grep the code.

Luca1991 commented 7 years ago

@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

Thrilleratplay commented 7 years ago

@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?

mid-kid commented 7 years ago

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...

zuglufttier commented 7 years ago

@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

mid-kid commented 7 years ago

@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.