Replicant: A free mobile phone OS is more important than ever, and needs your help
The Free Software Foundation (FSF) supports the work of several important free software projects through fiscal sponsorship in a program we call Working Together for Free Software.
Donations to any of the Working Together for Free Software projects directly benefit the work that can be done. Too often, these projects are underfunded, and developers put in a lot of personal time and effort to keep the project moving forward. With the FSF's fiscal sponsorship, they can receive donations, apply for funding, and enter into legal contracts, all enabling them to spend more time on their work.
Our annual fundraiser is happening right now. If you're able to, please consider making a donation to Replicant through their dedicated sponsorship page. Every dollar you contribute helps this inspiring project work towards a freer mobile future.
Below is an update from developer Denis "GNUtoo" Carikli, who is one of three people on the "steering committee" of Replicant: a fully free Android distribution running on several devices. It is a free software mobile operating system that puts emphasis on freedom, privacy, and security.
In 2020, mobile devices such as phones and tablets (which are full computers with powerful hardware running complete operating systems, with applications) are an increasingly important part in our computing. Hence, they are particularly subject to freedom and security concerns. So-called smartphones present a number of freedom, privacy, security, ecological, and social justice issues in a relatively small device.
Replicant works hard to address these issues by enabling people to run fully free operating systems on supported devices. You can read more about the freedom, privacy, and security issues that Replicant addresses on the Replicant Web site. The site and wiki also give further information about Replicant, the devices it supports, installation instructions, the latest info about its limitations, and more.
It is still possible right now to choose a device that runs a free mobile operating system. Newer devices made to run GNU/Linux, with free bootloaders, like the PinePhone, could enable us to get rid of some further freedom issues that come with the use of mobile phones. If our work bringing Replicant to more recent phones goes well, then that work would likely be reusable with the PinePhone with minimal effort. However, since the PinePhone modem is different, we will need to look into it to understand how much work would be required to add support for that modem. Full software freedom for phones is a long way off due to nonfree software in modems, network privacy issues, and other concerning problems, but by supporting devices like these with Replicant, we can mitigate many of the issues, and that makes a real difference.
Right now, our focus is on porting Replicant to more recent Android versions, on which a lot of work has been done this year. When done, this could be used as a base to add support for other more recent phones as well. In some parts of the world, 3G networks have been shut down as they are gradually replaced with more recent protocols like 4G or 5G. Older models of Android-compatible phones will still have very basic functionalities like calls and SMS, which are available through GSM, even when the 3G network is deprecated, but supporting newer devices would enable people living in these areas to use the newer 4G and 5G network protocols.
At the beginning of 2019, we successfully applied for funding from a program from the European Union called Next Generation Internet, through the NLnet Foundation. In that year, we also received a sizeable donation from Handshake. The funding will be used to make some significant changes this year.
The funding from NLnet and the European Union enabled us to start working on building a new version of Replicant, which is now based on Android 11, with a kernel that has the fewest modifications possible from the upstream code. While working to update Replicant, we already managed to upstream a few patches in the kernel Linux.
Previous Replicant versions used a kernel based on the original vendor's code. This had some serious sustainability concerns. Basing Replicant on the mainstream version of the kernel would enable us to more easily support devices already supported in GNU/Linux. The vendor's code was based on version 3.x of the kernel Linux, which is significantly different from the mainstream kernel, containing important changes that weren't available in more recent Linux versions. These vendor kernels limited our ability to cooperate with GNU/Linux distributions, and made it very hard for those distributions to reuse our work.
Both our collaboration with the Linux project and our ability to run Android with a kernel with very few modifications increased the interest from other distributions, like PostmarketOS. We helped people to get started in upstreaming code in Linux for other devices like the Galaxy SII (GT-I9100). We even managed to collaborate a bit with someone working on revitalizing the Galaxy SIII (GT-I9300) port of LineageOS.
Our work is now based on Android 11. We have working 3D acceleration, and very basic audio on the Galaxy SIII (GT-I9300). A lot was done to port our changes to the Android 9, 10, and 11 graphic stack. We also worked with someone on packaging part of the Android build system in Guix, since we faced some issues with the build system when porting a specific change from Android 9 to Android 10.
We have ported more recent modem kernel drivers on top of newer kernel versions, and have adapted the telephony stack to it. However, even if part of it works, it is still not finished. In order to cleanly integrate the work, the telephony stack code was cleaned up and updated for Android 11, and new abstractions are slowly being integrated to support the new Linux driver for the modem (which isn't upstream yet). Once the abstractions are finished, we will need to finish debugging the new modem driver and finish porting our changes to the new abstractions.
With the help of several new contributors, we have also been working on making a new Replicant 6 release: while the release has been delayed and is not out yet, many of the long-standing issues in Replicant 6 have been fixed. New, very serious issues were also found and fixed.
Aside from personal issues (that are now resolved), and the pandemic, our work has also been slowed down because we were working on too many things at the same time. Besides updating Replicant, and working on the next Replicant 6 release, and reviewing patches, and collaborating with other projects, we also had to do the usual work that is needed to run the project and take care of its community.
We decided we need a community manager so that the existing team can concentrate more on updating Replicant. The role of the community manager will be to fill the gap between Replicant developers and users, making sure that users’ concerns are properly addressed. The community manager should also foster collaborations between Replicant and other free software projects, and will also focus on fundraising once settled in.
When updating Replicant, we do it in such a way that it reduces the cost of maintenance when updating it again, and so we always need to fund more work to continue making Replicant sustainable. For instance, we might need to support newer phones that work with 4G and/or 5G networks.
We expect our new community manager to make a report on sustainability in the next fundraising announcement at the end of next year: this way, we can track how sustainable we are with our available funds. Once we deplete the NLnet and Handshake funds, the Replicant project will need to have a stable income through donations to keep funding recurring costs, like the community manager position.
In 2021, we will continue focusing on the work we have started, namely, making a release of Replicant 6, and making a Replicant 9 or later release. After this, the amount of funds and resources available will determine the project's next major focus areas. Our list includes:
Making a Free System Distribution Guidelines (GNU FSDG) compliant version of F-Droid;
Bridging the gap with GNU/Linux by making Replicant use more and more GNU/Linux components to support various hardware devices like modems, GPS, and so on. This could enable Replicant to run on any devices supported by GNU/Linux if they meet some minimum freedom, privacy, security, and sustainability criteria; and
Replacing Webview (the Android browser component, which is based on Chromium) with a browser based on Gecko (Firefox's browser engine). Chromium has privacy issues, but simply removing Webview would break many Android applications. We hope to collaborate with GNU/Linux distributions that removed Chromium and qt5-Webengine.
We have many more ideas, and a long way to go to get full software freedom in mobile phones, but your support makes our work possible.
Projects like Replicant rely on individual donations like yours to continue their work independent of large donations and funding. They can always use your help. If you want to support Replicant in these significant moves towards growth of the project with increased staff, a wider presence in the community, and technical advances towards higher compatibility, then please consider donating to the project. To further assist them, you can use Replicant and become part of the project's community by using its forums, contributing to its wiki, submitting bug reports, helping users, and reviewing patches to fix the outstanding issues it might have. You can also sign up for their mailing list, to receive the latest updates from the project in your email.
Image Copyright © Replicant, licensed under Creative Commons Attribution-ShareAlike 3.0 Unported license.