The ‘Porting Replicant to Android’ project ports Replicant – a free operating system for Android smartphones and tablets – to more recent Android versions, in a way that is sustainable and reusable by other projects. Denis Carikli explains more.
What is this project about?
Replicant is a 100 percent free software distribution for Android, but it was not up to date with recent upgrades. The project is to port it to more recent Android versions, in a way that is sustainable and reusable by other projects as well.
Tell us about yourself.
I’m French and I currently live in France but I also lived in many other countries. I was interested in mobile computers for as long as I can remember. I’ve also been interested in learning how things work since my early childhood, so I probably gravitated around projects that make hardware work with free software because, in order to write drivers or other software that interact with hardware, you need to understand how things work.
I started working on free software by contributing to various GNU/Linux smartphones projects which supported the Openmoko Freerunner, a GNU/Linux smartphone released in 2008, and other smartphones. I then did most of the technical work to create Replicant. In Parallel I also did the last piece of work that was needed to get the first laptop to be certified by the Free Software Foundation. My interest in free software and most of my contributions have been driven by the ideal of users’ freedom and positive social changes.
What problem does your project solve?
As new versions of Android emerge, the Replicant software needs to be synchronised to remain compatible with new applications emerging. We had a big issue: porting Replicant to newer Android versions was very time consuming, and it relied on volunteers, who were not always available. So we were looking for funding to lower the maintenance cost (to spend less time porting to newer Android versions) and to enable us to more easily support newer devices. It emerged that applying for funding for NGI through NLnet/NGI Zero was the easiest and most efficient way that we knew of.
Could you explain in simple terms what is new and original in your project?
Our project solves several issues at the same time: not only does it port Replicant to more recent Android versions (we now switched to Android 11), but it does it in a sustainable way for both the hardware and the software: It enables Replicant to support older Samsung smartphones with a very recent software stack. That work done can be ported to newer Android distributions with one or two orders of magnitude less time (we did that already, and several times while continuing to work on it). It lays the foundation to enable us to support smartphones that have less freedom and more privacy issues. It also does part of the work that is needed to support a huge number of devices without much effort from the Replicant project in a sustainable way.
Most other projects took different approaches to the problem and don’t solve the same set of issues: Google’s Android Open Source project also tries to make Android more sustainable but it doesn’t take into account older devices and it’s also not focused on having free software drivers and hardware abstraction libraries. Fairphone, a manufacturer of sustainable Android smartphones, took a very different approach: while they try to continue supporting older devices for years, they also tend to reuse non-free drivers and hardware abstraction libraries.
Beside the freedom issues, it also required a lot of work just to be able to continue using non-free code in newer Android devices. There are also other projects on operating systems for mobile devices that focus both on being sustainable and having free software drivers and hardware abstraction libraries (like postmarketOS, PureOS, etc). They are based on GNU/Linux instead of Android.
Beside Android compatibility, the main difference between GNU/Linux and Replicant is that GNU/Linux focuses more on the longer term and they have the potential to be way better than Replicant at freedom, privacy, security and sustainability.
But with GNU/Linux, many applications are not yet adapted to small screens, and the devices that are best supported (like the Pinephone and the Librem5 smartphones) are being constantly improved by manufacturing newer versions that fix issues like battery life, build quality, etc.
Thanks to this project, in Replicant we now use more software components that work with both Android and GNU/Linux, so we can now collaborate more with mobile operating system projects based on GNU/Linux.
Since some of these projects also work in similar areas we also contacted some of them to enable them to reuse our work: we also contacted someone who was working on porting LineageOS to the same device we were working on, and we also helped two developers (from PostmarketOS) porting similar smartphones to upstream Linux.
How is the project evolving?
Work is still ongoing in this project, as we underestimated the amount of work (it was quite difficult to estimate as there was a lot of unknowns). However we did port it to more recent Android versions several times along the way (so we went from Android 9, to 10 and then 11).
At least in the USA, the 3G network is being shut down. So the next step will build upon this project to support new smartphones (like the Pinephone from Pine64 or the Librem5 from Purism) that work on 4G networks with VoLTE (Voice over LTE, a new voice call Standard).
The project is conducted in collaboration with Joonas Kylmälä (from Finland). David Ludovino and Ricardo Cabrita (from Portugal) are also being funded in the same way to work on improving the Replicant graphic stack (another NGI funded project).
Once done, we’ll probably continue work to share even more software components between GNU/Linux and Android to lower even more the maintenance cost and support newer devices.
What is unique about the NGI community?
The combination of NGI and NLnet/NGI Zero enables the free software community to efficiently fund projects. We have minimal paperwork which enables us to concentrate on the job. None of the requirements are incompatible with free software goals (freedom and privacy) or the way its various community are run.
NGI is flexible enough to accommodate innovative software development where details of the projects often have to change along the way. When combined with additional funding (like personal funds or project funds), it also enables the funding of work that is very difficult to budget because it has never been done before or because it has huge unknowns.
For more information:
On Replicant, see https://replicant.us
See also: Finish porting Replicant to a newer Android version: https://nlnet.nl/project/ReplicantUpdate/
This blog post is published under the Creative Commons BY-SA 3.0 free software license, which respects customers’ freedoms.