Project

General

Profile

F-DroidAndApplications » History » Version 34

Denis 'GNUtoo' Carikli, 12/28/2023 05:22 PM
Move builds tests before as some of the apps are ok

1 1 Denis 'GNUtoo' Carikli
h1. F-DroidAndApplications
2
3 20 Denis 'GNUtoo' Carikli
{{toc}}
4
5 1 Denis 'GNUtoo' Carikli
h2. Background
6
7 33 Denis 'GNUtoo' Carikli
F-Droid has been removed in Replicant 4.0 0004 because it contains many applications that are not FSDG compliant.
8 1 Denis 'GNUtoo' Carikli
9
h2. Fixing F-droid
10
11
As Replicant cannot guarantee to have enough time to dedicate to create an alternate repository, it was decided to do the following.
12
* Someone will need to add some the ability to filter out packages at compile time. This can be done by adding support with a whitelist and a blacklist, for both anti-features and specific applications. That will need to be upstreamed in f-droid.
13
* If needed an fsdg-compliant and not-fsdg compliant flags feature/anti-feature will neeed to be added. 
14
* Once this is done we can add a new package definition for an FSDG compliant F-droid in f-droid data, so it would be built and maintained automatically.
15
* Replicant would then include that FSDG compliant f-droid.
16
17
The only maintenance burden here would be to work with upstream to make sure that the packages are tagged correctly in f-droid data.
18
19
h2. In the meantime...
20
21
Without an upstream project, each Replicant user would need do the work of reviewing each application she want to use.
22
23
As this is very time consuming and would lead to a lot of work duplication, it's best for Replicant to provide some space to share the result of the reviews.
24
25
At the same time the reviews would also be tremendously useful to help fixing f-droid data.
26
27 14 Denis 'GNUtoo' Carikli
h2. Criteria
28
29
Since there are free versions of the Android SDK (see the [[SDK]] wiki page for more details), we can assume that all the applications that don't require microG to run build fine under at least one of the FSDG compliant GNU/Linux distributions with one of the SDK mentioned in the [[SDK]] wiki page.
30
31
It might still be useful to mention if we managed to rebuild them with an FSDG distribution and what we used to do that.
32
33
We can then review applications in a similar way than how we review packages for FSDG compliant GNU/Linux distributions.
34
35 24 Denis 'GNUtoo' Carikli
There is also the "Criteria for Android applications":https://lists.osuosl.org/pipermail/replicant/2021-August/003538.html that was started to clarify the FSDG requirements for Android applications in general but that also applies to third party repositories in existing FSDG GNU/Linux distributions.
36
37 13 Denis 'GNUtoo' Carikli
38 26 Denis 'GNUtoo' Carikli
h3. Build tests
39
40 32 Denis 'GNUtoo' Carikli
|_. Application                                                                               |_. Distribution        |_. status                                                       |
41
| "silence":https://f-droid.org/en/packages/org.smssecure.smssecure                           | Trisquel 10 (nabia)   | Failed: Requires gradle version is 4.10.1 instead of 4.4.1[1]. |
42 1 Denis 'GNUtoo' Carikli
| "termux":https://f-droid.org/en/packages/com.termux                                         | Trisquel 10 (nabia)   | Failed: Requires gradle version is 6.7.1 instead of 4.4.1[1].  |
43
| "hello-world-debian-android":https://gitlab.com/Matrixcoffee/hello-world-debian-android.git | Trisquel 9 (etiona)   | Builds and runs fine (GT-I9300, Replicant 6.0 0004).           |
44
| "hello-world-debian-android":https://gitlab.com/Matrixcoffee/hello-world-debian-android.git | Trisquel 10 (nabia)   | Builds fails[2]                                                |
45
| "hello-world-debian-android":https://gitlab.com/Matrixcoffee/hello-world-debian-android.git | PureOS 10 (byzantium) | Builds and runs fine (GT-I9300, Replicant 6.0 0004).           |
46
47
fn1. The test being done on Trisquel 10 (nabia) were made by following more or less the "Building apps with these packages" instructions in https://bits.debian.org/2017/03/build-android-apps-with-debian.html
48
49
fn2. The build fails due to some Trisquel packaging issues or Java versions:
50
<pre>/usr/lib/android-sdk/build-tools/debian/dx --dex --verbose --min-sdk-version=19 --output=dex/classes.dex src
51
Error: A JNI error has occurred, please check your installation and try again
52
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/dx/command/Main has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
53
	at java.lang.ClassLoader.defineClass1(Native Method)
