aboutsummaryrefslogtreecommitdiffstats
path: root/posts/2022_06_new-replicant-6-0-0004-release-and-replicant-11-status.md
blob: 5e6d1b465eab552a2f0a833d5efa6c683456236b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
date: 2022-06-03T09:56:07+00:00
title: New Replicant 6.0 0004 release and Replicant 11 status.
authors: GNUtoo
tags: Replicant news, GNUtoo
licenses: CC-BY-3.0 OR CC-BY-4.0
---
Replicant 6.0 0004 is now officially released. If you want to upgrade from
Replicant 6.0 version 0003 or earlier you need to follow the data migration
procedure that is documented in the [Release notes][1] page on the Replicant
wiki.

Even if we released the images back in January 2022, we didn't announce it
officially at the time because the data migration procedure wasn't complete
yet.

## What is new in this release

Replicant is in the [list of distributions that are recommended by the
FSF.][2] As such, Replicant needs to follow [strict criteria][3] that ensures
that the distribution does its best not to violates its users' freedom.

However fixing the issues and making new releases can sometime take a long
time. The last Replicant 6.0 release was from December 2017.

This new release fixes some very serious freedom and privacy issues:

* We found an issue within the phone application: it was leaking the phone
  numbers of both inbound and outbound calls to third parties as part of a
  feature called phone lookup providers. More details are available in the
  [bug report][4]. Even if it was not trivial to reproduce and find the bug
  it's now fixed as the feature has been completely disabled with 3 patches
  ([5], [6], [7]).

* F-Droid has been removed as many applications shipped in it are not
  compliant with the [guidelines][3] for distributions recommended by the
  FSF. It was kept so long because we expected to get it fixed upstream fast
  enough, but that didn't happen for various reasons. We have setup a [wiki
  page][8] and a [forum section][9] for more information about the issue and
  how to deal with it.

* Several binary firmwares (without source code) related to the back and
  home “touch” buttons were found and removed with 4 patches ([10],
  [11], [12],[13]). The firmwares seem to have only been
  used for factory testing, so the buttons should still work on the devices
  that have them.

