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 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.
Replicant is in the list of distributions that are recommended by the FSF. As such, Replicant needs to follow strict criteria 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. 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 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 and a forum section 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). 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 to the new Replicant images. They work by preventing Replicant to load the modem OS.
We also got a report on the mailing list 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.
This release may also fix several bug(s) which made some SIM cards not recognizable by Replicant 6.0: we have now merged a fix for one of the bug (#1909) 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 (bug #1861).
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 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) 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).
More investigations are needed as well to replace WebView with a free software and up to date implementation (bug #1786).
The bug related to a bad sound quality during calls in some circumstances (bug #1773) is not fixed yet, but there is a workaround that works for some use cases.
The Let's Encrypt 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 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), 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, 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 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 have been added. The modem partition can become corrupted 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. To efficiently wipe files another application or utility would need to be integrated.
Many of the improvements and fixes were also made possible thanks to the work of new contributors.
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é, 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 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.