Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Vision

  • Starting point is the latest vanilla google AAOS emulator.
  • We shall not fork and modify any upstream repositories unless absolutely necessary.
    Instead, we shall use overlays (both compile and runtime), Soong "overrides" directive, and define new devices to avoid modifying upstream as much as possible.
    Also see: https://fosdem.org/2025/schedule/event/fosdem-2025-6326-forking-android-considered-harmful/
  • We work together in distributed fashion on making necessary changes, such as:
  • Each change is peer-reviewed, and (automatically) verified for at least "build succeeded" (by build host), and "BOOT_COMPLETED" achieved (by test host), before being merged.
  • Tagged versions of emulator are automatically released by CI to binary repository (CD) and are directly available publicly (we can also consider publishing latest "development" version automatically).

General requirements

  • Team Size
    • ~1-5 people working on it at the same time.
  • Source code hosting
    • ~5-20 repositories.
    • Not expected to be checked out many times, mostly for those who actually work on it and by CI server.
  • Code review
  • CI Server
    • Any typical CI server which can connect Gerrit or GitHub, and Binary Storage solutions.
  • Build host
    • See https://source.android.com/docs/setup/start/requirements
    • To build AOSP today we need at least 500GB of fast storage and minimum of 64GB RAM.
    • For each additional version or "flavor" of emulator we would need 500GB storage and separate build directory.
    • The server should run latest Ubuntu LTS (also headless).
  • Test host (for starters we can run tests directly on build host, but it would be good to split responsibilities).
  • Binary repository
    • ~100 GB should be good for starters (storing all releases and temporary build artifacts)
    • One emulator archive with Android 14 is ~2 GB, it is only going to grow. Note: in GitHub, each individual file must be smaller than 2 GiB (https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases#storage-and-bandwidth-quotas), which could be easily exceeded with emulator.
    • We would need to store binaries for all releases: at least 3 latest versions (e.g., Android 13, Android 14, Android 15). Maybe also adding flavors to each version in future (with/without additional services).
    • Also all artifacts from pending PRs should be stored there

Preferred options

  • Code Review System
    • COVESA Github
  • Source Code Hosting
    • COVESA Github
  • CI
  • Build host
    • COVESA VM
    • alternatively Crave.io for FOSS maybe possible, need to ask them
  • Test host
    • COVESA VM
    • maaaybee also ask Crave.io, but that would be a stretch
  • Binary hosting for releases and finished builds
    • no preference, ideally a highly available trusted source

Notable examples of similar infrastructures

LineageOS

LineageOS is an Open-Source AOSP-based project with a rich history and huge codebase.

...

  • scale (less traffic to their Gerrit server, less load),
  • backup of repositories and all Gerrit data (since Gerrit v3).

Snapp Automotive

Snapp is distributing non-GAS AAOS Emulators since several versions of Android.

...