* The touchscreen firmware for the Galaxy Note 8.0 was also lacking any
  corresponding source code (bug [#2194][14]). That was fixed by removing it
  ([15]).

* On all the currently supported devices with a modem, when users set the
  device in flight mode, the modem is only asked to go in low power mode.
  Because of that the modem is probably still on and its OS is probably
  still running. Because of that we fixed the wiki and added [scripts to
  disable (and enable back) the modem][16] to the new Replicant images. They
  work by preventing Replicant to load the modem OS.

* We also got [a report on the mailing list][17] that a nonfree ambient SDK
  was added in CyanogenMod and was not removed either by LineageOS 13 or
  Replicant 6. So [we removed it as well][18].

This release may also fix [several bug(s) which made some SIM cards not
recognizable by Replicant 6.0][19]: we have now merged a fix for one of the
bug ([#1909][20]) but as we don't know if all the “SIM card not recognized”
bugs are related. We would highly appreciate if those that opened the original
bug report could confirm if it also fixes their issues as well.

Several issues still need to be fixed, but we didn't want to delay even more
this release, as that would prevent users from getting the fixes mentioned
above:

* It's still not possible to build Replicant 6.0 from a [distribution that
  is recommended by the FSF][21] (bug [#1861][22]).

* While removing the firmware of the Galaxy Note 8.0 touchscreen driver,
  many more firmwares without corresponding source code were found in the
  [driver/touchscreen directory][23] in the kernel used by most of the
  devices supported by Replicant 6.0. However they weren't removed yet. Help
  is more than welcome to help with that.

* While investigating if it was possible to upgrade WebView, the Android
  builtin web browser component (bug [#1786][24]) we also discovered that,
  because Android build system doesn't use a package manager, finding the
  license of each repository wasn't trivial (bug [#1973][25]).

* More investigations are needed as well to replace WebView with a free
  software and up to date implementation (bug [#1786][24]).

* The bug related to a bad sound quality during calls in some circumstances
  (bug [#1773][26]) is not fixed yet, but there is a workaround that works
  for some use cases.

* The [Let's Encrypt][27] certificates probably stopped working in Replicant
  6.0 the first September 2021. Some browsers like IceCat should normally
  continue to work fine. See the [Standing on Our Own Two Feet][28] blog
  post by letsencrypt for more details.

As the internal WiFi doesn't work with free software, some new network related
features improving usability were merged :

* RepWiFi has been removed as it's now possible to use the stock Android
  menus to handle the WiFi. This was done by patching Android to also accept
  external dongles. It is less reliable than with RepWiFi because in some
  cases reboots are needed for the WiFi to be recognized, and enabling the
  WiFi most probably also powers on the Internal WiFi chip as well,
  increasing the power consumption. However it should reduce the probability
  of applications like F-Droid being broken in the future, as it's better
  integrated in Android. In the event that Replicant 6.0 stops being
  maintained and that Replicant 11 doesn't get support for all the Replicant
  6.0 devices, this patch should increase the lifetime of the affected
  devices.

* Ethernet support has been added but it doesn't work on all the devices.

* The USB networking scripts were also been added to the devices.

* Support for some rt2500-usb dongles that don't need the OS to load a
  firmware [has been added to the Galaxy SIII 4G (i9305)][29], which is an
  uncompleted device. It wasn't added to the other devices to make the
  release happen a bit faster.

Other improvements were also made:

* llvmpipe is now the default OpenGL renderer. On devices with an Exynos CPU
  / [System on a chip][30], this allows running many applications that
  weren't working before. Unfortunately llvmpipe significantly slows down
  some system components used in the graphical interface. This has been
  catered for by patching Android to use the old libagl renderer for those
  system components.

* [Scripts to switch between OpenGL implementations globally][31] have been
  added to the image as well. Thus, if you want to revert back to the old
  behaviour, just run “graphics.sh faster” in a root terminal. To switch
  back to the new behavior you can instead use “graphics.sh compatible”.
  Note that “graphics.sh compatible” will still keep the old OpenGL
  implementation for the system components mentioned above, so there is
  little risk in trying the scripts.

* It's now easier to build Replicant as there is a new script that wraps
  part of the building process. It's also more convenient as it stores build
  logs. The script has been used to build the release, and the build
  instructions also use it now.

* It has became easier to modify the installation instructions as they now
  apply to all devices, and were split into parts that are reusable. This
  way if the instructions needs to be modified, it requires a single
  modification instead of 10 or 30 modifications like before.

* [Instructions to backup the modem data partition][32] have been added. The
  modem partition can [become corrupted][33] in some conditions. As it can
  be very difficult or impossible to recreate that partition, and that it's
  required for the modem to work, we very strongly advise users to do a
  backup.

* A new wipe command has been added to wipe partitions, however [it is not
  very well suited for wiping files.][34] To efficiently wipe files [another
  application or utility][35] would need to be integrated.

Many of the improvements and fixes were also made possible thanks to the work
of new contributors.

## Replicant 11 status and policy changes for supported devices

Work on Replicant 9 has now shifted to Replicant 10 and then Replicant 11, and
has been ongoing in parallel. As it will use a kernel closely based on
upstream Linux, it has some implications:

* The work on Replicant 11 is made with the Galaxy SIII (i9300), so it
  should be supported.

* The Galaxy Note II (N7100) is very similar to the Galaxy SIII but requires
  a bit more work to be supported.

* The Galaxy SIII 4G (I9305) and Galaxy Note II 4G (N7105) could also be
  added if work is done to add support for their modem in Replicant.

* We don't know yet how much work is needed to add support for the other
  devices that are currently supported by Replicant 6.0, so we don't know
  yet if they will be compatible with Replicant 11 or not. We would need to
  find or get more information on the upstream status of theses devices
  before having a rough idea.

* It will be easier to add support for devices using a mainline kernel.

We also take advantage of this release to announce some policies changes:

* As Replicant 6 only supports devices with somewhat isolated modems,
  subsequent Replicant versions will also only support devices with isolated
  modems.

* As Replicant 6 only supports devices with replaceable batteries,
  subsequent Replicant versions will also only support devices with
  replaceable batteries.

The Replicant developers chose not to support these devices officially in
Replicant for good reasons.

Supporting devices with non removable batteries ourselves has a lot of
challenges:

* As Replicant 11 requires more work and working to upstream devices support
  in Linux takes more time than adding devices in Replicant 6:
  * if we start adding support for a device, we want to be able to spend the time required to do it right and to work with upstream projects like Linux to add support for it in theses projects as well. The advantage is that it makes Replicant and the device being added more sustainable. However if the device has a battery that is not replaceable by experienced users, developers, repair shops, or [repair café][36], the device would have a very short lifetime which is incompatible with making Replicant sustainable.
  * Users would need to buy the device new in order to make sure that the battery lasts enough for a daily use. Buying the device second hand would be way more complicated as users would need to make sure that the battery last enough time. Developers would still be able to work on the device for a very long time, assuming that they are not users as well that want to use the device. But their work would not be very useful without usable devices.
  * In addition, being able to remove the battery of a device increase trust: for devices with a single battery, it's easy to understand that without a battery, the device is really off. For devices with an additional backup battery, some background information on chip energy consumption is enough to understand what the device cannot do with such backup battery.

As for non isolated modems, if Replicant only support devices with isolated
modems, it's way easier for users and developers to remember that the devices
they are using have a somewhat isolated modem.

However, as Replicant 11 is using a kernel closely based on upstream Linux,
there is already some interest in adding support for devices already supported
by Linux which have a non-isolated modem and/or a non-replaceable battery, and
it would be sad to not be able to leverage all the work done in Replicant with
these devices.

So practically speaking we are willing to help people and/or projects that are
willing to support such devices. We are also accepting contributions in the
Replicant source code for such devices provided that we can maintain the code
without too much effort without having the devices.

So while anybody could test if the code still compiles fine, It will then be
up to the people that have such devices to test if the code is still working
over time. The code quality of such contributions may also have to be high as
we want to keep maintaining that code over time without having the devices.
The Linux kernel is already using a similar approach to be able to maintain
support a lot of devices (including devices that the maintainers don't have)
without removing support for older devices.

We could even provide access to the Replicant infrastructure (for instance by
creating Redmine sub-projects, opening new git repositories namespaces, and so
on) to the people wanting to support such devices, but they would at least
need to:

* Find a name that is different from Replicant for the project (to not
  confuse both projects, else it defeats the point of having some
  separation).

* Stay compatible with the [strict FSF criteria][3] as Replicant doesn't
  want to host projects that are incompatible with such criteria. Though we
  already collaborate with other projects (which we don't host) that aren't
  compatible with such criteria.

* Take care of users support (as Replicant developers will probably not have
  these devices, so they won't be able to test things to properly support
  users).

* Take care of the releases (as Replicant developers will probably not have
  these devices, they would not be able to test the releases).

As for the details on what constitute a “replaceable battery”, all the
smartphones currently supported by Replicant 6.0 have removable batteries, so
the batteries are very easy to replace. Compatible batteries can still be
found in several cities and/or countries.

And for the tablets supported by Replicant 6.0:

* They all have batteries that are not removable in the usual meaning, but
  they can still be replaced by opening the device.

* It is easy enough for experienced users, developers, repair shops, and
  repair café to open the device and remove the battery, so it is probably
  possible to replace it as well.

* It would be interesting to know more about the availability of compatible
  batteries.

* It might also be possible to use tablets with batteries that last way less
  than when the device is new, as many people have them off most of the
  time. But even in that case it still shortens a lot the lifetime of the
  device, as they probably still needs a working battery to boot.

 [1]:
<https://redmine.replicant.us/projects/replicant/wiki/ReplicantReleaseNotes>

 [2]: <https://www.gnu.org/distros/free-non-gnu-distros.html>

 [3]: <https://www.gnu.org/distros/free-system-distribution-guidelines.html>

 [4]: <https://redmine.replicant.us/issues/1827>

 [5]:
<https://git.replicant.us/replicant/vendor_cmsdk/commit/?id=de9e5b00e2a4072d2fd7e89e9abfc512a50d77e3>

 [6]:
<https://git.replicant.us/replicant/vendor_cmsdk/commit/?id=2d8ae47d9919f83cdf7244c3eeb34f919d83a33d>

 [7]:
<https://git.replicant.us/replicant/packages_apps_Dialer/commit/?id=c730399d4854875a76baa24ab653fbc049b8deef>

 [8]:
<https://redmine.replicant.us/projects/replicant/wiki/F-DroidAndApplications>

 [9]: <https://redmine.replicant.us/projects/replicant/boards/40>

 [10]:
<https://git.replicant.us/replicant/kernel_samsung_smdk4412/commit/?id=160424ba716cde87e4ff213972a03388e90bf75e>

 [11]:
<https://git.replicant.us/replicant/kernel_samsung_smdk4412/commit/?id=1fe39350b36767cc60ae58c2b2ea5fa29d484be0>

 [12]:
<https://git.replicant.us/replicant/kernel_samsung_smdk4412/commit/?id=0ee78af736ce947d286d21b5fdc2c0212b2f8d38>

 [13]:
<https://git.replicant.us/replicant/kernel_samsung_smdk4412/commit/?id=e40b2fa239e15c3ea8ea9407be704882916bcacc>

 [14]: <https://redmine.replicant.us/issues/2194>

 [15]:
<https://git.replicant.us/replicant/kernel_samsung_smdk4412/commit/?id=43720e41c7f36873718fc24746277bbf7d24e6f1>

 [16]: <https://redmine.replicant.us/projects/replicant/wiki/ModemDisable>

 [17]:
<https://lists.osuosl.org/pipermail/replicant/2020-November/003138.html>

 [18]:
<https://lists.osuosl.org/pipermail/replicant/2020-November/003178.html>

 [19]:
<https://redmine.replicant.us/projects/replicant/wiki/SIMnotRecognized>

 [20]: <https://redmine.replicant.us/issues/1909>

 [21]: <https://www.gnu.org/distros/free-distros.html>

 [22]: <https://redmine.replicant.us/issues/1861>

 [23]:
<https://git.replicant.us/replicant/kernel_samsung_smdk4412/tree/drivers/input/touchscreen?h=replicant-6.0>

 [24]: <https://redmine.replicant.us/issues/1786>

 [25]: <https://redmine.replicant.us/issues/1973>

 [26]: <https://redmine.replicant.us/issues/1773>

 [27]: <https://en.wikipedia.org/wiki/Let%27s_Encrypt>

 [28]: <https://letsencrypt.org/2020/11/06/own-two-feet.html>

 [29]:
<https://git.replicant.us/replicant/kernel_samsung_smdk4412/commit/?id=a2ad1c05d8e609e3daf820deebf477c5f93d6f3e>

 [30]: <https://en.wikipedia.org/wiki/System_on_a_chip>

 [31]: <https://git.replicant.us/replicant/vendor_replicant-scripts/tree/display/renderer/device-files>

 [32]: <https://redmine.replicant.us/projects/replicant/wiki/BackupTheEFS>

 [33]: <https://redmine.replicant.us/issues/1869>

 [34]: <https://lists.osuosl.org/pipermail/replicant/2021-March/003421.html>

 [35]: <https://lists.osuosl.org/pipermail/replicant/2021-March/003417.html>

 [36]: <https://en.wikipedia.org/wiki/Repair_caf%C3%A9>