Project

General

Profile

TasksToFund » History » Version 4

Denis 'GNUtoo' Carikli, 05/02/2019 03:56 PM
Remove tasks that have been accepted for funding as they are in TasksFunding

1 1 Denis 'GNUtoo' Carikli
{{>toc}}
2
3
h1. Funding
4
5
h2. Funding procedure
6
7
h3. Funding status
8
9 2 Denis 'GNUtoo' Carikli
See [[TasksFunding]] for tasks that have been accepted by funding organizations. It also contains more background on such organizations.
10 1 Denis 'GNUtoo' Carikli
11 3 Denis 'GNUtoo' Carikli
h3. Applicants criteria
12 1 Denis 'GNUtoo' Carikli
13 3 Denis 'GNUtoo' Carikli
h4. When funding tasks with Replicant's money
14
15
In order to minimize the risk:
16
17 1 Denis 'GNUtoo' Carikli
* The applicants will need to already have Patches in Replicant to apply. So if you want to apply and don't have any patches in Replicant, the easiest way is just to send some useful patches.
18
* The applicants will need to be able to demonstrate that they have the required skills by showing contributions in free and open source project in similar areas.
19
* The applicants will need to be able to do contract work
20
21 3 Denis 'GNUtoo' Carikli
Alternatively we could also handle it in a way that is similar to the NLnet foundation, where we would only pay once some useful part of the work has been done.
22 1 Denis 'GNUtoo' Carikli
23 3 Denis 'GNUtoo' Carikli
h4. When funding tasks through other organizations
24
25
See [[TasksFunding]].
26 1 Denis 'GNUtoo' Carikli
27
h2. Tasks that could be funded
28
29
h4. Add support for more recent smartphones
30
31
The most recent smartphones that Replicant support are quite old (they were made around 2013). The goal here is to add support for more recent smartphones in Replicant.
32
33
Even if we think that it's at lot more important to support devices that are better for freedom (samsung devices usually have a nonfree bootloaders), adding supporting common (Samsung) phones and tablets is relatively easy and fast to do and could be a good way to get started in contributing to Replicant. 
34
35
It's advised to pick a device that:
36
* has an isolated modem (no shared memory between the modem and the processor running Android)
37
* meets Android 9 [[HardwareRequirements]] to still be useful when Replicant will be ported to Android 9
38
* has a modem that can easily be supported by samsung-ril and libsamsung-ipc 
39
* is or will be supported by lineageOS
40
41
Make sure to evaluate the device before starting to work on it. Some devices have been evaluated in the [[TargetsEvaluation|TargetsEvaluation wiki page]]. There is also a "forum section":https://redmine.replicant.us/projects/replicant/boards/27 for devices evaluation.
42
43
*Hardware requirements*:
44
In addition to the requirements for porting Replicant to a newer Android version: 
45
* One or more smartphones that are already well supported by LineageOS or the AOSP project and that can easily be added in Replicant.
46
47
*Difficulty*: Medium
48
49
*Expected outcomes*: 
50
* Basic features working (graphics, touchscreen, buttons, audio, and telephony if there is a modem) without requiring Replicant or the user to install or ship nonfree software or firmwares.
51
52
h4. Support in-system upgrades
53
54
It would be useful for a Replicant device to be able to update itself to a new version of Replicant without requiring being connected to a PC. LineageOS already supports this; we suspect that it should be possible to adapt this LineageOS functionality to Replicant.
55
56
Whenever possible, it would be useful to complete and submit some of the code written for Replicant to LineageOS.
57
58
*Difficulty*: Medium
59
60
*Expected outcomes*: 
61
* In-system updates working without being connected to a PC
62
63
h3. Implement the missing features of Samsung-RIL
64
65
Samsung-RIL is the RIL (Radio Interface Layer) that many Replicant devices use to communicate with the modem.  It is a free, reverse-engineered replacement for the proprietary RIL that the Samsung phones ship with by default (which has been found to have backdoors).
66
67
Right now, Samsung-RIL mostly implements only the protocol features that are absolutely necessary for the phone to be operable.  As a result, many more rarely used protocol features are unimplemented, which decreases functionality compared to the proprietary RIL. You can help by implementing the missing features of Samsung-RIL.
68
69
It would also be nice to fix most the reported bugs involving samsung-ril and libsamsung-ipc that are impacting users very seriously. This includes the bugs about the SIM card not being detected, and the issue about having metallic sound quality when doing voice calls over 3G (bug #1773). It would also be nice to be able to recover from EFS (the modem filesystem) corruptions (Bug #1869).
70
71
*Hardware requirements* : A computer that is able to build Replicant. A smartphone or tablet supported by Samsung-RIL.
72
73
*Difficulty*: Medium to Hard
74
75
*Requirements/Prerequisites*: Knowledge of C.
76
77
*Expected outcomes*: Implement the missing features listed at [[Samsung-RIL]]. When all the features have been implemented, also ask usptream (LineageOS) if they want to use libsamsung-ipc and samsung-ril.
78
79
*Dependencies*: This task should be fairly independent as:
80
* [[Libsamsung-ipc]] should already be independent of the Android version (it can even run on GNU/Linux)
81
* [[Samsung-RIL]] can probably easily be adapted to newer Android version
82
83
*Funding*: We could apply to https://nlnet.nl/PET
84
85
h4. "Complete libsamsung-ipc and libsamsung-ril" nlnet Grant application
86
87
|_. Project name | Complete libsamsung-ipc and libsamsung-ril |
88
|_. Website / wiki | https://redmine.replicant.us/projects/replicant/wiki/Samsung-RIL |
89
90
Abstract: Can you explain the whole project and its expected outcome(s).in 1200 characters
91
<pre>
92
Replicant is a fully free Android distribution that is
93
approved by the FSF (http://gnu.org/distros). It supports
94
several Samsung smartphones tablets that have a modem.
95
96
The modem can be thought as a separate computer in a chip that
97
is dedicated for interfacing with the cellular network.
98
99
Many use custom protocols that are implemented by nonfree software
100
to communicate with the smartphone OS (Android). This has issues:
101
https://redmine.replicant.us/projects/replicant/wiki/SamsungGalaxyBackdoor
102
103
The Samsung IPC protocol is used by the modems of the devices
104
currently supported by Replicant, and in many other Samsung
105
smartphones and Tablets.
106
107
Replicant implemented it in:
108
- libsamsung-ipc: the low level protocol implementation
109
- libsamsung-ril: the interface between libsamsung-ipc and Android
110
111
The project consists in implementing their missing features, which
112
are known and documented in the RIL API. They are things like
113
"start a conference call".
114
115
When they are completed, we expect other Android and GNU/Linux
116
distributions to start using and contributing to these libraries.
117
118
This will also lower our maintenance burden and improve Replicant
119
usability and compatibility with networks.
120
</pre>
121
122
|_. Have you been involved with projects or organizations relevant to this project before?
123
And if so, can you tell us a bit about your contributions? | SEE TEMPLATE |
124
125
|_. Requested Amount (Between 5000 and 50000 Euros) | 50000 Euros |
126
|_. Does the project have other funding sources, both past and present? | SEE TEMPLATE |
127
128
Explain what the requested budget will be used for? 
129
<pre>
130
The budget will only be used to fund this task through contract work.
131
132
We think it will take something between 3 and 4 month of work
133
for one full time developer.
134
135
If we take the cost of a Freelance developer in the USA (75$ to 150$
136
per hour) as a basis, to enable people living in Europe and the USA
137
to apply, we can fund a developer to work on it for a period that
138
is mostly equivalent to something between 2 to 4 months full
139
time.
140
141
The Replicant project will take care of ensuring that the
142
people who will work on this task have the necessary hardware to
143
do it, for instance by shipping or reimbursing the purchase of a
144
compatible smartphone with the Replicant project money.
145
</pre>
146
147
Compare your own project with existing or historical efforts.
148
<pre>
149
Here, implementing the missing features will be done in the same
150
way than before, which is running the proprietary implementation
151
and understanding the data format of the data going from/to the modem
152
that is gathered either with strace or by patching the kernel, and
153
implementing the feature in libsamsung-ipc and libsamsung-ril.
154
</pre>
155
156
What are significant technical challenges you expect to solve during the project, if any?
157
<pre>
158
There is currently no CDMA support at all in Replicant
159
and libsamsung-ril/libsamsung-ipc.
160
A lot of areas in the world don't have any CMDA coverage,
161
so testing the implementation could be challenging as it
162
would either require the contractor to live in an area
163
with CDMA coverage, or to be able to build a cheap CDMA
164
infrastructure to be able to test the implementation.
165
166
If we don't have good enough assurances that implementing
167
CDMA is doable, that will not be attempted.
168
</pre>
169
170
|_. Describe the ecosystem of the project, and how you will engage with relevant actors and promote the outcomes? | SEE TEMPLATE |
171
|_. Attachments | SEE TEMPLATE |
172
173
h3. Implement a fully-featured QMI-RIL
174
175
The LTE variants of the Samsung Galaxy S3 and Samsung Galaxy Note 2 use a different modem from the non-LTE variants that Replicant currently supports.  You can help Replicant support those modems by implementing a QMI-RIL, which performs a similar role on the LTE variants as what Samsung-RIL performs on the currently-supported non-LTE variants.  Wolfgang has done some preliminary work on this, so you'll probably be picking up where he left off.
176
177
*Hardware requirements* : A computer that is able to build Replicant. A smartphone or tablet supported by QMI-RIL like the Galaxy SIII 4G (i9305).
178
179
*Difficulty*: Hard
180
181
*Requirements/Prerequisites*: Knowledge of C.
182
183
*Expected outcomes*: A QMI-RIL that supports voice calls, SMS, and data, with as complete a protocol implementation as possible.
184
185
*Dependencies*: This task should be fairly independent as:
186
* The lower layers should already be independent of the Android version as they are used under GNU/Linux
187
* [[QMI-RIL]] can probably easily be adapted to newer Android version
188
189
*Funding*: We could apply to https://nlnet.nl/PET
190
191
h3. Finish to port the Galaxy S III (I9300) and the Galaxy Note 2 (N7100) to Mainline Linux
192
193
The the Galaxy S 2 (I9100), Galaxy S 3 (I9300) and Galaxy Note 2 (N7100) currently use a kernel based on a vendor fork of Linux, which poses a maintainability and security issue.  Forkbomb has done some initial work on porting these devices to use mainline Linux.  You can help by continuing this work. This would also enable these devices to use generic hardware abstraction layers (HAL) when abstractions layers are ready, and to do some research on whether the "TrustZone operating system":https://blog.fossencdi.org/u-boot-galaxys3.html can be removed from such devices.
194
195
*Hardware requirements* : A computer that is able to build Replicant. A Galaxy S 2 (I9100), Galaxy S 3 (I9300) or Galaxy Note 2 (N7100), and a serial port adapter to get the kernel boot logs.
196
197
*Difficulty*: Medium
198
199
*Requirements/Prerequisites*: C programming language, driver development
200
201
*Expected outcomes*: Audio working, modem working, and Replicant or LineageOS booting with mainline Linux.
202
203
h4. "Finish to port the Galaxy S III (I9300) and the Galaxy Note 2 (N7100) to Mainline Linux" nlnet Grant application
204
205
|_. Project name | TODO |
206
|_. Website / wiki | https://redmine.replicant.us/projects/replicant/wiki/Upstream#Replicant-supported-Samsung-Exynos-devices |
207
208
Abstract: Can you explain the whole project and its expected outcome(s).in 1200 characters
209
<pre>
210
Replicant is a fully free Android distribution that is
211
approved by the FSF (http://gnu.org/distros).
212
213
TODO
214
 
215
</pre>
216
217
|_. Have you been involved with projects or organizations relevant to this project before?
218
And if so, can you tell us a bit about your contributions? | SEE TEMPLATE |
219
220
|_. Requested Amount (Between 5000 and 50000 Euros) | 50000 Euros |
221
|_. Does the project have other funding sources, both past and present? | SEE TEMPLATE |
222
223
Explain what the requested budget will be used for? 
224
<pre>
225
The budget will only be used to fund this task through contract work.
226
227
We think it will take something between 3 and 4 month of work
228
for one full time developer.
229
230
If we take the cost of a Freelance developer in the USA (75$ to 150$
231
per hour) as a basis, to enable people living in Europe and the USA
232
to apply, we can fund a developer to work on it for a period that
233
is mostly equivalent to something between 2 to 4 months full
234
time.
235
236
The Replicant project will take care of making sure that the
237
people that will work on this task have the necessary hardware to
238
do it, for instance by shipping or reimbursing the purchase of a
239
compatible smartphone with the Replicant project money.
240
</pre>
241
242
Compare your own project with existing or historical efforts.
243
<pre>
244
TODO
245
</pre>
246
247
What are significant technical challenges you expect to solve during the project, if any?
248
<pre>
249
TODO
250
</pre>
251
252
|_. Describe the ecosystem of the project, and how you will engage with relevant actors and promote the outcomes? | SEE TEMPLATE |
253
|_. Attachments | SEE TEMPLATE |
254
255
h1. Other tasks
256
257
h2. Tasks that are being defined
258
259
h3. Test infrastructure
260
261
Having an automated build and test infrastructure would be very beneficial for Replicant.
262
263
Issues:
264
* Running costs of such infrastructure have to be kept low, not to depend on continuous flow of money
265
266
h3. Documentation
267
268
A lot of time is spent on the wiki documentation, and a lot of information is redundant (for instance the installation guide)
269
270
TODO:
271
* Research documentation systems
272
* Research the technical knowledge required to use them
273
* Look into communities like RockBox on the benefit of non-wiki documentation
274
* Look if transitioning to non-wiki documentation would make the Replicant Project loose its contributors to the documentation
275
276
h2. Devices with 512M of RAM or less
277
278
We might want to consider Android 9 [[HardwareRequirements]] before working on that
279
280
h3. Advance the Optimus Black U-Boot and Linux mainline ports
281
282
The Optimus Black from LG is an interesting device from the perspective of freedom and privacy/security. It has the ability to run a free bootloader and uses an OMAP3 SoC that is well-documented and supported in upstream U-Boot (bootloader) and Linux (kernel). Its modem is well-isolated from the rest of the device, ensuring a sane base for privacy/security. Currently, the device-specific parts of the mainline U-Boot and Linux ports are still at an early stage, where they are functional with a very limited set of supported hardware.
283
284
Advancing the Optimus Black U-Boot and Linux mainline ports would allow using the device with free, up-to-date and maintainable software and would pave the way for support in GNU/Linux systems as well as Replicant. A list of priorities in hardware support will be defined, with the objective of tackling as many as possible.
285
286
*Hardware requirements* : A computer that is able to build Replicant. An Optimus Black with u-boot and modified boot pins, a serial port adapter to get the kernel boot logs.
287
288
*Difficulty*: Medium to Hard
289
290
*Requirements/Prerequisites*: C programming language, driver development
291
292
*Expected outcomes*: Improved hardware support for the Optimus Black in U-Boot and Linux
293
294
h3. Advance the Kindle Fire (first generation) U-Boot and Linux mainline ports
295
296
The Kindle Fire (first generation) from Amazon is an interesting device from the perspective of freedom and privacy/security. It has the ability to run a free bootloader and uses an OMAP4 SoC that is well-documented and supported in upstream U-Boot (bootloader) and Linux (kernel). It does not embed a modem, ensuring a sane base for privacy/security. Currently, the device-specific parts of the mainline U-Boot and Linux ports are still at an early stage, where they are functional with a very limited set of supported hardware.
297
298
Advancing the Kindle Fire (first generation) U-Boot and Linux mainline ports would allow using the device with free, up-to-date and maintainable software and would pave the way for support in GNU/Linux systems as well as Replicant. A list of priorities in hardware support will be defined, with the objective of tackling as many as possible.
299
300
*Hardware requirements* : A computer that is able to build Replicant. A Kindle Fire first generation, a serial port adapter to get the kernel boot logs.
301
302
*Difficulty*: Medium
303
304
*Requirements/Prerequisites*: C programming language, driver development
305
306
*Expected outcomes*: Improved hardware support for the Kindle Fire (first generation) in U-Boot and Linux
307
308
h3. Select and/or port a tablet with an Allwinner SOC to mainline Linux and U-boot, and Replicant
309
310
Tablets with Allwinner SOCs are an interesting targets because they do not use signed bootloaders and the SOCs and various devices using them have good Linux and u-boot mainline support. If not much work is required for that, once the code is merged, the candidate is also required to work on the generic abstraction layer project which is also documented in this page.
311
312
The chosen tablet should have:
313
* A SOC that has good mainline support, see "the Linux mainlining effort page on linux-sunxi":https://linux-sunxi.org/Linux_mainlining_effort for more details.
314
* A Free software bootloader, or the ability to easily add support for the tablet to a free software bootloader.
315
* The ability to power and use an USB WiFi card or chip that is compatible with the ath9k_htc driver.
316
317
It would be better if the chosen tablet doesn't use an AllWinner SOC with a PowerVR GPU, as MALI GPU have more probability to be usable with free software in the future.
318
319
*Hardware requirements* : A computer that is able to build Replicant. An Allwinner tablet, a serial port adapter to get the kernel boot logs.
320
321
*Difficulty*: Medium
322
323
*Requirements/Prerequisites*: C programming language, driver development
324
325
*Expected outcomes*: Replicant support for a tablet using an Allwinner SOC, with free software bootloader and mainline based Linux kernel.
326
327
h2. Tasks for Replicant 6.0
328
329
h3. Tackle security issues in Replicant 6.0
330
331
Replicant is plagued by various security issues, that are mostly due to using a downstream codebase. One of the most crucial issues is that Replicant uses an old version of the Android WebView (from circa 2015), which is also a functionality drawback.
332
An initial evaluation of the security issues in Replicant should be conducted, followed by the integration or update of the concerned components of the system.
333
334
It would also be nice to do the same for privacy issues. Since Replicant indirectly depends on the "Android Open Source Project" and directly depends on LineageOS, not all privacy issues might have been found fixed by Replicant. Once security issues have been fixed, it would be nice to try to identify as many privacy issues as possible, and in a second time to fix them.
335
336
*Hardware requirements* : A computer that is able to build Replicant. A smartphone or tablet that is supported by Replicant to be able to test the result.
337
338
*Difficulty*: Medium-Hard
339
340
*Requirements/Prerequisites*: Android build system, knowledge of system security, advanced git
341
342
*Expected outcomes*: Integration or update of components of Replicant to tackle security issues
343
344
h3. Fix the Free software distribution guidelines issues and improve the build system in Replicant 6.0
345
346
Replicant has some issues with "FSDG (Free System Distribution Guidelines)":https://www.gnu.org/distros/free-system-distribution-guidelines.html compliance: "F-droid":https://f-droid.org/ repository is not FSDG compliant anymore (Bug #1629), and Replicant can't be built from an FSDG distribution (Bug #1861). This ought to be fixed. Replicant should also be fixed to build without issue.
347
348
It would also be nice to have the build system not depend on pre-built dependencies anymore, and to document which FSDG compliant F-droid applications crash because Replicant's incomplete EGL implementation (#705) and tag such applications as incompatible (so they are greyed out) until the EGL implemetation is fixed. Ideally Replicant builds should also be made "reproducible":https://en.wikipedia.org/wiki/Deterministic_compilation if they are not already.
349
350
*Hardware requirements* : A computer that is able to build Replicant. A smartphone or tablet that is supported by Replicant to be able to test the result.
351
352
*Difficulty*: Easy
353
354
*Requirements/Prerequisites*: Knowledge of shell scripts and the ability to learn the Android build system
355
356
*Expected outcomes*: The ability to compile Replicant from "an FSDG distribution":https://www.gnu.org/distros/free-distros.html, F-droid only showing FSDG compliant software.
357
358
h2. Research
359
360
h3. Improve support for the free software compatible external WiFi adapter
361
362
All devices currently supported by Replicant have WiFi chips that requires a non-free firmware to work. So to have WiFi working with free software, users need to use external WiFi adapters. They typically use tiny ath9k_htc compatible USB WiFi adapter along with a tiny USB OTG Host adapter.
363
364
Such external USB WiFi adapters used with Replicant are originally intended for laptops, not phones. As a result, they tend to consume a lot of power. According to lsusb some ath9k_htc compatible devices can consume up to 500mA.
365
366
This poses several issues:
367
* Some smartphones and tablets might not be compatible, at the hardware level, with such big power consumption.
368
* They can adversely impact battery life
369
370
Such USB WiFi adapters can also randomly stop working completely on some devices (e.g. needing to unplug and replug the adapter periodically to keep it operational).
371
372
You will need to investigate reliability issues such as the one mentioned above and look how power consumption can be improved in the adapter firmware and/or kernel driver.
373
374
You will also need to investigate how much miliampers USB devices can use, at the hardware level, on the smartphones and tablets Replicant supports.
375
376
*Hardware requirements* : An ath9k_htc compatible WiFi card, the ability to measure the current usage, the ability to build the ath9k_htc firmware and driver.
377
378
*Difficulty*: Medium/Hard
379
380
*Requirements/Prerequisites*: Knowledge of C
381
382
*Expected outcomes*: Reliable WiFi with external WiFi adapter