PortReplicantToAnewerAndroidVersionInitialApplication

NLnet foundation Grant application for "Finish porting Replicant to a newer Android version"

Contact information:

Your name Denis Carikli
Email address PrivateContact + our contact at the FSF
Phone numbers GNUtoo's phone number
Organisation Replicant and the FSF
Country France(Denis Carikli), USA (FSF)

General project information

Project name Finish porting Replicant to a newer Android version
Website / wiki https://redmine.replicant.us/projects/replicant/wiki/Porting_Replicant_to_Android_9
Abstract: Can you explain the whole project and its expected outcome(s).in 1200 characters
Replicant is a fully free software Android distribution which
is approved by the FSF (http://gnu.org/distros).

The combination of Android Open Source Project source code with
the Linux source code provided by the device vendor is not
sufficient to produce a fully free Android distribution that
works: a lot of the code that makes critical hardware components
work (the modem, graphics, audio, GPS, etc) is in userspace.
Because of that, most device manufacturers don't release them as
free software.

To make such hardware work, the Replicant project manages to
replace or avoid such nonfree software.

Replicant is currently based on LineageOS 13.0 which in turn is based
on Android 6.0.1 which are both not supported anymore. Replicant is
based on LineageOS because it supports way more smartphones and
tablets than the Android Open Source Project.

The project consists in porting Replicant changes on top of the
Android 9 release of the Android Open Source project,
and when LineageOS 16 will be ready, to backport our changes on
top of LineageOS 16.
Have you been involved with projects or organizations relevant to this project before?
And if so, can you tell us a bit about your contributions?
Yes: I've been involved in Replicant since the beginning both as a developer and for managing the project:
As a developer:
* I did most/all the initial system work and made it work for the the HTC Dream, and the Google Nexus One.
* I also worked on porting the Goldelico GTA04, Galaxy nexus, Galaxy Tab 2 7.1 along with other Replicant developers and did various bug fixes and improvements.
* I am also doing code reviews for patches.
And as for managing the project I'm involved in:
* public relations (blog posts, etc)
* fund usage decisions
* infrastructure (system administration with other developers, etc)
* documentation
* project direction and strategic decisions

Requested support

Requested Amount (Between 5000 and 50000 Euros) 50000 Euros
Does the project have other funding sources, both past and present?
The Replicant project has about 200000 dollars at disposition:
* The Replicant project has a donation page https://crm.fsf.org/civicrm/contribute/transact?reset=1&id=19. Part of the donations were used for buying devices and reimburse conference attendances. We have about 20000 dollars remaining from the donation.
* The Replicant project recently received 200000 dollars from Handshake: https://www.fsf.org/news/free-software-foundation-receives-1-million-from-handshake As the FSF takes 10% that leaves us 180000 dollars

Explain what the requested budget will be used for?

The budget will only be used to fund this task through contract work.

We think it will take something between 3 and 6 months of work
for one full time developer.

However it is always difficult to evaluate precisely the amount of time
that this kind of project would take as sometimes it can be slowed down
a lot due to bugs needing to be fixed.

For instance, when adding support for the Nexus One to Replicant,
a lot of time was spent dealing with display issues that didn't affect
the upstream projects, because they relied on the GPU which required
nonfree software to work.

If we take the cost of a Freelance developer in the USA (75$ to 150$
per hour) as a basis, to enable people living in Europe and the USA
to apply, we can fund a developer to work on it for a period that
is mostly equivalent to something between 2 to 4 months full
time.

So far we have at least one person interested in working on it
as a contractor (me), and one volunteer who wants to work on it at the
same time, but who cannot do it full time. We will make sure
that everybody has a chance to apply for doing contract work.

If the work is not done when the 50000E run out, and if we cannot
make sure that it will be completed by volunteers in a reasonable
timeframe, the Replicant project will most probably use its existing
funds to pay for contract work to make sure that this task is completed.

The Replicant project will also take care of ensuring that the
people that will work on this task have the necessary hardware to
do it, for instance by shipping or reimbursing the purchase of a
compatible smartphone with the Replicant project money.

Once we have the Samsung Galaxy SIII fully working with
Replicant 9, we will add support for most smartphones
and tablets we currently support in Replicant, and add support
for more recent smartphones (the most recent one we currently
support has been released in 2013).

We also have a very basic documentation on the Android 9 port here:
https://redmine.replicant.us/projects/replicant/wiki/Porting_Replicant_to_Android_9

Compare your own project with existing or historical efforts.

Upgrading Replicant to a new Android version usually took about 2 or 3
months of full-time equivalent work for one person.
Here, we already have a device (The Galaxy SIII 4G) booting under Android 9
master before the release, with a kernel that is closely based on upstream
Linux, but a lot still needs to be done (modem, audio, sensors, etc) and
validated. The Android architecture also changed a lot more between Android
6.0.1 and Android 9 than it did when we ported Replicant to newer Android
versions.

What are significant technical challenges you expect to solve during the project, if any?

We will also need to make sure that Replicant 9 can be built with a
GNU/Linux distribution that is approved by the FSF. This could be
challenging if they lack some of the packages required to build Android.

Describe the ecosystem of the project, and how you will engage with relevant actors and promote the outcomes?

This project will re-use code from several projects such as Android,
drm-hwcomposer, Mesa and Lima driver. Whenever possible we will foster
collaboration with these projects and submit our changes upstream.

The Replicant project contributors and the FSF will supervise
contractors to do the work.

A blog post will announce that the Replicant project
has got some funding for this specific task, and that it is
looking for a contractor to work on it. This is to make sure
that everyone has equal chances in the application process.

Then the most suited contractor will be selected. Only contractors
that already have worked on similar tasks as part of free and open
source software projects will be chosen. This way we can look at
their existing contributions and make sure that they are able to
do the task before engaging with them.

The Replicant project will also make sure that the contractor has
or gets the hardware required to work on the task, before starting
to work on it.

Attachments None

How may we handle your information

What should we do in the other case,
e.g. when your project is not immediately selected?
I allow NLnet Foundation to keep the information I submit on record, should future funding opportunities arise
Send me a copy of this application. check-box checked
PGP pubkey None (if we use Replicant contact address, we can't encrypt to it)