summaryrefslogtreecommitdiffstats
path: root/36c3/Replicant_introduction/replicant-intro.md
blob: 9f81c050a26fdf2cbf64ef609f31f61f92d6eec6 (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
# Title
Introduction to Replicant

# Subtitle
Why and how to make a fully free software Android distribution

# Summary
Replicant is a fully free Android distribution that is approved by the FSF.
This short talk will briefly explain: why Replicant came into being; the freedom,
privacy and security issues it has found in devices aimed to run Android;
and the approaches that it follows to liberate such Android devices.

# Description
Replicant is a fully free software Android distribution that puts emphasis on
freedom, privacy and security. It is based on LineageOS and replaces or avoids
every proprietary component of the system. Replicant is so far the only
distribution for smartphones that is endorsed by the Free Software Foundation as
meeting the Free System Distribution Guidelines.

Starting out as a project that aimed to make the HTC Dream smartphone
usable with only free software, it proved that running Android on these devices
was much simpler and effective than porting GNU/Linux to them.
The main reason behind that lies in the Android architecture: while in GNU/Linux
the hardware abstraction is done in the Linux kernel, in Android it is done in hardware
abstraction libraries. This enabled hardware manufacturers to break the kernel API,
making it very difficult to run GNU/Linux properly on such devices.

As the work progressed, the team took the opportunity to learn more about the
hardware architecture of the smartphones they were supporting, as it has a big
impact on freedom as well.

In most early Android Android devices, the modem was in control of everything,
with full access to RAM, sound card and GPS. Because of that, Replicant shifted
focus to devices where the modem is isolated, and started documenting hardware
freedom issues across different devices as well.

Most of the heavy work to get new devices ported to Replicant revolved around
creating free software replacements for nonfree userspace protocol
implementations, such as the Radio Interface Layer (RIL) that communicates with
the modem, or the NMEA protocol to talk with the GPS. With that work, one backdoor
was found in the proprietary Samsung RIL implementation, which allowed the
modem to read the contents of the filesystem.

Although the project had fixed some of the freedom issues affecting smartphones
and tablets, there was still one critical component missing to be able to run
fully free software on the main CPU: the bootloader. Focus was then redirected
to devices such as the GTA04 and the Optimus Black, that have an unlocked
bootloader and were made to work with u-boot. Unfortunately these devices required
a lot of work: the GTA04 had a kernel closely based on upstream Linux, but at the
time it required too much time to convert it to use the Android power management
models. For the Optimus black, the u-boot port took a huge amount of work as well,
leaving no time to finish upstreaming the Linux support.

Replicant, as well as it's upstream (LineageOS), inherit the Linux kernel that
device manufacturers release thanks to the requirements of the GPL license.
Unfortunately it is usually based on versions that are several years old and
no longer maintained, riddled with bugs and security concerns.
Also, such kernels usually come with dozens to hundreds of out-of-tree patches,
required for essential peripherals such as modem, cameras or display.
Maintaining and adapting such a kernel to new Android versions ourselves requires
too much work. Because of that, we had to drop devices for versions where LineageOS
decided to drop them.

Taking this into consideration, and having learnt the lessons on how lack of
proper kernel support can ditch a device, Replicant is now shifting focus to
prepare devices to run a mainline kernel with full support for their peripherals.
Replicant is also adopting mainline userspace such as Mesa. Furthermore it is
also looking to support community oriented devices such as the Pinephone, that
offer a better hardware platform for free software.