54
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
55
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
56
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
57
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
58
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
59
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
60
	at java.security.AccessController.doPrivileged(Native Method)
61
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
62
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
63
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
64
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
65
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)
66
make: *** [Makefile:25: dex/classes.dex] Error 1</pre>
67 34 Denis 'GNUtoo' Carikli
68
h3. Being reviewed 
69
70
|_. Application and version |_. Download link |_. Review comments |
71
| "GNU Emacs":https://f-droid.org/packages/org.gnu.emacs/ | "Version 30.0.50 (300050013)":https://f-droid.org/repo/org.gnu.emacs_300050013_src.tar.gz | Being reviewed, but should be OK:
72
The INSTALL.Android file states that:
73
* "Emacs is known to run on Android 2.2 (API version 8) or later, with the NDK r10b or later."
74
* "Building Emacs with an old version of the Android NDK requires special setup.  This is because there is no separate C compiler binary for each version of Android in those versions of the NDK. [instructions for doing that]". However nobody tried to built it with the Replicant 4.2 SDK yet. 
75
PureOS and Trisquel also have an SDK but lack an NDK. So someone needs to try to build emacs and it'd be OK. |
76
| "RepWiFi":https://f-droid.org/en/packages/fil.libre.repwifiapp/ | "Version 0.6.2":https://f-droid.org/repo/fil.libre.repwifiapp_5.apk | Being reviewed:
77
* "GPLv3":https://git.replicant.us/contrib/Fil/RepWifiApp/tree/LICENSE
78
* Doesn't seem to have any (nonfree) dependency
79
* Doesn't seem to promote nonfree software or actively push users toward the installation of nonfree software
80
* TODO: Try to build, though it was probably built as part of Replicant long time ago |
81
| "Silence":https://f-droid.org/en/packages/org.smssecure.smssecure/ | "Version 0.15.16 (145)":https://f-droid.org/repo/org.smssecure.smssecure_145.apk |  Being reviewed:
82
* "GPLv3":https://git.silence.dev/Silence/Silence-Android/raw/master/LICENSE (probably GPLv3-only)
83
* Build systems: "Android.mk":https://git.silence.dev/Silence/Silence-Android/raw/master/Android.mk (has instructions on how to produce a standalone APK), gradle
84
* Has some dependencies (git submodule):
85
 - libs/com.amulyakhare.textdrawable: MIT
86
 - libs/gradle-witness: MIT
87
 - libs/org.greenrobot.eventbus: Apache 2.0
88
 - libs/org.whispersystems.jobmanager: GPLv3 (build.gradle has "name 'GPLv3'", no mention of GPLv3+ or GPLv3-only)
89
 - libs/org.whispersystems.libpastelog: GPLv3 (build.gradle has "name 'GPLv3'", no mention of GPLv3+ or GPLv3-only)
90
 - libs/org.whispersystems.libsignal: GPLv3 (build.gradle has "name 'GPLv3'", no mention of GPLv3+ or GPLv3-only)
