So basically, I did it again… I’ve changed the ROM of my current smartphone.
As the achievement has been posted here, the previous “mobile stack” was :
Recovery : TWRP
ROM : Resurrection Remix v6.0 (LineageOS 15.1 ; Android 8.1)
A major issue was still present (and for once, it was not an IT one !) : The maintainer of the ROM moved onto another phone, and completely dropped support for the one that we have in common.
Almost a year after the last update (including Android monthly security patches), I decided to move away from RR, and give a change to a new one.
For some months now, I’ve heard on Mastodon about Gaël DUVAL’s hard work to build a privacy-focused Android ROM. If you already know him (from its Mandriva GNU/Linux distribution back in the past for instance), you got it : I’m going to present you the new /e/ project.
Even if it is currently (and depending on your device) based on LineageOS 14.1 (Android 7.1), I’d rather have a maintained and patched Android 7, than an old holed Android 8 (security-nerd guy talking here).
Basics and rationale
The main problem is : LineageOS, as many other Android ROMs, is based on some Google’s services / dependencies / servers. The idea for Gaël and its team was not about re-forking Linux from scratch and building yet-another-Android ROM, but rather un-Googling an already working and great AOSP project, widely supported.
Before going deeper, I wanted you to know about the hard choice of writing this article in English.
Whereas we are talking about a French ROM, I know that an English post may have a greater audience, and this is what it currently needs.
My 2 cents about built-in applications
If you install /e/, you’ll encounter the built-in Apps store
This very “application” propose both both free and non-free applications available to download and install, but the list is being populated by the /e/ team itself.
In my opinion, some of the built-in and shipped applications should not be there at all. For instance, it should be up to the end-user to install Telegram and Signal.
Those applications depend on and use third-party servers, whose source code is proprietary, and non-free. These issues have already been discussed across the Internet for a while now, so I’ll stop right here about them.
As an “alternative”, I’d rather see Conversations (
eu.siacs.conversations) free and Open-Source application, in addition to that, encouraging decentralization as we would have to choose and join an XMPP instance (hello https://404.city/ !).
The discussion about this very issue is currently going on here.
That’s not a good point but as long as on some official ROMs, or even LineageOS, some built-in applications couldn’t be disabled at all, and sadly, the shipped apps store is one of them.
One could of course install F-Droid, and enjoy the huge amount of free and Open-Source applications, directly built from sources before being signed.
Another issue is about FOSS applications (Etar for calendar, Qksms for SMS, Tasks, and MANY others) that have been forked and shipped in.
If an upstream update is drafted out, you are required to wait for the /e/ team to tweak update their fork and publish an update for it.
As for Docker images, this could be a real issue when security patches are applied elsewhere.
If you do use these applications too, I recommend to disable (or hide them), and install their original versions from F-Droid (for instance)…
Fully un-Google’d ROM did you say ?
Hmm yeah, I might have…
Some weeks ago, a very interesting write-up has been made by InfoSec Handbook, and it even got a proper response from Gaël. Most of the points noted there are being worked on, but I still strongly disagree with the fundamental choice of proposing a ROM with any Google Apps implementations.
/e/ is shipped (too) with a project called microG, that is a free and Open-Source implementation of the Google’s proprietary and obscure stack.
But here again, I think this should be up to the user to get (or not) such a stack. Or, at least, it should be possible to download and flash a basic ROM, without having to build it yourself to remove a component that has been manually added by someone else…
With my previous stack explained during the introduction, I’ve lived more than a year without any Google API, and everything (for my usage at least) went well, so I guess it is possible.
/data/ encryption ?
I don’t know whether (but I hope !) you are used to encrypt your phone data, but this is something that I strongly recommend, as our mobiles browse the world, and represent easier targets from thieves.
Actually, while the feature works well on LineageOS or even Resurrection Remix, it looks completely broken on /e/ at the time of writing.
This has been bumped for the occasion here.
And what about rooting /e/ ?
Yeah, apparently, that works well.
Just after the first flash (even before trying it out !), I’ve side-loaded Magisk and booted it up. It looks compatible, and we may enjoy the system-less aspect of system modules, even with /e/.
Full disclosure : I didn’t try out the (old) SuperSU way of rooting devices.
/e/ is currently strongly maintained, and still considered as beta.
It has been a long time since I couldn’t enjoy this liberty, but OTA updates are possible with /e/ !
This way, flashing “nightly” builds has never been so great
Wait, wait, wait. Root and OTA, are you sure about it ?
Yeah, that’s an issue.
Actually, it should not have, but /e/ OTA manager automatically reboots the device in recovery to apply the update, so Magisk is fully-bypassed…
You can try to rely on Magisk’s magic hooks without uninstalling it first, as stated in the FAQ above.
I don’t think that’s recommended, but I’ll try soon (and surely update this post according to the result).
EDIT 2019-07-04 : As promised, I’ve tried the idea above and… it does not work. So, flashing Magisk back after each OTA update is definitely required.
Wanna join ?
Here you go.
Whereas it’s far from being perfect, and even more for jack-of-all-trades users, /e/ looks promising.
LineageOS was good, so it could only become greater without any traces of Google in it.
The project will need maintainers across devices, and if you are interested, this section may help you to propose a support for yours.
Anyway, the goal of Gaël is to make this usable by anyone, and I think this might be achieved soon.
What is cool : You can (almost) freely disable and replace built-in application by your own, and the creation and linking operations to an /e/ account (for synchronization and so on) is fully-optional (Hey Google, what about doing the same to free your users ?).
PS 1 : Using custom ROM on most of the phones won’t solve the deeper problem of manufacturers’ binaries that are proprietary and non-free, as beautifully stated here one more time.
PS 2-a : Si vous êtes intéressé(e) par comment les diverses opérations de flashing pourraient être effectuées, et à quoi elles correspondent, ce lien pourrait vous intéresser.
PS 2-b : Il faudrait d’ailleurs peut-être repenser, mettre à jour et ré-écrire ce document… Toute aide sera la bienvenue !