If you think you can cope with the requirements, then developing on Replicant should cause you no particular issue.
Writing free software replacements for non-free components may require more skills depending on what you're trying to achieve, though there may be people with the adequate knowledge to help you and from whom you will likely learn a lot.
The porting guides provide instructions for porting a new device to Replicant.
Have a look at the Tasks page and feel free to ask around for help to get started.
Replicant's source code is hosted at git.replicant.us. If you plan to regularly contribute to Replicant and if you don't yet have a code hosting provider that satisfies your needs, you are welcome to host your Replicant-related projects there under your own username, You only need to contact one of Replicant's developers and ask for an account. Please include in your request the name, username and Email address that should be used for creating your account.
Replicant currently doesn't accept merge requests. There are two ways to get your patches included: You can either send them to the mailing list or open an issue on the issue tracker and attach the patches to the issue. Replicant developers will then review your changes.
See the Git documentation for creating a patch. Patches can be send with git send-email
. If it's too much hassle for you to set up git send-email
, sending the patches with your favorite mail client should be fine, too.
When working with Replicant repos, make sure to avoid breaking things. For instance, if you push a commit introducing a compilation error, it will break the whole build process.
It is better to create separate branches (that are not used by the official manifest branches) when your work is still in progress.
Creating branches that add debug infos on a particular topic is usually a good idea since it will save you time next time you want to debug the same component.
LineageMirror details the setup of the LineageOS mirror. Below are the instructions for repos in the Replicant group.
In order to keep repo naming consistent, please name repositories by their name on the tree, replacing the /
by _
.
For instance, when forking the LineageOS repo: android_device_samsung_crespo
, rename it to device_samsung_crespo
on the Replicant repos.
This creates a more consistent way of naming repositories and makes it easier when pushing: just look at the location in the source tree and replace /
by _
.
replicant-
prefixSuch as: replicant-2.3
This should be used on the projects repositories as well as the manifest repository.
Any other branch should be considered as Work In Progress (WIP) and thus not be part of any official branch of the manifest.
There is although one exception, with the master
branch, that can be used by any project and be in any manifest given that the code held in the master
branch will work on any Replicant version.
It is generally a good idea to send some changes back to upstream, assuming that they will benefit from it as well.
When it is about the replacement of a non-free component present in the upstream systems, make sure that your replacement is reliable and complete.
Contact the interested developers on the upstream projects before attempting to send your replacement.
The LineageOS team uses Gerrit to manage patch submissions. The process to get your patch included in LineageOS repos is explained on their wiki: Gerrit
You can also push directly using git using the following scheme (untested):
git push ssh://<sshusername>@review.lineageos.org:29418/LineageOS/<projectname> HEAD:refs/for/<branchname>
The Android Open Source Project uses Gerrit to manage patch submissions. Some information about submitting patches to AOSP is available: https://source.android.com/source/submit-patches.html
You can push to AOSP's review using:
git push https://android-review.googlesource.com/platform/system/core HEAD:refs/for/master
strings
, objdump
and radare2
against the non-free binary to have a better idea of how things work. (Make sure this is legal where you live!)strace
and analyze the trace to understand what the program does.printk
and show them via the dmesg
tool).In order the keep the wiki simple and consistent, a few guidelines must be followed when editing.
Regarding the content:[[Index]]
, it's possible to link to the start page of the wiki.Galaxy S 3 (I9300)
is not to be called Samsung S3 GT-I9300
or Galaxy S III
).audio HAL
as the audio module
cd path/to/replicant-6.0/vendor/replicant edit CHANGELOG.mkdn git add CHANGELOG.mkdn git commit -sS -m "Replicant 6.0 0001 images release" git push git@git.replicant.us:replicant/vendor_replicant.git replicant-6.0
cd path/to/release-scripts edit releasevars.sh git add releasevars.sh git commit -sS -m "Replicant 6.0 0001 images release" git push git@git.replicant.us:replicant/release-scripts.git replicant-6.0
cd path/to/manifest git checkout replicant-6.0 git merge replicant-6.0-dev edit default.xml git add default.xml git commit -sS -m "Replicant 6.0 0001 images release" git push git@git.replicant.us:replicant/manifest.git replicant-6.0
path/to/release-scripts/releasetag.sh path/to/replicant-6.0
cd path/to/manifest git tag -u 16D1FEEE4A80EB23 -s replicant-6.0-0001 -m "Replicant 6.0 0001 images release" git push git@git.replicant.us:replicant/manifest.git replicant-6.0-0001
path/to/release-scripts/releasebuild.sh path/to/replicant-6.0
rm -rf path/to/images/replicant-6.0/0001 mkdir -p path/to/images/replicant-6.0/0001 path/to/release-scripts/release.sh path/to/replicant-6.0 path/to/images/replicant-6.0/0001
path/to/release-scripts/release.sh path/to/replicant-6.0 path/to/images/replicant-6.0/0001 signatures
cd path/to/images/replicant-6.0 tar -cjf 0001.tar.bz2 0001
scp 0001.tar.bz2 replicant@ftp-osl.osuosl.org:/home/replicant/data/images/replicant-6.0/
6. Add new issues categories to the Replicant project Redmine