91
* Doesn't seem to promote nonfree software or actively push users toward the installation of nonfree software 
92
* TODO: Try to build and see if it downloads all the dependencies source code and their dependencies dependencies source code if any |
93 26 Denis 'GNUtoo' Carikli
94 1 Denis 'GNUtoo' Carikli
h3. Not compliant
95
96
| Application | upstream anti-features | Issues | Upstream status |
97 6 Denis 'GNUtoo' Carikli
| "F-Droid":https://f-droid.org/en/packages/org.fdroid.fdroid/ | None | * Its repositories that are configured in by default (and enabled by default as well) have non compliant packages like Yalp, making F-Droid itself non compliant. | * There is no automatic way to deduce that it's not FSDG compliant
98 4 Denis 'GNUtoo' Carikli
* Upstream probably would not like having F-droid tagged with anti-features
99
* No current F-droid anti-features apply to that case |
100 1 Denis 'GNUtoo' Carikli
| "Yalp":https://f-droid.org/en/packages/com.github.yeriomin.yalpstore/ | * "NonFreeNet":https://f-droid.org/wiki/page/Antifeature:NonFreeNet | Yalp is a package manager that is setup to download applications from a repository that is not FSDG compliant | * There is no automatic way to deduce that it's not FSDG compliant
101 5 Denis 'GNUtoo' Carikli
* NonFreeNet is only about non-Free network service and not the license of the packages in the repository 
102
* No current F-droid anti-features apply to that case |
103 1 Denis 'GNUtoo' Carikli
104
TODO:
105 2 Denis 'GNUtoo' Carikli
* Look at the emulators
106
* Look at the browsers
107
* Try to automatically find non compliant applications with a script and upstream the script in Replicant scripts repository or in the f-droid project
108 1 Denis 'GNUtoo' Carikli
109 21 Denis 'GNUtoo' Carikli
h3. TODO
110 1 Denis 'GNUtoo' Carikli
111
* Evaluate if we should collaborate or not with the Libreplanet wiki on the "List of software that does not respect the Free System Distribution Guidelines page":https://libreplanet.org/wiki/List_of_software_that_does_not_respect_the_Free_System_Distribution_Guidelines for the list of applications to get rid of. Note that they target mainly GNU/Linux so it might not make sense to collaborate with them as most of the applications are very different.
112
* Evalutate if we should collaborate with the Parabola wiki on the "Emulator licensing issues page":https://wiki.parabola.nu/Emulator_licensing_issues as there are also emulators in F-droid, some of which might be port from software that is also typically packaged in many GNU/Linux distributions.
113
* Find time to discuss with F-droid to see if they can fix the issue. Otherwise find time to work on it.
114 22 Denis 'GNUtoo' Carikli
115
h2. Collaboration with the Free Software Directory (FSD)
116
117
The Free software Directory has "a list of applications that run on Replicant":https://directory.fsf.org/wiki/Collection:Replicant.
118
119 23 Denis 'GNUtoo' Carikli
We need to see with them how to handle the collaboration between both projects in the long run:
120 22 Denis 'GNUtoo' Carikli
* The Free software Directory has a database like structure that works better for categorizing applications than Replicant wiki and it already has applications for GNU/Linux so it makes more sense to add applications there instead of the Replicant wiki.
121
* We need to see what criteria the Free software Directory will choose for reviewing the applications. If they are the same than again it would make more sense to add the information in the Free Software Directory because they are more generic (we can also find GNU/Linux applications there).
122
* We need to see where to put the technical information on applications reviews. For instance we add tutorials on how to build specific Android applications and details on the exact license of the dependencies and so on in the Replicant wiki for now until we figure if these are details relevant for the Free Software Directory or not. For instance Wikidata (which is another huge database) has statements and can have references, but it cannot hold a howto. So if that information was to be added on Wikidata for instance, they would still need a place to add the howto.
123 25 Denis 'GNUtoo' Carikli
124
h2. Wikidata
125
126
The Free Software Directory (FSD) seems to have way more fields seems to be able to store explanations along with the information. For instance there is a "License note" text form that could have detailed information about the license. It could probably tell which files or which parts are under which license for instance. Wikidata can't do that (it's not meant for text explanations). The Free Software Directory (FSD) also has fields and checkboxes for a lot of information, so Wikidata is probably currently lacking ways to store all that information.
127
128
Here's "an example for Guix":https://directory.fsf.org/wiki?title=Guix&action=formedit
129
130
So it might make more sense to contribute directly to the Free Software Directory (FSD) instead of Wikidata. If you still want to use Wikidata to do query on software, you could for instance:
131
* Add an identifier for the Free software directory in Wikidata if that's not already there. This way software in Wikidata will be able to link to their entry in the Free Software directory. This should be relatively easy. You could then probably do queries on the Free Software Directory data somehow if needed.
132
* Write an importer to import (some of the) Free Software Directory data in Wikidata. That importer could be improved over time as new properties are added to Wikidata and link to the Free Software Directory as reference as Wikidata needs references anyway. This probably takes some time.