# Overview
Interested in building Maru OS yourself or contributing to the project?
This guide will walk you through setting up a development environment, building your very own Maru OS image, and installing it on your device!
But first, some basics.
# Structure
Maru follows a very similar project structure to AOSP (opens new window). There are lots of different git repositories that are part of Maru, all of which are managed by Repo and the main manifest. Repo syncs all of these different repositories to your workspace and lets you easily work with them.
# Naming Conventions
There are a few naming conventions the project uses to navigate the dozens of git repositories that make up Maru.
- Simply-named repositories like mflinger (opens new window) or blueprints (opens new window) are specific to Maru and will end up under your workspace's
vendor/maruos/
folder - Multi-word repositories fit into the AOSP workspace structure and list the project's directory path in your workspace, e.g. platform_external_lxc (opens new window) is placed under external/lxc in your workspace ("platform" is added just to keep it consistent with AOSP's naming)
- Upstream AOSP forks are prefixed by
android_
- Device-specific repositories are prefixed by
device_
- Upstream projects will have the
platform_external_
prefix to match how AOSP manages upstream projects
# Branching
Maru maintains several branches that correspond to Android versions.
The branches that we actively develop are:
Branch | Base |
---|---|
master | AOSP 6.0 |
maru-0.5 | LineageOS 14.1 (AOSP 7.1) |
maru-0.6 | LineageOS 15.1 (AOSP 8.1) |
maru-0.7 | LineageOS 16.0 (AOSP 9.0) |
# Getting Help
If you are ever stuck or have questions, the Maru developer community is happy to help! Here are some channels to get in touch: